From 5437f21c2de54a3bc1e3bbf7917a996b240a62b1 Mon Sep 17 00:00:00 2001 From: Hazim Bin Ijaz Date: Wed, 8 Oct 2025 20:01:42 +0500 Subject: [PATCH] Supabase email auth --- Assets/NuGet.config | 18 + Assets/NuGet.config.meta | 28 + Assets/Packages.meta | 8 + .../Microsoft.Bcl.AsyncInterfaces.1.1.0.meta | 8 + .../.signature.p7s | Bin 0 -> 18703 bytes .../LICENSE.TXT | 23 + .../LICENSE.TXT.meta | 7 + .../Microsoft.Bcl.AsyncInterfaces.nuspec | 41 + .../Microsoft.Bcl.AsyncInterfaces.nuspec.meta | 7 + .../THIRD-PARTY-NOTICES.TXT | 375 + .../THIRD-PARTY-NOTICES.TXT.meta | 7 + .../lib.meta | 8 + .../lib/netstandard2.1.meta | 8 + .../Microsoft.Bcl.AsyncInterfaces.dll | Bin 0 -> 14920 bytes .../Microsoft.Bcl.AsyncInterfaces.dll.meta | 29 + .../Microsoft.Bcl.AsyncInterfaces.xml | 8 + .../Microsoft.Bcl.AsyncInterfaces.xml.meta | 7 + .../useSharedDesignerContext.txt | 0 .../useSharedDesignerContext.txt.meta | 7 + .../version.txt | 1 + .../version.txt.meta | 7 + ...soft.IdentityModel.Abstractions.7.0.3.meta | 8 + .../.signature.p7s | Bin 0 -> 24208 bytes ...icrosoft.IdentityModel.Abstractions.nuspec | 24 + ...oft.IdentityModel.Abstractions.nuspec.meta | 7 + .../lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + .../Microsoft.IdentityModel.Abstractions.dll | Bin 0 -> 19896 bytes ...rosoft.IdentityModel.Abstractions.dll.meta | 29 + .../Microsoft.IdentityModel.Abstractions.xml | 297 + ...rosoft.IdentityModel.Abstractions.xml.meta | 7 + ...oft.IdentityModel.JsonWebTokens.7.0.3.meta | 8 + .../.signature.p7s | Bin 0 -> 24208 bytes ...crosoft.IdentityModel.JsonWebTokens.nuspec | 47 + ...ft.IdentityModel.JsonWebTokens.nuspec.meta | 7 + .../lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + .../Microsoft.IdentityModel.JsonWebTokens.dll | Bin 0 -> 122928 bytes ...osoft.IdentityModel.JsonWebTokens.dll.meta | 29 + .../Microsoft.IdentityModel.JsonWebTokens.xml | 1413 + ...osoft.IdentityModel.JsonWebTokens.xml.meta | 7 + ...Microsoft.IdentityModel.Logging.7.0.3.meta | 8 + .../.signature.p7s | Bin 0 -> 24208 bytes .../Microsoft.IdentityModel.Logging.nuspec | 39 + ...icrosoft.IdentityModel.Logging.nuspec.meta | 7 + .../lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + .../Microsoft.IdentityModel.Logging.dll | Bin 0 -> 38952 bytes .../Microsoft.IdentityModel.Logging.dll.meta | 29 + .../Microsoft.IdentityModel.Logging.xml | 871 + .../Microsoft.IdentityModel.Logging.xml.meta | 7 + .../Microsoft.IdentityModel.Tokens.7.0.3.meta | 8 + .../.signature.p7s | Bin 0 -> 24207 bytes .../Microsoft.IdentityModel.Tokens.nuspec | 54 + ...Microsoft.IdentityModel.Tokens.nuspec.meta | 7 + .../lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + .../Microsoft.IdentityModel.Tokens.dll | Bin 0 -> 281120 bytes .../Microsoft.IdentityModel.Tokens.dll.meta | 29 + .../Microsoft.IdentityModel.Tokens.xml | 5507 +++ .../Microsoft.IdentityModel.Tokens.xml.meta | 7 + Assets/Packages/MimeMapping.2.0.0.meta | 8 + .../Packages/MimeMapping.2.0.0/.signature.p7s | Bin 0 -> 11512 bytes .../MimeMapping.2.0.0/MimeMapping.nuspec | 32 + .../MimeMapping.2.0.0/MimeMapping.nuspec.meta | 7 + Assets/Packages/MimeMapping.2.0.0/README.md | 43 + .../Packages/MimeMapping.2.0.0/README.md.meta | 7 + Assets/Packages/MimeMapping.2.0.0/lib.meta | 8 + .../MimeMapping.2.0.0/lib/netstandard2.0.meta | 8 + .../lib/netstandard2.0/MimeMapping.dll | Bin 0 -> 270848 bytes .../lib/netstandard2.0/MimeMapping.dll.meta | 29 + .../lib/netstandard2.0/MimeMapping.xml | 7121 ++++ .../lib/netstandard2.0/MimeMapping.xml.meta | 7 + ...System.IdentityModel.Tokens.Jwt.7.0.3.meta | 8 + .../.signature.p7s | Bin 0 -> 24206 bytes .../System.IdentityModel.Tokens.Jwt.nuspec | 42 + ...ystem.IdentityModel.Tokens.Jwt.nuspec.meta | 7 + .../lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + .../System.IdentityModel.Tokens.Jwt.dll | Bin 0 -> 81328 bytes .../System.IdentityModel.Tokens.Jwt.dll.meta | 29 + .../System.IdentityModel.Tokens.Jwt.xml | 1548 + .../System.IdentityModel.Tokens.Jwt.xml.meta | 7 + Assets/Packages/System.Reactive.5.0.0.meta | 8 + .../System.Reactive.5.0.0/.signature.p7s | Bin 0 -> 18538 bytes .../System.Reactive.nuspec | 42 + .../System.Reactive.nuspec.meta | 7 + .../buildTransitive.meta | 8 + .../buildTransitive/net5.0.meta | 8 + .../buildTransitive/net5.0/_._ | 0 .../buildTransitive/net5.0/_._.meta | 7 + .../buildTransitive/netcoreapp3.1.meta | 8 + .../netcoreapp3.1/System.Reactive.targets | 12 + .../System.Reactive.targets.meta | 7 + .../Packages/System.Reactive.5.0.0/lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + .../lib/netstandard2.0/System.Reactive.dll | Bin 0 -> 1456592 bytes .../netstandard2.0/System.Reactive.dll.meta | 29 + .../lib/netstandard2.0/System.Reactive.xml | 27828 ++++++++++++++++ .../netstandard2.0/System.Reactive.xml.meta | 7 + ...Runtime.CompilerServices.Unsafe.4.7.1.meta | 8 + .../.signature.p7s | Bin 0 -> 18702 bytes .../Icon.png | Bin 0 -> 1371 bytes .../Icon.png.meta | 156 + .../LICENSE.TXT | 23 + .../LICENSE.TXT.meta | 7 + ...tem.Runtime.CompilerServices.Unsafe.nuspec | 41 + ...untime.CompilerServices.Unsafe.nuspec.meta | 7 + .../THIRD-PARTY-NOTICES.TXT | 375 + .../THIRD-PARTY-NOTICES.TXT.meta | 7 + .../lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + ...System.Runtime.CompilerServices.Unsafe.dll | Bin 0 -> 16976 bytes ...m.Runtime.CompilerServices.Unsafe.dll.meta | 29 + ...System.Runtime.CompilerServices.Unsafe.xml | 244 + ...m.Runtime.CompilerServices.Unsafe.xml.meta | 7 + .../useSharedDesignerContext.txt | 0 .../useSharedDesignerContext.txt.meta | 7 + .../version.txt | 1 + .../version.txt.meta | 7 + ...ystem.Security.Cryptography.Cng.4.5.0.meta | 8 + .../.signature.p7s | Bin 0 -> 22354 bytes .../LICENSE.TXT | 23 + .../LICENSE.TXT.meta | 7 + .../System.Security.Cryptography.Cng.nuspec | 90 + ...stem.Security.Cryptography.Cng.nuspec.meta | 7 + .../THIRD-PARTY-NOTICES.TXT | 309 + .../THIRD-PARTY-NOTICES.TXT.meta | 7 + .../lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + .../System.Security.Cryptography.Cng.dll | Bin 0 -> 49288 bytes .../System.Security.Cryptography.Cng.dll.meta | 29 + .../useSharedDesignerContext.txt | 0 .../useSharedDesignerContext.txt.meta | 7 + .../version.txt | 1 + .../version.txt.meta | 7 + .../System.Text.Encodings.Web.4.7.2.meta | 8 + .../.signature.p7s | Bin 0 -> 18703 bytes .../System.Text.Encodings.Web.4.7.2/Icon.png | Bin 0 -> 1371 bytes .../Icon.png.meta | 156 + .../LICENSE.TXT | 23 + .../LICENSE.TXT.meta | 7 + .../System.Text.Encodings.Web.nuspec | 57 + .../System.Text.Encodings.Web.nuspec.meta | 7 + .../THIRD-PARTY-NOTICES.TXT | 375 + .../THIRD-PARTY-NOTICES.TXT.meta | 7 + .../System.Text.Encodings.Web.4.7.2/lib.meta | 8 + .../lib/netstandard2.1.meta | 8 + .../System.Text.Encodings.Web.dll | Bin 0 -> 56184 bytes .../System.Text.Encodings.Web.dll.meta | 29 + .../System.Text.Encodings.Web.xml | 932 + .../System.Text.Encodings.Web.xml.meta | 7 + .../useSharedDesignerContext.txt | 0 .../useSharedDesignerContext.txt.meta | 7 + .../version.txt | 1 + .../version.txt.meta | 7 + Assets/Packages/System.Text.Json.4.7.2.meta | 8 + .../System.Text.Json.4.7.2/.signature.p7s | Bin 0 -> 18703 bytes .../Packages/System.Text.Json.4.7.2/Icon.png | Bin 0 -> 1371 bytes .../System.Text.Json.4.7.2/Icon.png.meta | 156 + .../System.Text.Json.4.7.2/LICENSE.TXT | 23 + .../System.Text.Json.4.7.2/LICENSE.TXT.meta | 7 + .../System.Text.Json.nuspec | 115 + .../System.Text.Json.nuspec.meta | 7 + .../THIRD-PARTY-NOTICES.TXT | 375 + .../THIRD-PARTY-NOTICES.TXT.meta | 7 + .../Packages/System.Text.Json.4.7.2/lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + .../lib/netstandard2.0/System.Text.Json.dll | Bin 0 -> 293240 bytes .../netstandard2.0/System.Text.Json.dll.meta | 29 + .../lib/netstandard2.0/System.Text.Json.xml | 2346 ++ .../netstandard2.0/System.Text.Json.xml.meta | 7 + .../useSharedDesignerContext.txt | 0 .../useSharedDesignerContext.txt.meta | 7 + .../System.Text.Json.4.7.2/version.txt | 1 + .../System.Text.Json.4.7.2/version.txt.meta | 7 + .../System.Threading.Channels.5.0.0.meta | 8 + .../.signature.p7s | Bin 0 -> 18702 bytes .../System.Threading.Channels.5.0.0/Icon.png | Bin 0 -> 7006 bytes .../Icon.png.meta | 156 + .../LICENSE.TXT | 23 + .../LICENSE.TXT.meta | 7 + .../System.Threading.Channels.nuspec | 49 + .../System.Threading.Channels.nuspec.meta | 7 + .../THIRD-PARTY-NOTICES.TXT | 884 + .../THIRD-PARTY-NOTICES.TXT.meta | 7 + .../System.Threading.Channels.5.0.0/lib.meta | 8 + .../lib/netstandard2.1.meta | 8 + .../System.Threading.Channels.dll | Bin 0 -> 51592 bytes .../System.Threading.Channels.dll.meta | 29 + .../System.Threading.Channels.xml | 225 + .../System.Threading.Channels.xml.meta | 7 + .../useSharedDesignerContext.txt | 0 .../useSharedDesignerContext.txt.meta | 7 + .../version.txt | 1 + .../version.txt.meta | 7 + Assets/Packages/Websocket.Client.4.6.1.meta | 8 + .../Websocket.Client.4.6.1/.signature.p7s | Bin 0 -> 11512 bytes .../Packages/Websocket.Client.4.6.1/README.md | 231 + .../Websocket.Client.4.6.1/README.md.meta | 7 + .../Websocket.Client.nuspec | 37 + .../Websocket.Client.nuspec.meta | 7 + .../Packages/Websocket.Client.4.6.1/icon.png | Bin 0 -> 5481 bytes .../Websocket.Client.4.6.1/icon.png.meta | 156 + .../Packages/Websocket.Client.4.6.1/lib.meta | 8 + .../lib/netstandard2.1.meta | 8 + .../lib/netstandard2.1/Websocket.Client.dll | Bin 0 -> 76288 bytes .../netstandard2.1/Websocket.Client.dll.meta | 29 + .../lib/netstandard2.1/Websocket.Client.xml | 1262 + .../netstandard2.1/Websocket.Client.xml.meta | 7 + Assets/Packages/functions-csharp.1.3.2.meta | 8 + .../functions-csharp.1.3.2/.signature.p7s | Bin 0 -> 11513 bytes .../Packages/functions-csharp.1.3.2/README.md | 35 + .../functions-csharp.1.3.2/README.md.meta | 7 + .../functions-csharp.nuspec | 25 + .../functions-csharp.nuspec.meta | 7 + .../Packages/functions-csharp.1.3.2/icon.png | Bin 0 -> 5771 bytes .../functions-csharp.1.3.2/icon.png.meta | 156 + .../Packages/functions-csharp.1.3.2/lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + .../lib/netstandard2.0/Supabase.Functions.dll | Bin 0 -> 15360 bytes .../Supabase.Functions.dll.meta | 29 + .../lib/netstandard2.0/Supabase.Functions.xml | 201 + .../Supabase.Functions.xml.meta | 7 + Assets/Packages/gotrue-csharp.4.2.7.meta | 8 + .../gotrue-csharp.4.2.7/.signature.p7s | Bin 0 -> 11513 bytes Assets/Packages/gotrue-csharp.4.2.7/README.md | 296 + .../gotrue-csharp.4.2.7/README.md.meta | 7 + .../gotrue-csharp.4.2.7/gotrue-csharp.nuspec | 26 + .../gotrue-csharp.nuspec.meta | 7 + Assets/Packages/gotrue-csharp.4.2.7/icon.png | Bin 0 -> 5771 bytes .../gotrue-csharp.4.2.7/icon.png.meta | 156 + Assets/Packages/gotrue-csharp.4.2.7/lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + .../lib/netstandard2.0/Supabase.Gotrue.dll | Bin 0 -> 98304 bytes .../netstandard2.0/Supabase.Gotrue.dll.meta | 29 + .../lib/netstandard2.0/Supabase.Gotrue.xml | 2378 ++ .../netstandard2.0/Supabase.Gotrue.xml.meta | 7 + Assets/Packages/postgrest-csharp.3.5.1.meta | 8 + .../postgrest-csharp.3.5.1/.signature.p7s | Bin 0 -> 11513 bytes .../Packages/postgrest-csharp.3.5.1/README.md | 360 + .../postgrest-csharp.3.5.1/README.md.meta | 7 + .../Packages/postgrest-csharp.3.5.1/icon.png | Bin 0 -> 5771 bytes .../postgrest-csharp.3.5.1/icon.png.meta | 156 + .../Packages/postgrest-csharp.3.5.1/lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + .../lib/netstandard2.0/Supabase.Postgrest.dll | Bin 0 -> 76800 bytes .../Supabase.Postgrest.dll.meta | 29 + .../lib/netstandard2.0/Supabase.Postgrest.xml | 1879 ++ .../Supabase.Postgrest.xml.meta | 7 + .../postgrest-csharp.nuspec | 26 + .../postgrest-csharp.nuspec.meta | 7 + Assets/Packages/realtime-csharp.6.0.4.meta | 8 + .../realtime-csharp.6.0.4/.signature.p7s | Bin 0 -> 11512 bytes .../Packages/realtime-csharp.6.0.4/README.md | 298 + .../realtime-csharp.6.0.4/README.md.meta | 7 + .../Packages/realtime-csharp.6.0.4/icon.png | Bin 0 -> 5771 bytes .../realtime-csharp.6.0.4/icon.png.meta | 156 + .../Packages/realtime-csharp.6.0.4/lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + .../lib/netstandard2.0/Supabase.Realtime.dll | Bin 0 -> 70144 bytes .../netstandard2.0/Supabase.Realtime.dll.meta | 29 + .../lib/netstandard2.0/Supabase.Realtime.xml | 2676 ++ .../netstandard2.0/Supabase.Realtime.xml.meta | 7 + .../realtime-csharp.nuspec | 26 + .../realtime-csharp.nuspec.meta | 7 + Assets/Packages/supabase-core.0.0.3.meta | 8 + .../supabase-core.0.0.3/.signature.p7s | Bin 0 -> 11511 bytes Assets/Packages/supabase-core.0.0.3/README.md | 25 + .../supabase-core.0.0.3/README.md.meta | 7 + Assets/Packages/supabase-core.0.0.3/icon.png | Bin 0 -> 5771 bytes .../supabase-core.0.0.3/icon.png.meta | 156 + Assets/Packages/supabase-core.0.0.3/lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + .../lib/netstandard2.0/Supabase.Core.dll | Bin 0 -> 7680 bytes .../lib/netstandard2.0/Supabase.Core.dll.meta | 29 + .../lib/netstandard2.0/Supabase.Core.xml | 13 + .../lib/netstandard2.0/Supabase.Core.xml.meta | 7 + .../supabase-core.0.0.3/supabase-core.nuspec | 22 + .../supabase-core.nuspec.meta | 7 + Assets/Packages/supabase-csharp.0.16.2.meta | 8 + .../supabase-csharp.0.16.2/.signature.p7s | Bin 0 -> 11525 bytes .../Packages/supabase-csharp.0.16.2/README.md | 68 + .../supabase-csharp.0.16.2/README.md.meta | 7 + .../Packages/supabase-csharp.0.16.2/icon.png | Bin 0 -> 5771 bytes .../supabase-csharp.0.16.2/icon.png.meta | 156 + .../Packages/supabase-csharp.0.16.2/lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + .../lib/netstandard2.0/Supabase.dll | Bin 0 -> 20480 bytes .../lib/netstandard2.0/Supabase.dll.meta | 29 + .../lib/netstandard2.0/Supabase.xml | 370 + .../lib/netstandard2.0/Supabase.xml.meta | 7 + .../supabase-csharp.nuspec | 29 + .../supabase-csharp.nuspec.meta | 7 + .../supabase-storage-csharp.1.4.0.meta | 8 + .../.signature.p7s | Bin 0 -> 11513 bytes .../supabase-storage-csharp.1.4.0/README.md | 66 + .../README.md.meta | 7 + .../supabase-storage-csharp.1.4.0/icon.png | Bin 0 -> 5771 bytes .../icon.png.meta | 156 + .../supabase-storage-csharp.1.4.0/lib.meta | 8 + .../lib/netstandard2.0.meta | 8 + .../lib/netstandard2.0/Supabase.Storage.dll | Bin 0 -> 52224 bytes .../netstandard2.0/Supabase.Storage.dll.meta | 29 + .../lib/netstandard2.0/Supabase.Storage.xml | 435 + .../netstandard2.0/Supabase.Storage.xml.meta | 7 + .../supabase-storage-csharp.nuspec | 27 + .../supabase-storage-csharp.nuspec.meta | 7 + Assets/Scripts.meta | 8 + Assets/Scripts/Supabase.meta | 8 + Assets/Scripts/Supabase/SupabaseEmailAuth.cs | 63 + .../Supabase/SupabaseEmailAuth.cs.meta | 2 + Assets/Scripts/Supabase/SupabaseEmailUI.cs | 49 + .../Scripts/Supabase/SupabaseEmailUI.cs.meta | 2 + Assets/Scripts/SupabaseTest.cs | 12 + Assets/Scripts/SupabaseTest.cs.meta | 2 + Assets/TPSBR/Scenes/Menu.unity | 393 +- .../Prefabs/MenuViews/UIMainMenuView.prefab | 1404 +- Assets/packages.config | 24 + Assets/packages.config.meta | 28 + Packages/manifest.json | 1 + Packages/packages-lock.json | 7 + 322 files changed, 68219 insertions(+), 95 deletions(-) create mode 100644 Assets/NuGet.config create mode 100644 Assets/NuGet.config.meta create mode 100644 Assets/Packages.meta create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0.meta create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/.signature.p7s create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/LICENSE.TXT create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/LICENSE.TXT.meta create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/Microsoft.Bcl.AsyncInterfaces.nuspec create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/Microsoft.Bcl.AsyncInterfaces.nuspec.meta create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/THIRD-PARTY-NOTICES.TXT create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/THIRD-PARTY-NOTICES.TXT.meta create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib.meta create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1.meta create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll.meta create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml.meta create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/useSharedDesignerContext.txt create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/useSharedDesignerContext.txt.meta create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/version.txt create mode 100644 Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/version.txt.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/.signature.p7s create mode 100644 Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/Microsoft.IdentityModel.Abstractions.nuspec create mode 100644 Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/Microsoft.IdentityModel.Abstractions.nuspec.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib/netstandard2.0.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.dll create mode 100644 Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.dll.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml create mode 100644 Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/.signature.p7s create mode 100644 Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/Microsoft.IdentityModel.JsonWebTokens.nuspec create mode 100644 Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/Microsoft.IdentityModel.JsonWebTokens.nuspec.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib/netstandard2.0.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll create mode 100644 Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml create mode 100644 Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/.signature.p7s create mode 100644 Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/Microsoft.IdentityModel.Logging.nuspec create mode 100644 Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/Microsoft.IdentityModel.Logging.nuspec.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib/netstandard2.0.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll create mode 100644 Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml create mode 100644 Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/.signature.p7s create mode 100644 Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/Microsoft.IdentityModel.Tokens.nuspec create mode 100644 Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/Microsoft.IdentityModel.Tokens.nuspec.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll create mode 100644 Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll.meta create mode 100644 Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml create mode 100644 Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml.meta create mode 100644 Assets/Packages/MimeMapping.2.0.0.meta create mode 100644 Assets/Packages/MimeMapping.2.0.0/.signature.p7s create mode 100644 Assets/Packages/MimeMapping.2.0.0/MimeMapping.nuspec create mode 100644 Assets/Packages/MimeMapping.2.0.0/MimeMapping.nuspec.meta create mode 100644 Assets/Packages/MimeMapping.2.0.0/README.md create mode 100644 Assets/Packages/MimeMapping.2.0.0/README.md.meta create mode 100644 Assets/Packages/MimeMapping.2.0.0/lib.meta create mode 100644 Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0.meta create mode 100644 Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0/MimeMapping.dll create mode 100644 Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0/MimeMapping.dll.meta create mode 100644 Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0/MimeMapping.xml create mode 100644 Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0/MimeMapping.xml.meta create mode 100644 Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3.meta create mode 100644 Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/.signature.p7s create mode 100644 Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/System.IdentityModel.Tokens.Jwt.nuspec create mode 100644 Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/System.IdentityModel.Tokens.Jwt.nuspec.meta create mode 100644 Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib.meta create mode 100644 Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0.meta create mode 100644 Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll create mode 100644 Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll.meta create mode 100644 Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml create mode 100644 Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml.meta create mode 100644 Assets/Packages/System.Reactive.5.0.0.meta create mode 100644 Assets/Packages/System.Reactive.5.0.0/.signature.p7s create mode 100644 Assets/Packages/System.Reactive.5.0.0/System.Reactive.nuspec create mode 100644 Assets/Packages/System.Reactive.5.0.0/System.Reactive.nuspec.meta create mode 100644 Assets/Packages/System.Reactive.5.0.0/buildTransitive.meta create mode 100644 Assets/Packages/System.Reactive.5.0.0/buildTransitive/net5.0.meta create mode 100644 Assets/Packages/System.Reactive.5.0.0/buildTransitive/net5.0/_._ create mode 100644 Assets/Packages/System.Reactive.5.0.0/buildTransitive/net5.0/_._.meta create mode 100644 Assets/Packages/System.Reactive.5.0.0/buildTransitive/netcoreapp3.1.meta create mode 100644 Assets/Packages/System.Reactive.5.0.0/buildTransitive/netcoreapp3.1/System.Reactive.targets create mode 100644 Assets/Packages/System.Reactive.5.0.0/buildTransitive/netcoreapp3.1/System.Reactive.targets.meta create mode 100644 Assets/Packages/System.Reactive.5.0.0/lib.meta create mode 100644 Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0.meta create mode 100644 Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0/System.Reactive.dll create mode 100644 Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0/System.Reactive.dll.meta create mode 100644 Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0/System.Reactive.xml create mode 100644 Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0/System.Reactive.xml.meta create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1.meta create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/.signature.p7s create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/Icon.png create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/Icon.png.meta create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/LICENSE.TXT create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/LICENSE.TXT.meta create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/System.Runtime.CompilerServices.Unsafe.nuspec create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/System.Runtime.CompilerServices.Unsafe.nuspec.meta create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/THIRD-PARTY-NOTICES.TXT create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/THIRD-PARTY-NOTICES.TXT.meta create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib.meta create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0.meta create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll.meta create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml.meta create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/useSharedDesignerContext.txt create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/useSharedDesignerContext.txt.meta create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/version.txt create mode 100644 Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/version.txt.meta create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0.meta create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0/.signature.p7s create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0/LICENSE.TXT create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0/LICENSE.TXT.meta create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0/System.Security.Cryptography.Cng.nuspec create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0/System.Security.Cryptography.Cng.nuspec.meta create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0/THIRD-PARTY-NOTICES.TXT create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0/THIRD-PARTY-NOTICES.TXT.meta create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0/lib.meta create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0/lib/netstandard2.0.meta create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0/lib/netstandard2.0/System.Security.Cryptography.Cng.dll create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0/lib/netstandard2.0/System.Security.Cryptography.Cng.dll.meta create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0/useSharedDesignerContext.txt create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0/useSharedDesignerContext.txt.meta create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0/version.txt create mode 100644 Assets/Packages/System.Security.Cryptography.Cng.4.5.0/version.txt.meta create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2.meta create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/.signature.p7s create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/Icon.png create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/Icon.png.meta create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/LICENSE.TXT create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/LICENSE.TXT.meta create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/System.Text.Encodings.Web.nuspec create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/System.Text.Encodings.Web.nuspec.meta create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/THIRD-PARTY-NOTICES.TXT create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/THIRD-PARTY-NOTICES.TXT.meta create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/lib.meta create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1.meta create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1/System.Text.Encodings.Web.dll create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1/System.Text.Encodings.Web.dll.meta create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1/System.Text.Encodings.Web.xml create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1/System.Text.Encodings.Web.xml.meta create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/useSharedDesignerContext.txt create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/useSharedDesignerContext.txt.meta create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/version.txt create mode 100644 Assets/Packages/System.Text.Encodings.Web.4.7.2/version.txt.meta create mode 100644 Assets/Packages/System.Text.Json.4.7.2.meta create mode 100644 Assets/Packages/System.Text.Json.4.7.2/.signature.p7s create mode 100644 Assets/Packages/System.Text.Json.4.7.2/Icon.png create mode 100644 Assets/Packages/System.Text.Json.4.7.2/Icon.png.meta create mode 100644 Assets/Packages/System.Text.Json.4.7.2/LICENSE.TXT create mode 100644 Assets/Packages/System.Text.Json.4.7.2/LICENSE.TXT.meta create mode 100644 Assets/Packages/System.Text.Json.4.7.2/System.Text.Json.nuspec create mode 100644 Assets/Packages/System.Text.Json.4.7.2/System.Text.Json.nuspec.meta create mode 100644 Assets/Packages/System.Text.Json.4.7.2/THIRD-PARTY-NOTICES.TXT create mode 100644 Assets/Packages/System.Text.Json.4.7.2/THIRD-PARTY-NOTICES.TXT.meta create mode 100644 Assets/Packages/System.Text.Json.4.7.2/lib.meta create mode 100644 Assets/Packages/System.Text.Json.4.7.2/lib/netstandard2.0.meta create mode 100644 Assets/Packages/System.Text.Json.4.7.2/lib/netstandard2.0/System.Text.Json.dll create mode 100644 Assets/Packages/System.Text.Json.4.7.2/lib/netstandard2.0/System.Text.Json.dll.meta create mode 100644 Assets/Packages/System.Text.Json.4.7.2/lib/netstandard2.0/System.Text.Json.xml create mode 100644 Assets/Packages/System.Text.Json.4.7.2/lib/netstandard2.0/System.Text.Json.xml.meta create mode 100644 Assets/Packages/System.Text.Json.4.7.2/useSharedDesignerContext.txt create mode 100644 Assets/Packages/System.Text.Json.4.7.2/useSharedDesignerContext.txt.meta create mode 100644 Assets/Packages/System.Text.Json.4.7.2/version.txt create mode 100644 Assets/Packages/System.Text.Json.4.7.2/version.txt.meta create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0.meta create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/.signature.p7s create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/Icon.png create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/Icon.png.meta create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/LICENSE.TXT create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/LICENSE.TXT.meta create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/System.Threading.Channels.nuspec create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/System.Threading.Channels.nuspec.meta create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/THIRD-PARTY-NOTICES.TXT create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/THIRD-PARTY-NOTICES.TXT.meta create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/lib.meta create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/lib/netstandard2.1.meta create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/lib/netstandard2.1/System.Threading.Channels.dll create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/lib/netstandard2.1/System.Threading.Channels.dll.meta create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/lib/netstandard2.1/System.Threading.Channels.xml create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/lib/netstandard2.1/System.Threading.Channels.xml.meta create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/useSharedDesignerContext.txt create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/useSharedDesignerContext.txt.meta create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/version.txt create mode 100644 Assets/Packages/System.Threading.Channels.5.0.0/version.txt.meta create mode 100644 Assets/Packages/Websocket.Client.4.6.1.meta create mode 100644 Assets/Packages/Websocket.Client.4.6.1/.signature.p7s create mode 100644 Assets/Packages/Websocket.Client.4.6.1/README.md create mode 100644 Assets/Packages/Websocket.Client.4.6.1/README.md.meta create mode 100644 Assets/Packages/Websocket.Client.4.6.1/Websocket.Client.nuspec create mode 100644 Assets/Packages/Websocket.Client.4.6.1/Websocket.Client.nuspec.meta create mode 100644 Assets/Packages/Websocket.Client.4.6.1/icon.png create mode 100644 Assets/Packages/Websocket.Client.4.6.1/icon.png.meta create mode 100644 Assets/Packages/Websocket.Client.4.6.1/lib.meta create mode 100644 Assets/Packages/Websocket.Client.4.6.1/lib/netstandard2.1.meta create mode 100644 Assets/Packages/Websocket.Client.4.6.1/lib/netstandard2.1/Websocket.Client.dll create mode 100644 Assets/Packages/Websocket.Client.4.6.1/lib/netstandard2.1/Websocket.Client.dll.meta create mode 100644 Assets/Packages/Websocket.Client.4.6.1/lib/netstandard2.1/Websocket.Client.xml create mode 100644 Assets/Packages/Websocket.Client.4.6.1/lib/netstandard2.1/Websocket.Client.xml.meta create mode 100644 Assets/Packages/functions-csharp.1.3.2.meta create mode 100644 Assets/Packages/functions-csharp.1.3.2/.signature.p7s create mode 100644 Assets/Packages/functions-csharp.1.3.2/README.md create mode 100644 Assets/Packages/functions-csharp.1.3.2/README.md.meta create mode 100644 Assets/Packages/functions-csharp.1.3.2/functions-csharp.nuspec create mode 100644 Assets/Packages/functions-csharp.1.3.2/functions-csharp.nuspec.meta create mode 100644 Assets/Packages/functions-csharp.1.3.2/icon.png create mode 100644 Assets/Packages/functions-csharp.1.3.2/icon.png.meta create mode 100644 Assets/Packages/functions-csharp.1.3.2/lib.meta create mode 100644 Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0.meta create mode 100644 Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0/Supabase.Functions.dll create mode 100644 Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0/Supabase.Functions.dll.meta create mode 100644 Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0/Supabase.Functions.xml create mode 100644 Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0/Supabase.Functions.xml.meta create mode 100644 Assets/Packages/gotrue-csharp.4.2.7.meta create mode 100644 Assets/Packages/gotrue-csharp.4.2.7/.signature.p7s create mode 100644 Assets/Packages/gotrue-csharp.4.2.7/README.md create mode 100644 Assets/Packages/gotrue-csharp.4.2.7/README.md.meta create mode 100644 Assets/Packages/gotrue-csharp.4.2.7/gotrue-csharp.nuspec create mode 100644 Assets/Packages/gotrue-csharp.4.2.7/gotrue-csharp.nuspec.meta create mode 100644 Assets/Packages/gotrue-csharp.4.2.7/icon.png create mode 100644 Assets/Packages/gotrue-csharp.4.2.7/icon.png.meta create mode 100644 Assets/Packages/gotrue-csharp.4.2.7/lib.meta create mode 100644 Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0.meta create mode 100644 Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0/Supabase.Gotrue.dll create mode 100644 Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0/Supabase.Gotrue.dll.meta create mode 100644 Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0/Supabase.Gotrue.xml create mode 100644 Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0/Supabase.Gotrue.xml.meta create mode 100644 Assets/Packages/postgrest-csharp.3.5.1.meta create mode 100644 Assets/Packages/postgrest-csharp.3.5.1/.signature.p7s create mode 100644 Assets/Packages/postgrest-csharp.3.5.1/README.md create mode 100644 Assets/Packages/postgrest-csharp.3.5.1/README.md.meta create mode 100644 Assets/Packages/postgrest-csharp.3.5.1/icon.png create mode 100644 Assets/Packages/postgrest-csharp.3.5.1/icon.png.meta create mode 100644 Assets/Packages/postgrest-csharp.3.5.1/lib.meta create mode 100644 Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0.meta create mode 100644 Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0/Supabase.Postgrest.dll create mode 100644 Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0/Supabase.Postgrest.dll.meta create mode 100644 Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0/Supabase.Postgrest.xml create mode 100644 Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0/Supabase.Postgrest.xml.meta create mode 100644 Assets/Packages/postgrest-csharp.3.5.1/postgrest-csharp.nuspec create mode 100644 Assets/Packages/postgrest-csharp.3.5.1/postgrest-csharp.nuspec.meta create mode 100644 Assets/Packages/realtime-csharp.6.0.4.meta create mode 100644 Assets/Packages/realtime-csharp.6.0.4/.signature.p7s create mode 100644 Assets/Packages/realtime-csharp.6.0.4/README.md create mode 100644 Assets/Packages/realtime-csharp.6.0.4/README.md.meta create mode 100644 Assets/Packages/realtime-csharp.6.0.4/icon.png create mode 100644 Assets/Packages/realtime-csharp.6.0.4/icon.png.meta create mode 100644 Assets/Packages/realtime-csharp.6.0.4/lib.meta create mode 100644 Assets/Packages/realtime-csharp.6.0.4/lib/netstandard2.0.meta create mode 100644 Assets/Packages/realtime-csharp.6.0.4/lib/netstandard2.0/Supabase.Realtime.dll create mode 100644 Assets/Packages/realtime-csharp.6.0.4/lib/netstandard2.0/Supabase.Realtime.dll.meta create mode 100644 Assets/Packages/realtime-csharp.6.0.4/lib/netstandard2.0/Supabase.Realtime.xml create mode 100644 Assets/Packages/realtime-csharp.6.0.4/lib/netstandard2.0/Supabase.Realtime.xml.meta create mode 100644 Assets/Packages/realtime-csharp.6.0.4/realtime-csharp.nuspec create mode 100644 Assets/Packages/realtime-csharp.6.0.4/realtime-csharp.nuspec.meta create mode 100644 Assets/Packages/supabase-core.0.0.3.meta create mode 100644 Assets/Packages/supabase-core.0.0.3/.signature.p7s create mode 100644 Assets/Packages/supabase-core.0.0.3/README.md create mode 100644 Assets/Packages/supabase-core.0.0.3/README.md.meta create mode 100644 Assets/Packages/supabase-core.0.0.3/icon.png create mode 100644 Assets/Packages/supabase-core.0.0.3/icon.png.meta create mode 100644 Assets/Packages/supabase-core.0.0.3/lib.meta create mode 100644 Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0.meta create mode 100644 Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0/Supabase.Core.dll create mode 100644 Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0/Supabase.Core.dll.meta create mode 100644 Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0/Supabase.Core.xml create mode 100644 Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0/Supabase.Core.xml.meta create mode 100644 Assets/Packages/supabase-core.0.0.3/supabase-core.nuspec create mode 100644 Assets/Packages/supabase-core.0.0.3/supabase-core.nuspec.meta create mode 100644 Assets/Packages/supabase-csharp.0.16.2.meta create mode 100644 Assets/Packages/supabase-csharp.0.16.2/.signature.p7s create mode 100644 Assets/Packages/supabase-csharp.0.16.2/README.md create mode 100644 Assets/Packages/supabase-csharp.0.16.2/README.md.meta create mode 100644 Assets/Packages/supabase-csharp.0.16.2/icon.png create mode 100644 Assets/Packages/supabase-csharp.0.16.2/icon.png.meta create mode 100644 Assets/Packages/supabase-csharp.0.16.2/lib.meta create mode 100644 Assets/Packages/supabase-csharp.0.16.2/lib/netstandard2.0.meta create mode 100644 Assets/Packages/supabase-csharp.0.16.2/lib/netstandard2.0/Supabase.dll create mode 100644 Assets/Packages/supabase-csharp.0.16.2/lib/netstandard2.0/Supabase.dll.meta create mode 100644 Assets/Packages/supabase-csharp.0.16.2/lib/netstandard2.0/Supabase.xml create mode 100644 Assets/Packages/supabase-csharp.0.16.2/lib/netstandard2.0/Supabase.xml.meta create mode 100644 Assets/Packages/supabase-csharp.0.16.2/supabase-csharp.nuspec create mode 100644 Assets/Packages/supabase-csharp.0.16.2/supabase-csharp.nuspec.meta create mode 100644 Assets/Packages/supabase-storage-csharp.1.4.0.meta create mode 100644 Assets/Packages/supabase-storage-csharp.1.4.0/.signature.p7s create mode 100644 Assets/Packages/supabase-storage-csharp.1.4.0/README.md create mode 100644 Assets/Packages/supabase-storage-csharp.1.4.0/README.md.meta create mode 100644 Assets/Packages/supabase-storage-csharp.1.4.0/icon.png create mode 100644 Assets/Packages/supabase-storage-csharp.1.4.0/icon.png.meta create mode 100644 Assets/Packages/supabase-storage-csharp.1.4.0/lib.meta create mode 100644 Assets/Packages/supabase-storage-csharp.1.4.0/lib/netstandard2.0.meta create mode 100644 Assets/Packages/supabase-storage-csharp.1.4.0/lib/netstandard2.0/Supabase.Storage.dll create mode 100644 Assets/Packages/supabase-storage-csharp.1.4.0/lib/netstandard2.0/Supabase.Storage.dll.meta create mode 100644 Assets/Packages/supabase-storage-csharp.1.4.0/lib/netstandard2.0/Supabase.Storage.xml create mode 100644 Assets/Packages/supabase-storage-csharp.1.4.0/lib/netstandard2.0/Supabase.Storage.xml.meta create mode 100644 Assets/Packages/supabase-storage-csharp.1.4.0/supabase-storage-csharp.nuspec create mode 100644 Assets/Packages/supabase-storage-csharp.1.4.0/supabase-storage-csharp.nuspec.meta create mode 100644 Assets/Scripts.meta create mode 100644 Assets/Scripts/Supabase.meta create mode 100644 Assets/Scripts/Supabase/SupabaseEmailAuth.cs create mode 100644 Assets/Scripts/Supabase/SupabaseEmailAuth.cs.meta create mode 100644 Assets/Scripts/Supabase/SupabaseEmailUI.cs create mode 100644 Assets/Scripts/Supabase/SupabaseEmailUI.cs.meta create mode 100644 Assets/Scripts/SupabaseTest.cs create mode 100644 Assets/Scripts/SupabaseTest.cs.meta create mode 100644 Assets/packages.config create mode 100644 Assets/packages.config.meta diff --git a/Assets/NuGet.config b/Assets/NuGet.config new file mode 100644 index 0000000..d267a78 --- /dev/null +++ b/Assets/NuGet.config @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/NuGet.config.meta b/Assets/NuGet.config.meta new file mode 100644 index 0000000..dd87c42 --- /dev/null +++ b/Assets/NuGet.config.meta @@ -0,0 +1,28 @@ +fileFormatVersion: 2 +guid: 1bf699a93f1825b41a238e7dfddb11d0 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 3 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages.meta b/Assets/Packages.meta new file mode 100644 index 0000000..fbf13b4 --- /dev/null +++ b/Assets/Packages.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ca95cda27f78f304286b3dbee9cd73f6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0.meta new file mode 100644 index 0000000..fdb8f33 --- /dev/null +++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5745673a1ff074e4b86df895233e53c3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/.signature.p7s b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..a616eadbb635a32d8b80d31e489fe319e35b5f08 GIT binary patch literal 18703 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 Y6C>t{RZ>VcE_&HTW + + + Microsoft.Bcl.AsyncInterfaces + 1.1.0 + Microsoft.Bcl.AsyncInterfaces + Microsoft + microsoft,dotnetframework + false + MIT + https://licenses.nuget.org/MIT + https://github.com/dotnet/corefx + http://go.microsoft.com/fwlink/?LinkID=288859 + Provides the IAsyncEnumerable<T> and IAsyncDisposable interfaces and helper types for .NET Standard 2.0. This package is not required starting with .NET Standard 2.1 and .NET Core 3.0. + +Commonly Used Types: +System.IAsyncDisposable +System.Collections.Generic.IAsyncEnumerable +System.Collections.Generic.IAsyncEnumerator + +When using NuGet 3.x this package requires at least version 3.4. + https://go.microsoft.com/fwlink/?LinkID=799421 + © Microsoft Corporation. All rights reserved. + true + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/Microsoft.Bcl.AsyncInterfaces.nuspec.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/Microsoft.Bcl.AsyncInterfaces.nuspec.meta new file mode 100644 index 0000000..06e9221 --- /dev/null +++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/Microsoft.Bcl.AsyncInterfaces.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 78e233e73ce9fc846a9eafd1cefe2dac +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/THIRD-PARTY-NOTICES.TXT b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/THIRD-PARTY-NOTICES.TXT new file mode 100644 index 0000000..77a243e --- /dev/null +++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/THIRD-PARTY-NOTICES.TXT @@ -0,0 +1,375 @@ +.NET Core uses third-party libraries or other resources that may be +distributed under licenses different than the .NET Core software. + +In the event that we accidentally failed to list a required notice, please +bring it to our attention. Post an issue or email us: + + dotnet@microsoft.com + +The attached notices are provided for information only. + +License notice for ASP.NET +------------------------------- + +Copyright (c) .NET Foundation. All rights reserved. +Licensed under the Apache License, Version 2.0. + +Available at +https://github.com/aspnet/AspNetCore/blob/master/LICENSE.txt + +License notice for Slicing-by-8 +------------------------------- + +http://sourceforge.net/projects/slicing-by-8/ + +Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + + +This software program is licensed subject to the BSD License, available at +http://www.opensource.org/licenses/bsd-license.html. + + +License notice for Unicode data +------------------------------- + +http://www.unicode.org/copyright.html#License + +Copyright © 1991-2017 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in http://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Unicode data files and any associated documentation +(the "Data Files") or Unicode software and any associated documentation +(the "Software") to deal in the Data Files or Software +without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, and/or sell copies of +the Data Files or Software, and to permit persons to whom the Data Files +or Software are furnished to do so, provided that either +(a) this copyright and permission notice appear with all copies +of the Data Files or Software, or +(b) this copyright and permission notice appear in associated +Documentation. + +THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in these Data Files or Software without prior +written authorization of the copyright holder. + +License notice for Zlib +----------------------- + +https://github.com/madler/zlib +http://zlib.net/zlib_license.html + +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.11, January 15th, 2017 + + Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +*/ + +License notice for Mono +------------------------------- + +http://www.mono-project.com/docs/about-mono/ + +Copyright (c) .NET Foundation Contributors + +MIT License + +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. + +License notice for International Organization for Standardization +----------------------------------------------------------------- + +Portions (C) International Organization for Standardization 1986: + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +License notice for Intel +------------------------ + +"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Xamarin and Novell +------------------------------------- + +Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) + +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. + +Copyright (c) 2011 Novell, Inc (http://www.novell.com) + +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. + +Third party notice for W3C +-------------------------- + +"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. +This work is being provided by the copyright holders under the following license. +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders." + +License notice for Bit Twiddling Hacks +-------------------------------------- + +Bit Twiddling Hacks + +By Sean Eron Anderson +seander@cs.stanford.edu + +Individually, the code snippets here are in the public domain (unless otherwise +noted) — feel free to use them however you please. The aggregate collection and +descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are +distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and +without even the implied warranty of merchantability or fitness for a particular +purpose. + +License notice for Brotli +-------------------------------------- + +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors. + +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. + +compress_fragment.c: +Copyright (c) 2011, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +decode_fuzzer.c: +Copyright (c) 2015 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." + +License notice for Json.NET +------------------------------- + +https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md + +The MIT License (MIT) + +Copyright (c) 2007 James Newton-King + +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. + +License notice for vectorized base64 encoding / decoding +-------------------------------------------------------- + +Copyright (c) 2005-2007, Nick Galbreath +Copyright (c) 2013-2017, Alfred Klomp +Copyright (c) 2015-2017, Wojciech Mula +Copyright (c) 2016-2017, Matthieu Darbois +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +- Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/THIRD-PARTY-NOTICES.TXT.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/THIRD-PARTY-NOTICES.TXT.meta new file mode 100644 index 0000000..7f5e152 --- /dev/null +++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/THIRD-PARTY-NOTICES.TXT.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9cf1934d70d97a1488049a97adcf898c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib.meta new file mode 100644 index 0000000..c5d38bb --- /dev/null +++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 993a3965dfa073940b0ae6583d524159 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1.meta new file mode 100644 index 0000000..a0abe1e --- /dev/null +++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e6284de8d63f64a41a026c5811d04a5e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll new file mode 100644 index 0000000000000000000000000000000000000000..c695bdd5965b0b687fdee8984d5d36e1a33fb642 GIT binary patch literal 14920 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 literal 0 HcmV?d00001 diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll.meta new file mode 100644 index 0000000..e20f0e7 --- /dev/null +++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: 7a581a00e82b53b45b97f49aab0bdbf0 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 3 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml new file mode 100644 index 0000000..5fd48a2 --- /dev/null +++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml @@ -0,0 +1,8 @@ + + + + Microsoft.Bcl.AsyncInterfaces + + + + diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml.meta new file mode 100644 index 0000000..48d4274 --- /dev/null +++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5dc6d25512536be48b80aae5b675013d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/useSharedDesignerContext.txt b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/useSharedDesignerContext.txt new file mode 100644 index 0000000..e69de29 diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/useSharedDesignerContext.txt.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/useSharedDesignerContext.txt.meta new file mode 100644 index 0000000..539a419 --- /dev/null +++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/useSharedDesignerContext.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a1ebe3d8164a9ce4ca7031616585e2e9 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/version.txt b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/version.txt new file mode 100644 index 0000000..f5d54e7 --- /dev/null +++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/version.txt @@ -0,0 +1 @@ +0f7f38c4fd323b26da10cce95f857f77f0f09b48 diff --git a/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/version.txt.meta b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/version.txt.meta new file mode 100644 index 0000000..1110774 --- /dev/null +++ b/Assets/Packages/Microsoft.Bcl.AsyncInterfaces.1.1.0/version.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 215d689372e0738478b7b4177afc324c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3.meta b/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3.meta new file mode 100644 index 0000000..1d44165 --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 328f60bbd19ba7b4abf8fac98e069b8c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/.signature.p7s b/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..7f2535fb354ce783f497472abd9492b0f2d20794 GIT binary patch literal 24208 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 + + + Microsoft.IdentityModel.Abstractions + 7.0.3 + Microsoft + MIT + https://licenses.nuget.org/MIT + https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet + A package containing thin abstractions for Microsoft.IdentityModel. + © Microsoft Corporation. All rights reserved. + .NET Windows Authentication Identity Abstractions + true + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/Microsoft.IdentityModel.Abstractions.nuspec.meta b/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/Microsoft.IdentityModel.Abstractions.nuspec.meta new file mode 100644 index 0000000..c498283 --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/Microsoft.IdentityModel.Abstractions.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: da2c0a16c70ac7243aee6414a20d64a1 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib.meta b/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib.meta new file mode 100644 index 0000000..4f8263d --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8be676d2976f518439457ca13bd25aed +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib/netstandard2.0.meta b/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib/netstandard2.0.meta new file mode 100644 index 0000000..b6800df --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c8231caeb32acd643ba089a07db30ee7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.dll b/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.dll new file mode 100644 index 0000000000000000000000000000000000000000..07c3c76a1df191ba1dcacae4a11f79db865fa462 GIT binary patch literal 19896 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 + + + Microsoft.IdentityModel.Abstractions + + + + + Defines Event Log Levels. + + + + + No level filtering is done on this log level. Log messages of all levels will be logged. + + + + + Logs that describe an unrecoverable application or system crash, or a catastrophic failure that requires + immediate attention. + + + + + Logs that highlight when the current flow of execution is stopped due to a failure. These should indicate a + failure in the current activity, not an application-wide failure. + + + + + Logs that highlight an abnormal or unexpected event in the application flow, but do not otherwise cause the + application execution to stop. + + + + + Logs that track the general flow of the application. These logs should have long-term value. + + + + + Logs that are used for interactive investigation during development. These logs should primarily contain + information useful for debugging and have no long-term value. + + + + + Interface that needs to be implemented by classes providing logging in Microsoft identity libraries. + + + + + Checks to see if logging is enabled at given . + + Log level of a message. + + + + Writes a log entry. + + Defines a structured message to be logged at the provided . + + + + Interface for Telemetry tracking. + + + + + Gets or sets the application or client ID that telemetry is being sent for. + + + + + Perform any necessary bootstrapping for the telemetry client. + + + The expectation is that this should only be called once for the lifetime of the object however the + implementation should be idempotent. + + + + + Checks to see if telemetry is enabled all up. + + + Returns if telemetry should be sent; otherwise. + + + This check should be used to gate any resource intensive operations to generate telemetry as well. + + + + + Checks to see if telemetry is enabled for the named event. + + Name of the event to check. + + Returns if telemetry should be sent for ; + otherwise. + + + This check should be used to gate any resource intensive operations to generate telemetry as well. + + + + + Tracks an instance of a named event. + + Details of the event to track. + + + + Tracks an instance of a named event. + + Name of the event to track. Should be unique per scenario. + Key value pair of strings to long with the event. + Key value pair of longs to long with the event. + Key value pair of bools to long with the event. + Key value pair of DateTimes to long with the event. + Key value pair of doubles to long with the event. + Key value pair of Guids to long with the event. + + + + Defines the structure of a log entry. + + + + + Defines the . + + + + + Message to be logged. + + + + + A unique identifier for a request that can help with diagnostics across components. + + + Also referred to as ActivityId in Microsoft.IdentityModel.Tokens.CallContext. + + + + + A minimalistic implementation that is disabled by default and doesn't log. + + + + + Default instance of . + + + + + + + + + + + The default implementation of the interface which swallows all telemetry signals. + + + + + + + + Singleton instance of . + + + + + Initializes an instance of . + + + Private constructor to prevent the default constructor being exposed. + + + + + + + + + + + + + + + + + + + + Common class containing observability constants to be used as well known metric keys. + + + + + String used for the name of the property indicating if the call was successful. + + + + + String used for the name of the property indicating the call in Duration (ms). + + + + + String used for the name of the property indicating the call's Activity Id/Correlation Id. + + + + + String used for the name of the property indicating the caller's ClientId. + + + + + Details of the telemetry event. + + + This implementation is not meant to be thread-safe. This implementation would either need to be overridden or + usage should not be concurrently operated on. + + + + + The underlying properties making up the . + + + + + Name of the telemetry event, should be unique between events. + + + + + Properties which describe the event. + + + + + Sets a property on the event details. + + Property key. + Property value. + 'key' is null. + + + + Sets a property on the event details. + + Property key. + Property value. + 'key' is null. + + + + Sets a property on the event details. + + Property key. + Property value. + 'key' is null. + + + + Sets a property on the event details. + + Property key. + Property value. + 'key' is null. + + + + Sets a property on the event details. + + Property key. + Property value. + 'key' is null. + + + + Sets a property on the event details. + + Property key. + Property value. + 'key' is null. + + + diff --git a/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml.meta b/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml.meta new file mode 100644 index 0000000..8443ab7 --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Abstractions.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Abstractions.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f2774dc6c36100849ba65546e1814de6 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3.meta b/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3.meta new file mode 100644 index 0000000..bb4dae3 --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2e37e502c44c44545abdd95422e8b57f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/.signature.p7s b/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..75d408cd8f95abec6041f554caa86e5ea33a7ad6 GIT binary patch literal 24208 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 G+W!YU_SsVa literal 0 HcmV?d00001 diff --git a/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/Microsoft.IdentityModel.JsonWebTokens.nuspec b/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/Microsoft.IdentityModel.JsonWebTokens.nuspec new file mode 100644 index 0000000..bc00094 --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/Microsoft.IdentityModel.JsonWebTokens.nuspec @@ -0,0 +1,47 @@ + + + + Microsoft.IdentityModel.JsonWebTokens + 7.0.3 + Microsoft + MIT + https://licenses.nuget.org/MIT + https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet + Includes types that provide support for creating, serializing and validating JSON Web Tokens. + © Microsoft Corporation. All rights reserved. + .NET Windows Authentication Identity Json Web Token + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/Microsoft.IdentityModel.JsonWebTokens.nuspec.meta b/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/Microsoft.IdentityModel.JsonWebTokens.nuspec.meta new file mode 100644 index 0000000..f923f23 --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/Microsoft.IdentityModel.JsonWebTokens.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 13416d25ba3ba0f458a95d17e2adea5c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib.meta b/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib.meta new file mode 100644 index 0000000..cfd22ae --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 359473f474116074489ccfee8bc3d95e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib/netstandard2.0.meta b/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib/netstandard2.0.meta new file mode 100644 index 0000000..af99d2f --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b6471ab3fb818c8439b26160b9214ce0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll b/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.dll new file mode 100644 index 0000000000000000000000000000000000000000..b616d8961442775f5395508843e33efc8ae4b0b7 GIT binary patch literal 122928 zcmdqK37AyH)jwQ!>D%ipJw40{v(M1e(>*K83=GU5xP!8Zpr|0A;?~$B7#RkJpr{cS z0vb^g0mT&;)Hl(%f#OaQ+@h!uG-}*pAknBX!vA+p)$P7B18VZU-}ir>Z=g@rId$sP zsZ&*_mRq-b+)398LkMBwbKrmw4%x{;h-{M&T#koR|`4{Kw8S33Euxg90* z67e$=GtVoTHS_%Q;}@2kKBpux|NN4<=a-B*ep1PK@!4}~)6#quO7!@{g&3@APL|KVns~6&4O$d*qroV)E3F3PY3X#ciUFuB)(x3lIK*ay|HtML?j7y1?{-;8P zN^bGUi<&r|;*h)6rHB+ftcm(CMRXAWeCP#DOeXZl{*@$E=Num3M>+D=UO49`7XrV3 zld2ch6?!}WN`#nEo9IZ)0+Ds2x?4c*N9g!#7oxp3G3VSk7)e(aM6!O}hwm^>c7VU4 z{`5z>>B1#`a=j3bHEP1k)D#$m`gf<$L&l2qaG4Okh#d}-xNdZz95W&c>rIgkI|B=L zl!LP}f#|$M20$F00{CTw-;}~jG~iJHmHr^%=ngi1qz?Q90G0j+!aqpia}3}e04jZd zFWfSbo&%uLe@^&aDZIo5JPe@HZzX(F3eU2D7XYaA<%D0I!uJ!N?M|jA5KUZ?!gmn< zW(q&f1AI1sl6QdcLT?h^hG^nnDf}KE@HYSy|6)Jzs{s^V7y#Y?pzy~Ce=CKbmj?VY z0F_>p4!jva;m;BN=M;Wn2JoK&sPv{x;Ku_f{At49PT^+-i620v_sar48bIM6623o$ zUl{_v89=3v%mzLWK;gyxfVTlC{58VOoFx7nqKS`F_^)z-KL()q+wy>)2B7dS2+zw; z;!h%)csYfiQ2=~7fa0$y1U?Et;WrWfQVKt}Kk%OesPyUq#1EkGX9<5lgMdB zPcH^u3!w1d5dLxspIid`TmY5+CE;nMN&I?56ZfX@QDwkS22lLIa^ST93V(y}Kd11f z3gCwWsPyLv-;u({RsvrLpwho4yr3$HZ$>onXbPV`5cnbh#h(@iUJjt}y9obv3Ljk! z{6qki{u1Hurts4uz~=*~^nVauSd+wmi)dn73LhEmi62AwL;#ilS;F79@oqRylRZ;6 z=0&rkl6+D(rWcdJVoHuzf#|Dg$`av$i1`;2XOl^_A^_B#VyrOqvDl%i0x*mpax1w3$CP7Dz@-tXPF4NUd_G>fszvB{nU08mnm= zo&+SdB}B@Ma5*!$6e1XDZ5&5AzHlyQC)4)>dr5sycJ2mAabCS& zI3JufIaIvtBe_$h9HQ&tJd)F1ilrGEoP_31mAUt8Ir}woHI{CuzOV1MrUUOl?R;VA zVuj%|t=$uRi7Oh#yxglGQLD_cxw#82eibIEjOA7>eg%>JmRCdmR^+ejrj+mqL^p&- z0$LqyBo+nw77E?4>)fkfLxod%s(`*^?V1h?`xE_}99kSgfYj=>o?7`*T2YEaE4M={ zz2j!8GZiT9CJlu~*o=ZZ+LP)_Ta#sNTNiSk0zhgrW=}OSw+y8zZuE-8$RWL&mC}>V znwdDz+#}t#d3Y3*2xRHu!w_Q5nAXxmF(iye!c}w8P-#HM015fBeBr|>;thKDggoBL zP#|gr16R+DSvh+`{u+NUkaG>?01`d|j6si*6ZCtpo*O?Bq^j&t0L)(9OY@|q>z?pY zAcs!|B0I^XP}=wOlGl5-hdq)nSOfz~XZj_1_*1N@pC<^X4sCW7h8Fo5QJ-3VEdKl2EjJd01cAp-HYqH|w zP>#R342*2L7>gT2W`ZEv>GLoQ?H@^(7Vme_+6kzhN#r|Cc=KIR?_~2Ho{&P>){H@ z9!EhnsB)-YPoCWzgnI}4L1Fk*=&=LKO^svm(||_PFhDSgSsRH1>kC#&N?oi3dCmR( zC^g4UHsh#%P2^zdtdvR*)f)oc3@0`s*hkc%HNu3C9mpu?WJ;};I#pA$uh%=XVa8Yv z=6)(O;e}=5w;|R=beS3f7nUpzu3(aj=rWbK;3pki`AIIK%T(gR`o+Ojn&cw7OeHS3 zG6z?6l8fjvmG>ls5<7a4gS{ciPIQ?{T=0tyu9hSh(Pb)e`E4$0MIOP@Bt(~~=ql(d zh8T>{Vt)eHX~wGb#3;zbE)Y(pCg$##fxc0rxqbQ~O1H9cwj^pW#tEa6FovW)T+-1= zeTXhoX^pOn!%&W!%2|YwV}?(MSjgn~EW~32WRFWsAPKiaC!cP0%tlHV@hHwYz^TyE z9)(Uz7D{xPN?c_iv6imf6N9+{W;!4|G9niCmwwf zbF%(&jKVc5d;C}OIw_ZIL#J+7xg>Stcn{q!=%X9)=s4~`u7m3KU&-sFT#;JcFs_~( zrq#C8(-Ifxe9j!q5=PiUH^M3}#|)o|Mh%|@kY()e2Un?i!*dA}xjEsp5gB$VOqIA8 zy7#xIq!&lR`>81jF5(<;t(ZsdOw#fa`%?`0U^tf;E=VyHfOa0y5-D0CXy^Cjlha%r zL^;iMpbSia>FRX$F9iDROyi79iTQ(lzH#( znU`FXGcP$PcY>(WP074DGViZ@<|S9;%u5c*ogk`oOET|UFeobUo1S^eK{@l1Uveji zDxHDVBwE5=vo5&$bU=1a3FuGD$Y|s#H0}{@NCq zgvO=`g7f8Y=Z^oRSMHqn#h^$T$3sS6$t_ayQ?}A_(9q=J>7A6m0uy|pEMToH;KiN= zOgLBpMX~@2dKW;mmYZiYy_3=%1q_!3yp$|}T?Wl!&f1r<0HVqnO)7T)t&67I-ZL-F zZO*)9oR_F_o|Ac>mU(w1^NuIW%}wP^S*`*CU^xnUSFDm{Q!c%e(o+@V@%?&IIy(lM zPo0{Tb8e!_xs^4m`LD+JH~&tK@3-{Dqae7e4L}bsMl0)`6pse=#q9_?mQZ(SMJ%H8 zak-4w;%S!9c@2yc>yeavwjS;VZ`7Z75gtaKJnP+@gu^kC8F^8LI9f7Jiw@8`Nvz!0 zWcDr%YkbavtX%l1x=|SmR5@fzMbI#GUV1k|>kS((Ks#H92RXeN#tJNrxzTC)N$!$jJWS-B@jrelp&*r}{oP-s5 z?;xyZ%%500%C>dSjAnNB_h)?ZU>T7Me=;NN>J~@9uJm_^(o;fQhtdTiT}hEFllFe} zXCTYoq!#(Ih0ZYImr+Y)$uNF7kT5pKHL=UT{jB5X z2z}XpD+?RD7A%Eu+_Z|AR|5pij_VNk-SO)Y=rJ6=&>|=C3UrA70;HM~B}I?l0E|g` zd<{i!1c>Ii!@mZ?2^qZu}-&iW&8r@wLEm_UkoTP9P`E742|I zO2gT%_%D$ZvTBYFTJc{|)a{98n2>Wb30MaZtIg6Bj$l0~;SB)ZSdOCds-_@*3y4uY zHw}XNQ?`3?GGO6kz>>RuPjsqj7dF%`%mdLLE($>p(UN)y(OY_o_Qnd`y#A71GG-Vx zuEaaGW!>>xp^iJg5zwOD2o5%PXVY;+_;w)gSW!!<81zQa2S?3@8$5u3U;A0S;-;0hODQ*Leu5+M2@E`G8_&fj_u9YO|)NjrM?*GsFjon4=fFy2zcX%`R ziaTwBP6r*m`%IF=d6ba?ZeBeaOv?%AarjI05e?mAk=;GePq=%yY9^vfardy$VwP+% zE7fA2Se~LfTg=Q2)Z|k?kr{Z^?dT`!1ZiW>6C{t_nDP;2%rKpe>5XN&!?eWz-u87L zqJ7=mzGG!OqF0F1@G;O1&i18tJPx!ej`p(K@g&e@IOv6#XMS&T{-8mpNFnoKnJ`RECK1fTD~J)*q_P4Ir6gm&fsS$QK=$cppRB zeyEfvA7lG<-dLulQJF`!2AAk|$|HjuRNml2%cDH9IaywBBc7hpmdtoi>7x%Vo$@$D z(#b*iK>*%jbAh>--+DI5tW=TICCHj-NKGCsf`a>=A1*9NqHP1 z4_YRcn-5V_FA4vTZH1868;f{&N5Un>21q36)oDib6}O&r_Ec#q?7(p>9V_<8V=wA7 zu`G!My$%+WSdvvB7DAjXJe7xh*&%<>mlaU6dB8E72Y5C|vY+R3k3F$<+M_cqD~-GS zd`yLfq4Z#S^w^*uG@ex-CPmZZn5liCjGC-qM*O!F&CK!#Gs!9YK;bF$0}PN1OraTa z3Pov;A+@GomMuz^!V|JRurBU1u#gYV&WC{Jz@Se~g2CN+K|h51&ET}?f5IkU!RomLoH7)ran>+MHV`jr@YKe zuB(2;Ix{8akn7BBv-djlKU%w{N^mG@V&&R%?MiC|`ukDq;grnuLoU@(M0#?qPJ0=* zI93*Ms4`MgUG}}6jR&_fY42FepZxuDd#>eErKBgX4;{1^(?$9_%fSHx|NX}{>RX-k zp3R+ZVaxD`gH@KaNOz^4Jt*{^Xo@@J-@~Y_^3g053wK0V=5E1urp7Lh|^x79G|hE z#qq(I=D(4;!8R~m@h%jM=U^@|6e;Pbzq(^!$=*;^C=WjJ60K-oyDRg}h7ELB>Eoym zde9w)sVDYP0E34{a2}nEfg8WulFG4*s4a*oYqkemUV4BtD>#jUiLh+p)7}xDuQ`!|eDH zVddgKV*aR%g{rdmTVI3F@jEC|*-g~=N5o*o|BfL14M609dM&UZ8>#zq-VIXvZM6Rs8p4N1QMl@=)auKz&v$GqDK@ceDeOlZj!uaR2Q)7|d_EjX0mh z>_95qYi45K(cpbK#cQU+v7Zm#kf{zhnshUKF%ew5YeH6!Nyv1}UO}tlm82LrQVe*W zWw|k+jv)RjK**Dra|~^`?w~xc0mR1f++29oOw3f3IYBpFKw=3SD)WM# z`0K<-Q}~9;e4yw(Hd+AmjU*a=6VaMu`U>N_&;NxioW`|>e2Md*Zt4`Cj3_H#nJdjN zS0F)O$4*MB16b&dT3)qb!O5L{pJ*=n3zksgLVPe2h$_?5vUtM_ zlLeUG!0zE*c`l5pJ(`ajSvR3%DZEf>K}YLnelh1R{dpY#LJ+EVQ{U@_%0;j_L;88CLOP%^Fyg(b%-%0G5y%o zG#4~C@Y9f*m@67FT;ZSD>;n{gzr;Td!VY=q9lKFhC93)-D$|NpnPE)Omd_RKZ$;BB z7q=4Kq^qg%NrVo~v0^$3Ts&UX!Bt3+E*Wc|Wkq!>!s7kef$TJkn>u7QUy4S=)I;qZ zqU8m-2$>hiyFj9~iW-Dxpkm_hF-s9e|4i9D?x3gReZ*Mn-2*~iPi4$g)$svHm4To) z{voCP1pxQ{ys4x#2u>wI2{e~)SiH~X-%WFXFQ>ufiRtc0Vl}E{KO2EGT$nt09547$ zY7)sa)O!D8WR+u0_6Iys(~dY^8z9Hdx8jCX@@#;{%P-I$vSALIO;XEWnjliER9E~H zl1L)~y(Tr1aN-~qSNv1r8!JO@27gV&%`Fh{L`yu5tRClx^Q7&< z+=#^wnJI=5m%5K=rbgT_xLBcd8P`J>8ex5OA)Ql$tiKv$Ql1)Q?w*Rz@1gi4sW?Bn zDZx7AM#z)7;nGv18J#q3_lTfN7KLSMv;gf*2gVRy}`2*9DP}MnM^3_(lu18PVutY-n2Hyeg zNB-6@CRK-hVq1dgg!^iF-lpLZ`sp4804S2#qe}M`(6I z0>XY>Xefk>BwIKQ9zbDXtc)Boa~(4GaUQ+v3l5DgaI(yQaM-U41(Qt47EYHk2~#p@ zZSKOD$b-ymcm?G1wLCxu<|rx;$(SZ$ZHc+Cw7tyN7h|rqmvaYT9`$wvQNvj8+4qH8 z5S2sI&D#o}C9ig^J}x!DchH`TpU7jfcgHcKVRp~^&r84+7!M8E-Bp2(uOOt7UrOSvN10r zkKTnz5TVhvn?th;6BKY)*B%c0b-m5uBFP>OO4)=ZWxMzcsXt^Jar6pb%TiQBMs+#i znsKaiXxb}Ie0RK~KPgwPAyM`hi~9?AyvT%ubryT!WpR&DSf1WTkUL_;b%<^0W?d+% zbcy4k8m`9wpei0#1q`2khDksqiuE{mAq8_@?U<0k0|41*IxKiO`W#L1uh zoBAMFxZOM)8eL!oZgyE5y1LvP_Ul45L0=@!e&m2u%0E9NZ1in46*OX)B$ito1KLrE}7G4ec^dR0;{UvG}jjDxPc4Ek+9<^PDY+#G0L%tsJ@A@3x5(}U} zj|EV`vC7#k@RZ`T9*ZEKOwNFa#H|n?rx;|Ssnx0pE5j&Eu4vH`SqX&(<@_Bp3Tm`M zzQW)`4KU1n!y4sM%8PR&wadtsrU<#Pk0hI5lE#7un>HEXHf76;FoD&w0k9)LCQb{c z>0NJOAO~H+wEY%xSsg)SrFZ^tAw2P0sEp^^e?)-yfqaw2yaDRsN{_`^&~n^A!gkH= zMDv5`YK#`B2AT-{H&hlnmvsI64qqdVs|~&w-e;wEMsT;}B!&|J(L=J4=8YbgXqY1A z71}ys8u@-zoJAJcMfRf#*FmR+iPovu4yW*-U#?4p_?u`6+w01A#p}P8>q>g|aWsrs zjE-f_Ux^tbiv4p=x~bD^N zP$=ZW>rfD8EPfMBq>fOquChAvkgKwrsPwWIy$XV}0k6OuE=ow3cmXls?I0um2gvck zdbGMXc+nrTdwf~q0P1V+Y9)*9T(QKa{*SjmWKNs{6hbDwy2AT}{y^ZPTNA&ZmJ(s$ zq?kKA`poSo@w(k9Rh|`1hFEEC=?Zf6IO<@jGmkPvCBeOTXR6j~sn!Fy)Nk=_oTd#!L8DJ>c7b%%~qo#J|X|7wb{kPl7dw5tiG!^K zW(mvX>KF(~@i0KdoS&fnJ%ATnT-8FUd%l3|ij=bN(+#M%dg)VF=>}SKL^|D3v** zw;*$V1@XtsjTDAl;CChN2batgqf8I=&2)n*gu)PB&&2g1E(C|{2Q38sot2_6{_jj#A zGY7r%Po#{v4?qvp<(ZT@e<~@qz}!e-D3BEh*F&Scrg4ZhAQno`N)IN{q@+O@_VBhQ1llE-fp>)JJI29@ZQObk_lu`(T%1cv!p(GFVsTF< zE8MD>dUt9^aqckQdGtlw^gcZ~#iaUDZ*%|AQCv1XA99JMX!}aEGd+9IM%Y_=>F@AL zV0b)YLebB@fpgtcd_;X zQai?toQsnCKV8&_ffJ>FquuAT)>bR8LsnlXNF zDu_y9NAdj?vSO1RZ(BmXeE%~%nyeE}C56WjA=g1T9E9xf5r9#5wtPdB-qw<(%1xI) z#qMT_sG;OcCG6-~W|G5_jwjb*#}n|tNf)5@EqM`ye7T|drhM2juy zy73}Nwvlyen_<>;~~{b z->_DFPqi{_-*5Hph7CPgvpSCB){P&ZY*p@hJ$Cz4C7Y5FFGcexq>+QWTP#BqlR{A!SIQcEiD*aK^!uh zD`%n^Jt{H(R6OHT=Nsy_Sfz8ao(T7dLvy#p%AU}3wGzYYY(1B3v}f(RWOKVb6LQmb7uu^fwP#JO+H&|{UhZ4VL}aYJE_2bd zZ+dOhN$X&yXcg0x1sI#Xdz?KU>7pDaOVn&pVM9oQR`ghAi1k z5>z!Bmpl$k*%B{!VlgkjT8$$hEVc<80bz+v;0OraHi07`EVT(70pX`Mfg>Q`08W;| z5fCo12^<08Qk%dL5SH5nj(~8PP2dO!m)iu6fN+IP;0Opmvk4r*R~gaSScLX!=v~+y zVN7AKcJ^uZUX6BcFDBoLG~(01F7G9+f&WnlkOsdkXvo(G@tzVL9v+cc03r7IqvW8M zB{|!N$eTJwlo_Ry>wSzU635PfE^g??*ALx}>r?TQQ54@B>UmlSH=9Xk4%g5(BY03P z-i!YEf2V$CeER=x1=WSiaAF54YOiBV-g`Jq@}F5i*8f^@^iElSI&;C~%4gZszH4SC z+qdscICVi8zU#la(R>Q5g9m{XiThB7U7a3Rp--h&!@5$vgdx8xQQjv#5o;#wWB9xv zb#sGmbrha%Yn+2)Sb89o9Wt}=I3&K0jt)v74tHWUYRGKgi80hcxu;6qgQ3HRqGms*5emY2BL)WqrXwZXGw_{L}x?2-#R4)jZCytqw>gHzr zWANC=?6$;Q|E>TjW=p`CF&(!@R2u+!hMD zqlG~{*6^y^M7VWzuscJ?)0NjAcVbNomkQ1BzfcUGabdIOi)Qec_waXWhWxvSm~ z0OIzag?lITHq1mZt+UX{qSh<`xn{>KWVl7U?Gg|e$ z=KyeZ$AYNNI~FsOiW_*|X`U7xn%D;EwnNqFX-~4J>5hIUJ*XplY)ry9Bh}CUOD%Yg z7?1j*N%)=&=6)LJ;lxD{ZmVUW&d!^oj<1%p)H^Zp(@`_O^Uj}JJ-hIV;bZJ)B=YPK zn_}Ew(Mtr{qqb5n>85Z1aI`~hzr?UJ@u=VpfR0&7YlUZ%c)eg&z>|Brd>H4}b7#fp zfb5Q+!SGB#%M(7U7b(Z`c=(x}^ZpVoIn{hJShUZV`jJ1q0lL78LBDK2*2sK^Pfy)> zjZVbVv^!xV^;$HV%NJ`*{1w{T#**o_w~%~lagWuQ>b8>XYsRA$0f~3~fJ93F0f~v# zXW>gbSU0|%8|}yTrP~J<-v;zGV}m0S_xEDUV)HxLYA#G{@54h)^@?Mktn}`%eUk)vOa$%^u(~iOYi@rQfVcm-Z-K=iC8)HYqAm_&lU3`7Vgsx zq2%jz!xh8ZPPj#SJ`@ORczjnGORu7fBzP!cF#+{81Qu7K5#^b5er>Y;zM78YrQo@4 zzQ%{kijDlm&AwQMx+W}d490Th1-w|hhp+e<>LOu-J8k!9$;lo$X5TIj$DvOQ2EzUu zPbdkCnqaoC_Fn27=6n;-9!mkS6W!oj2~XA|s3UcNCBz^sX$pPC9otL^I?JB70-gNQW>{+=~g%Lj+g&dL1I` z^1f}<;>UoIMB&*mxxF4HS<4}d{u1XPrNo17T`mdJ+QSz>WJdy^dj;0hiQj!6$5r6y zm;w7#%5OCM2}euuG=$G5EBVW{R5U+DZLy=>SJRTcw!?$UcE3V#TgxK(JU-GVRI7Tt zO;7EjcfN&OeB(9#8gMu?`aO(W;ZO#XtvWH)o8ZD+Z~Cn&+#&fnD(codcY~mJV)6&v z1IRCxNJ1DaR+=~70UN~J-oP$AR}gM*{6gToa_W)qIxvUu?X)@J`AFxlmR&#*`c~YF zNWv&Rr_#qa(eSQL*Sl1rypV>6_k~#c@4|8bUv@Lx`S^4`wp~tI~Z&rVo)OG{Qe639`+hW8rl zFbVHLG{I~x@545)2FD>7LTg@B1roB^UQ&DnP@?qlS^E*D&H<=om(1>9{?N zyfj|ehTQN$uVWac$Z8nzyOYp~-W?H3bs<*c(|a5}3fc?!IK~lmDaSan#1^y+_6itB zSUS)+`W%7ZYI%t({236rb19QmN+hqdJF6DhMMGBa#HPTE*__E;Z%#gn=47H-$yD3o{NU3wT>u$tWo zy_2Z8s&j^d?XO_4p}D?m;9 z)jg;y#;d>-l5BUN>{sF7#Lpdc_|;FLkP-eFNg%&!2t4_xwFmmcUL>JEe1X7kMLYD) zzaxg#XR-$@)H|_-{=o*vtcwPx%=R_qfvPX{{7r_Q-Q-SE+KP^K!wpa=^tB=1??Gj= zkk;fuzobyURsauLM9p%Z-bqw)pA3+4Ci|d`qfJ~Q>Jp-b+vJ}}LYsVpz;7K6vdF~;_h`h?80UNN8EL}W z*v*#?eLbtO!?R zc}pR;k@Cusw#auoE7qBdDXg%etdz~W%M0QYF$QCl&p%UYd__e zRqrQ!3kPki*vjw0w?cl)Npp3UWw@U(b1|S##sRpt$7g!otL<&W~zZn(@A; zX@ARF{P?ETJEaoT9K(Nu-u7QMQ+`sdgEmt+tM#8XQ>t0Y9L79IbI?WtgQu4@<2WDj zwctsdYKk0bdT!X<_!`*^Tn4pa7fyKaJ*BB;kKagC>~wM6x(mxmvl){gL@}k42shG| zN2Sh9U>^23Gf*ezy^c&G7Lpxa3zn7}ds`UaK=dO9LBaQ1_ZcquzqKx0HFxXXr=k8- zvD~R#VTs5ZUp==?!z%%>GS@#_noH#y7z)rLh%^^qwypuY`c-;47J^1ax+()x&`Sh>Tu zQ?JlFv8p!Zw`&~+ax6e!UWt_%&W&rZcc9exFVSipv*EzHyg*eJ{{E~(X8Dz!1-}Q8 z%%gW=$}qz>BTY%3fFfm7rL9Y)jYWaZG`*8vx(TlbM+m=Nk`vxQG4hhPP=tOe1%tr$ z{8VN9L`s*RLiv6UegLJE+$H7>^kGWC<>EyY?(f%Tdw$9XNgGL|ixx>f65yx=ziXwm zy$xJ48owRUmV3||s%GO+vv4=6FboTSawu#`qN)scAOrup2ph%m!ehvv<>xmZ`FD7D z*)~e289-JEznVrG$twByS5Rtp{gw-+1l&YB@mo`NVEFR=7C4!H@09Gr}OgjD~(PfYy$>coku5GN0eg`*2Fd;ziI7D#y2LGXlMz zEVeTU@i8~3HxU)T+Xg&-59yMD7=A;B%Fp%fUeY5+{9bTGXW0CN#Y<>lVH0cW#ouu* z{yhj1HvlOC-6JLD*%D(mAHG4HxL`S7?02$u@J&R^@lkd0c*}YRC+AdOxC-&&i?Y7w zCsiWeD10-^f$8YCTRTbrNI}Pa&~2fO@;h?aYl#s_8x`+w%EJ%2ftj12$&V?5>a64I zb8`4l5bwlvW`WX0wz25ItP~nW#9@<;IZTtTjGyl;7*tzd+f?7wK(@xOnw(1k24wkS zd{+a)P3?$Jx-c>K{4+Z!DX$wxB1T^25%JpAMY< z(3P|k|FogTOP%XqS`)oE3>P3a;)DLh-|t!mLKQxK;HWu&?<=k2i7yQw)SHcWAwrtJ z;2}vxdREUo9)#KWP*{c!cC;iCf0npZr|43S+=^mqFIyUG$zGF(zf z@%IK?hO4WA{*Qt4B+m8I{+<$0iYT>c0Kw-Nj$n8%!xEP8Vbx`WEujw}_-x_JZI-yZ zkVT8@-8d$iEltdPWn`&#EKJS!D(!oD!Q`oh95u=7Mt` zO81Et@L1wX)@?a7@rkM-M4whgaB&+!jpc`i5$Ac)c&mkFS(BPP z%KMiRlC~~%2PwXE^xk|VdP8>{}qq)UzLND@(tBNW0cgSmr z5L;lyb(d5mw&249C14^ zqcl^@#bNjy@d~hI;5-0VJV*Rd1T+KK3P_$K-cr~&xYohi+ajIQuJ#f3p2%eEc}!1( zwNFGAW1r!0V6e6qXA2}{6kO_H?Vlotv0cz$Fk*R*^3t>dPJ6&h<)s6|e1g0yQ>#M+mri|4hM2b|Hu1X0@#>C@QgxdCM|?{63#h5Iup#a({bj6N3>mZzd3OxD z1F3^x$tm40w-7Ah_%@D*xpn*upC3LRoNqGxh~b&A^OWumhL50irgU#*_ylYz}IqyZ#!ES433(7vQhTC@m!@F{b^P}tsVEJ06 zv~r)3ec)n_ug-ZKsTqh*=-yNQCFaxxL!U!CK3Vi!EF_*BvOPAbTNBipK88CP{=p#1 zA{W7RUV?8jl=m2Jw20EooVyv`$SEduZCgUG~ ztC&B)dQRl{^JygcQ$al2nR9J`;>U3O#K6~-E0ZXfrIGy0Orp%;(sKgeA^wu@z1R?O zLqM<15gUXB*sT+M&m=gl;sLbXFDod1M<@euRY6IuB_60)5wk>d;dsE#Xgw&eHVy;a z!StUD8HxDQRikS)akG9D;!aMPdTTjJARd_)6OxNOMo<2UNcC5KiS?Y!MWqnWbcamI za|S3qc@AE#)RRirM2?FzoM)ZGGUoxdxsC$t=OOyTo`ry~dX@lQ2b=e-h15S)Q@a)o zF7lz;01kNrbSw6n1XxR$!YMqY^S9<;^74 z59^m9w22bSJh#X8YNi;eu!m!rSlJw@u>S4!x=S3dutDv^flXy>x#zD%do@d3rP2}& z51N*^PGMIyw7D(uE5+H_x>s|HS5?}`#s^Kecw1o;8{6Et3#hRBjQv~ zUn=Zu*M9si(02;!z`=}HSagtvI;^tx<3dcj!q(#C!zXeTR^{1`{b8}f>TsIo7xd%C zu)IgB*^4i%n4_>wBM7@uah?G^17d^17D3N|*rYg@W$o3{M0Qw8IiY~CZiPKjPT1v) zE%p4NJQF+7m5eR(d>YwQn=aNU?4Oa%z&0rC4p=Zl+@-L`VZjXXpu)aETBdkZVY$#H zQ*2{wxhJn~uND;FC@fa-o7$kzs!6kDp4N)TfcY3(?pYFQ$J-(O6jsmJ0L3{XREV@H zg`JbNsWv2P6?Re9W?(}Zd)CuEa;}*z+7$N22*Qq3*oPysyxC&B$~OvH_Y+eUHW4-I zCuS;a^3eU5FXk$2&QOd{aiPS-L$Fz{SdIOb5UWIU%Tu*^;%3I46)%_U)%uIa74{Ni z&q&OBU(mDZ8)&k8Cx#u%ipdo6915C zBE5XOQ6jVk;#@Aei{7s-6%`6Q0a%&%iNfwF`n0xO+@P>7V3p!wg-rxDP-Hi<6wmnL zy=anQ3cIU~uo()wJV@Abg5N_PScjK~u~lJjR`;uG5brSdthO2L-iUoOmHw>vU*+w%Rd>C_w2X@4x+bwT ziB;4M68}nKb#+6;ppl#poI~rH#pOxt@Ven*3>`V4Cy%ZfTh}TUjgr`)nwfR&VhlYZ zK;3W4x}a{1m~j+g&qB(@b%%?!No;A|kz#KWyQc0KG3IES^TxVy;*KPCcijXbj7M9d66w{$NjkxnG+UmQ+S&S_Oc2xZm@lTc33A_AMluwkLofS*#E)l0D zvAgRo6YG-L*B?hU?Kf1enCisbwy zum{8@#vrBs)B67rpVQF->hSB4pVmJtJf}&{C&Brsn9bNqaYMnU^-qXfPp7n1;-1jg z^;^X^3cI1e)$pvSpC!|7CaCf6Fj7c&`K#%q+{izP{HK*R6FT8W7l1`TZZ zgZQ_?(t+&|v*$>eFEuwcye$5GrodVh)*dzL1C^7QMe-^C@8;CLefjE(|>*0mx zHGC*$E9`$-3A;dHk2AJdVRyAr+La2sJV@9L3j1v-VH*{e!D$aD>>if#q{3ce&g}}j zCPevmDr{MVun!eBlcoGaVMjMpnwU>Dy56&qWu_@?D(5RuSd`NSDr_^S4N_SDT9PtK zVO6ZlaSEH3OKB%7%$-lzT!r1hQWhwzypYl^QCNSLvQl9+Wt8?Sg)QKGcPs4jD5X8D zut)OvEOCI@n4#GPc}9E8Gvo z28GcI_d{{F!f2KE7xAFNXqERD@tDGBmG_a@rZ8INeI$OTFj`-KEM8X_t*<{8yA?*O zi%-Od3Y%J-DLxT@Qy8t%KNVjo%s|?wLR>@^T<)QD`DenTu%ESNiqAw)Vd(=eZuqOn zS6F!9rNGJ*Mk|)jMMPoO1~bLyqDf)2qW+s0uCP!|CcYtVjKXMTyjP4>7_E%=iW3w@ ztJrA7z%)6MdRpQi&`x?Fx*$XAMrQ+8O-->OE2wN!{tDkDv zFCOZW*!dMZ8Vs#uF=5w>pEthW;M2A+wo3eSw~G?yog2BPljEk};d}2*#G-TzN=if9*JhU8xUg9H326*k8>djYZn2j(o-187gh7 z7~WW{bu;#^b_SlvlxVXrrSjg@CgryPqc=$iqqI_O)8(nOQtdH?QCgYy*w0dFW!iRy zQChh+o{pfE%yMmp!YHjm+rBcDR-wJ4FiNY`?pU2ltJHqY7}Z_FGr}Dz?TZ3S4AeZ= zNzOA`+kt(}*iy08ptS7kIn6t8_*`?K)?Z@Uk`_uUS82v;X>@GH1R$((fM(xAucYZ=gPFJ) zmMzW6`F(U3%fS=MUiFpbnu7959!(5tpqloU?3CcY%}CEw z+z>ls2d8|;{O#a(@_c{Zo~ciBA3LR$%9WN(#cgXlDP}oo(wkyi+exR|NxDnb+TdEJ z+M;KwtgqC^S$9dH9;mZT3}qkLCsWY2o8*)>JXHKv)WYUZ#SNT)QtkRu`s&k{=f_a` z%9+JBnSk+bh~L5snSw4%xx^Wu*rPItx*Osy9wTp}rCiKu>q%qZw#iWLrLwn3_%bN4 zTR!p7xHj#+1d7gaLtHhC$|54|J3 z)9zyq`d2JX_SJ8PlY~Ts;I-^OZ-EZz2@W`hOPPfh#L4#e!sfyp+yl?WCl8-|d z#Akr;;mz=+2rY!u5T2rW1GQ5J}8o&~<9?%kZGTaJSB}(-VYNKKlV57J|r**;wI;~Y!f?|npnEr_F zE~J|;v>FJAjl;(w{wvJ)oAr&D=d;CgwWkTqcnb-$0qy{w3h&C0_#`QHnEgH*pVy`t&*#3Xd5zbKKGighP6wy6HD4{ErqodTvUWHqC)6LNpDUgiz90SJa^#u@Yn+H&Mdh>f3t8qOmU)R-Tz08gubrN^ zQeUr~-*ltCnk{^>@k#Ep`daa6%Q&%CTvOBz_(AP^pd3{+4z*iRzF)spEXmC^ZWRx< zlpAv)e~__K%PAOz_*?no06%M;1lWzb&((@TlZ-X2;U<{A1Z(ZL>CU&;igdVfYrT`Usc1)rgfGX}+MXijFh4 zf-)KK+h$8_)t)Rl)x1-?8hP*3*5Ks6TAPkD-j_8xOMZ-7XB)T0c5aK;xc9!pJ^3~6 z)ho3po7bCO(p=J+ zdeO^9;hv`^7u3{H3VH z6(eY;N~7`%)^nw{w&--%R_&w_xSc1K3_ZuS(|EODzUvVqucg!FH3}+kc74okO{45C zP|j(--?h*9Q_F7v?Ll^Xh@tMHX3UyAjkgf)AQ_xv7=lUyB}u^$IGN zGyh`k8!fN-R_46V+NXUN`^+je|CRf9%j9-6HR@@PK-+Y;rr%c<18j*5c7Lp&G;*7( z8fCS)^VyHRz|TeU^}+dvyG@NoSp(~{Pb>X~p_*6I=t)z)UXgpa z`w?UR@O8DU^0qQ3dA8Nyq;{NU zZYz7vtLa~tyzU*tsVmL5D?bNieNDda1@;eX%UUhE!^`_2v@=D|{=BmrH)`yMo~(CdEs&mrK_8wsL&EPL!>BP40TYvqs$R zdqID$mf*(W_W+X2t@f@HT!|h zW=7#T{*^{XVZwg};KlxPxz^`$?N)Gn1;R8BLXz9^%L*v4TaMK-r)XJv^H2uivV0SfBKGr8z)qmL=S&4P^~`^YDcf$S#con7{*I_+BS@rvb62m zOwgm+F`>bT)7YujpDeD|tM#{whXaxauGT-w$Jv!O8osMqA6QA_B2--tIDFW9dX&#e z_Gv$@yf`iB!njDIQTcdUf0kUqk}H_Mg83^H|5MQk>7}lD`6s65yFLq^lKvWx;&*ry zzt4H!XMOTr`-kk+@?GCmu1l}h4;y%U`pd>?;d_v)0bY8ac1C5P$anRxqOtZ`CdF?V z{80J};{2vZ!8x*OOS-1f(>qP0=X=x4ihOUzH1p@V<$zXJQ^sd(jW5_5|K@W4&E-xr zj~H=A#y;&pElECU$O7>HGye)uF3w+&L4IR(MzyOnYXc|&_DB!nOpm;-g?9(C#W|Vj z_`RhI0sD(9087MLz%PUrOvkOq#ee~P`y)~{UlvleAYcW@!`gVnquLt4dhK6X9x+H; z8}f)|Z9QNs;_0GYyA5!Rb`RiD+CzXCqk!YJrvN8wF91%}b^uP--T<7Ty#qK~`!nEK z+9!bLYWo1^X}@K$XJ;2qk}05@qX0q@s-1^AHmKY$NwF9JTMy$rZTdlPV*_9wvSwT}R| zYhMEH!1a}M@tWoad{Zj{d`CMLaE~?-@O^C>;76?aXW9(J_i7gbM)l=@t@>{O+x1Ix zU>W^`JXl7*I3JeL{ROa$z8G+_zM>G8(WCug8U5@5u#CP7aJK$c5iFyhRtn4LpO(Wi z`rTEqj9xbomeIcgT%<3-Z)84SA_F4OR9QKQyz{ArHw;keL= zvz_5+hBFw>V%W`a8N+o9Z(+EF;nNKFF#Iz^VURR~VF|->hV2YTGn~P27QZ(+EF z;U0$VChO0zo8dZ!TNv(PC|ty&F)U$N%5W6J84PDK>}I%>;d+K!7;a^_hvB;ng~c)% zmM|=3*v@bi!x;=`GVEr!l;Jvt>ltogxRv1^hVL>IZkErml;J3bGa0VWpwz7l-({#} z5~Y;kD26i`E@il$;Z}z4GSq_1&u|pOJ;A$$Zw7KVEmivGk|!myp;42Ind*D>6}a1TQU+@lnJ?(?=P&mU^zZV2>(2~~3``1~7g!Lu zE^uSu-oQhF*8}6yZb*AOEtvlM^xHD-%6K5d1s&Wt!NJ@F-C8i?9fe>1o`bWI4rumO z^*EdpRYVBRi%kLC9y=AVx&3rNcQM6RHk<``bt}cEG*bLA<2=BNTm;uy1e-hrb8Cp_ z{t*Pbne(zNiq9(`_}6lR$JSf`xRqrVGSA>TqPJHp09+R81RTZi?kwW`X56Hpl&3)`7ZfL0QX`lbY8c{tDN6 z7HgZ?Lj0$c6Wx_}GvF=N6ffj>Nx@x+U)O#=;HOQb?N`+g0q!rSct`Q$fRD5i+{*CY zHj1wf5`3bRV2I~k zuI1E$g%mI0)VeZ?FJ$_PD8--5BX~Q*Gr5${hY)2w^FPD%6S9c%7)yS?h~kg4gg2Oe zQ#Da;Vx6b5wo>z}IqyYWy6h*;R+ha;wv_BwvPVS+J_~8G)nxyX{Y3VPG0m?aRkq#6 zVbl}E@Li2MMx%k#N4%E?=*B-C+#(+8q$U$-iWcRgJU=-g8+4Kj6i${pbm~U#G3(i;G+QBuwKzbJD?5^ za5&)6cmqhsb*-ZTkHtS7r*h-KGY~|Nt%?F7W&u<*cNDd_q_{kVV^W@)0QTE@Ju(mH_5h}-LSi9ngY5B z&!Wgf%R@wph=5X_AE12ltbhur2q@?Wh=_<A&_8R_@f7m(i1E=Ky_c(1S-&n{ht^a0p>X7(W4g7hK0Vb{za z#(QMU>=D>iX7(t%7U_08EoH`&^w%SOjNO3raXkNNW>4TrCNo~RbqmrTvF{-LG2k_` zCjqIMJp~xe>}fz}W{iqy#}1?Krkk2fEO)Nl47 z4VnWi2-^D`R`~0nkrk$>>2lKzrb*@*=Edf9<_+dS^OwvInO`)ID_LD~T}i6+%+d== zzg+s&(&n<(vQx@J{6uv#jZkn58I0LUUoCm``8^w zzstUh^n2`Kr1!HQBK>dnGo;^VFCcw@{RZiS><>sEVjm)X7|PrP>Z(NgD6=5l&SoL~ z0aK7Z#ym(LXU8Lbf-OY)L$)00kJuWdKW1x@KFNBJKE*a7eVXNv{)AnM^r!49q(5Uf zBYlRI=EQT(WGRsq^`p8E_}Lt?+TVS3%{W=pTT%Yux);!j&Z6ipx{tB@>K5XpN|u=^ zi!u?XT?+aV{ZpCKNp)m{(WvzIaNTt{!5Uij0B=WQkR3#S_thO!Pv7()|3R>dCg3v> zpM&w4gwJGr@XRczuo7~99B6DDWPAf;eFNls1EhNcWP1bc3L)1UAk`7Mjt~7^z-oBk zo3-yRXx|rW-c?hSbCwqV%jc7#JpC}?x|(2pnV@!Pys8wPVYJWjjf z@VeaIpwHzC*g4?2S(ug~xES_6R~Ch80L0HWUu+ynw)r`PUK zocIK6_MpuT+=hc*XV4nzB=COHwPFom#1VRCKz#njg+!z5M%GE`7*y>VsFBY0D z?M);i?Fn@)uoFu5cB^UaDv(Nc#5=L*vDQdty{|74&km~r5_;94)%iknN#ia{Ci+`? zB1sw{kV+)fXf~drD~>L@yIIY4rDFcxcp|2zWktT5p|wq+GkSsiY=0ot-4jXkJ0$4Y z6y4v{qGs{6Fp}vKxuzxY43$W5n$_-9x*rAe7P#Bm`qGgeJS?nc+k&aAm1SgR-h%G7 zws1TdNhJCu?I<>lE3I0_j?5@DC!5{#oj$9T7{}_hLSQJ0*I{EpzsnKyIRjS3X16OY zryHc>wBtS}%DiE#Ef8`!?IDNV=k__RKJY}y<5ZlsP{W0qY;x%&(iOX0Ec<9{WM>XLq?6Sa^mx5C8zfoS=Jhzitv;U}GS}+% zSsf5#fq>2CvOB{zYtRSgbbA7dL-B>(4*Q5W8f{!VgCGpsgNiR?Q)~gZ&tVOP?beVr z9I!eA4!_L_{43s&3oGRf*c@)JVs}IMdHpt*-){>CFl;=N=~dH&FkECwd;?1)vw_qV zYNj`l6?Ghoc8MsvM3jaf2smbQg2n=h)#dj&m4H_Xg`G}Mz~c{xgI2508VY*-R>)pg zz~S~NE-Prx;|H*Tur&}=oan$BcG=uP8?M6+h^ep=aEC%jY(dbj*9&QA1s#SQVOPLs z17*4(+QUvDIN)~!2@bhb4g)W^_Re(gN*X4AE6*rbl@hFIW!UUZ_a0sjcrU2ZSD%Mm1?FW56S2*nTcdLeBxG7YfS_ws0^^+U>Iif^N*kW(zB>urH*9t^SbBYO~v1K94W#x7j@ozdh{t z`dtbE8dOgq}Hc*u#Y{eXcPLIp$4}?hzIb6__{;=CQ3O8Wbv>Huq5PBfAF{<`R4n>s| zmrk)-kSB84T%+{q!n+JaW7S=?gxdEE{d z^rqhpi5U!r&;jQFmp%gtxZ;*makF_4O3_G`%pJV&2qGs#%G~N^R(rq>L%{=T0U2Ws zHVhZ?*<4;*z#9sIC_rV9Awfq73fuwPEabELY`zf83J0t-2F(ou3@RYNK*$fOad-kg zj{-4bw|ZbHIly?5Q$LN=Gft@vG# z@1VjEi~tyicE8Jy)eVGQE}J*t4FtVpF+i}x0>s=j!JsZ$-J;8I_b98DM~sJsVRt$( zgf$%USc6_zXr7SU1vAMBO#_%5E}sjM$rE(C10k3%5Gb%m!iv>t^VuC%4|6y$E5F0x z3Wb7U=pfwg47yz2pb~V4d=R*PN5B{M`mo|5GIG7%uoA}os0p~-HjfefkPg0w0e4=% zqF|H|a0PP{s}H-)0hYx&IbGm;ryt_V13ND43e(zI?ZJ>@^?{rM9uITEa1J;EPRNa5 z&=s;n2l`=L`ml(Okm3P}hC-OW#~F0GLcxF+CZRv%0AE>g?els#1Fviidn6fo85FsA zWtK2d;u*-|-h|rJ;Z(dVZ1Xw2VIPc07l|sabeyp6K)4vtWre&7J3&W|00c=m81Q=` z%5V?XJ{a`by$lvMs0E^yY+*au%Af&Tz~%7RAlKYhJA|Uo=61S$URVxc1?nOY@ZlX_ ziej}pJYLe;j8mpfftl_Pcz|a`vBMCBtoFDezMyense3)3Bj`S-&kydj`n@)v%>j}G zw!O?_^LPURS0H4!DgLk%i|_Q>{0j5}$$DrlAj}qor1V3bL6z9uuw<#q$=4cCG^b)f z$^tfTc{;uUn~bLJo`l*B%YZAdpqh=u6PX3f20>tlo$I#;Y*0@g(7)Z`bKC76w?FK{ z9>MN)IvjqhFW~pteJ%x(+6|(CRRnawq+tOsw3E~43fZtbQ51(QM2a?OQ+zHPR>BFr zu6ToCm`_mhZm0mO5+Zi;K|s+GV{?O5!Tv*0!l5wi1WXyY^|>7AB;>dGy-;wTkQWqW zg&Oe_I>UYxIjqoy(0vRe2Jr-)FNoca+XIbnC1S(ICG2zsJV7jzKM1K2a6^DYRk=JN z1)>Wi=*D!AVScjp08jvX5T88^wHk6OHi$)-f4;EO0ion}x!i7OHFQL}m$nCiAb|ja z^)nJM*dao%yRa}02x8=6#y}-|A*e#GpwEg`1u@#3ARHy+bi&XHI7x)~ec=G}L4bkS z{n#2|OAE>7_PA)H8J}^!YWM_A|e4uRbmnTfNgDU{JjO`u*!@8Ua|J{b40<5g{5~H9vfE|_0eTe}5-unoF9cY~ z?tsR3c|Zvy0%2Oa!KW~toFS$_YXkNSa?_=kI&)q!oq@x zfpy~dqA_;NpniKO#9Y=O5UzwF-`sZa0XC693K>sM51@b<0KlCA=mP~S40YuPS=q2( z@cFzhkS_~Zu^Dgxg&;%lJ?K&K0~+X6;s)46Ay`u(E8)?OVZ-29pNsb3AxIyuE6j}) zsYq7Gvt3ITpTGs6uO-mb#F``N^}fu~RB|~k<}FypTKY3twY#xt8C=}7ziL`Fs&HJE zhWgAzPVBV1(%3LJ#W1BrTU#9Npm-#aFQnU+M!HqhQx^6Ka#>b&m$kfg7s}}{z!B^=rSBv6X*k_wxXr>qNR@ErGRvJp|&u?D+njfQ7R2*bG$p#6eEhv4sYb^=~0t{C&6C5>f$)A7QtZFuR2n_C`+o@ zOg55?Mbe_Rua_hZIWL!`S9d{#!NV9;Sz8kFF~hShi8u;K0-|kPP2z%cFig#S!3k=1 zc|6I*)e5ykg^;L{a#uayWl zVhiLFs%h?|FL-8UGJZy{$}gj|Ci#jJ;v3W?zv2f2`SNh2JD%w0mu<=Rjv(;Xis7L? zH}>ck@klm*0dVs9P){n_#oH4U#7z96H3c}}TgX7IQD<^Rmc%>MEENcXSQ1YH5nNf) z@rc?SiFQ#DytxI}APK#aPZzq01rn6fC1FP*9FA(b0+8C~jIhATOqQ=qLKG$XfjnN) zmg!2Rvz&nWHAfrI@vh0)#;-^_aLLH8Q5wfPPaxx02LI{)z?F_TJ7;YOj}J zfK~BKyr4`1*c#6on+~ITy_Y7~Q4t7LBM<1c%i1$3GK}<+)<_x{38x_g`cg2>^B8DK z>UjaKnqC+OP7LJ|yf6@hZ%P+N4d#2nHUY9g|c=M437z~yQ9 zC8AmVMp+R^_4KFXon3~iz>*f~HbE?+-yk@gPQCOpy%QW+B@GptP^WGHQG1-uwe;Ia z#q07*QwN$&$VHbf&ctPNTxd?MsSqckig*JjV&Z~Z{ma_d!88&DLUD-v2GYdXSahlz z7xk&!6o-PRLus}I-s>ia$&Jf8I9yBHJD_usQ18P`CVuPi(zeJ@6BUDjb~mV;(V=g( zjR!_0-6lvx43X#*o#IakPMbniTm9E<&NHjSlwoVY}jCN-($I5hqOGzqe zjz`m}OsXT>D6JECq|`(sq**7`(~JtG%+k~nY;mZLME*#1LW+gKrNWIYVbNB)QR5Qo z21Bimq{-LJM-%1-r%p9SS|gN+Mtb;oq={NFe6o`dONya6(!=YZ>^fUhEd{zt)(Kb& zAtf;{>q!*}ZOGR3Wu*e)+JJEq(JBRG7)4Z_Aay89NBXof?8-BuHjek!-X}AeYW(#j0j`c7+NHC6fgQV=vLg!iiq3euv$}@r$cm>!a1#`Wt8_;!kt5`1LAgu^H%HEzH z&>6H}z7PU|M}X)h9IN_vPp^m;D~#lO!U}7GizAF&3?hRHkr5(D(JmbsoFQRuNCfPazT3H~1GgB=J zMl6YNm2jkUglZfj3fg*;bW(=1qD^Y7poZfpB9CH)RMV(M+=`K+D&j8q4xNlYv2OW2 zwpcy=lGFq3uf^T-6j*Wkrdt$hQd3+2n!Me_cyrQ;Ah$(*!kA+7tmtECAv`#dM81jE zWBwWvLi8>cN9_DW3CTmL>}83uKFj9_zGNg6*`icD$uv30r^@eHmK3fbjpkr2Xjq9R zdSe2KMVipin#2$$@{rqG(~)F`j1*CuH*kkE(}|5}CbLXf?3}|15TMRr>M$5I)FoeZ z$Tx@=>|(*t%X-K_qZiK0K&o!_yS5{sv#m(tYK7(0TOf4l%?KH_LyggPHg0ny zLG%JKA%?_^+c7=vK>_;}l;V*zexiU$SY8)>3QaK#--L?tIyao2Qw(JH` z8`_9cxM_G(fX$oIcUu+-jqBTliwF{pQQ>eoLsUf5{Cm0X2<1&Hfv)#<26@27)F~^7rSBBcm+v_Xnt5 zD&MLoHLxbo1NPndR>BI`LMTBE*|xTJ5l_h%2aXLw7%h&#e|qSurrDy%hDZzFY|AD@ zDFvEC98-yVi&oHTNHbNqB-5lj7pe(pMkat1yogKLgCWASpcLE*r=1KwMb!yvmLCNn zE0>-Vj38MfJ(5F>8wu@Xv(ex-p0^W0DdjSNSb&pJ?Dcr4 z?+61JIv&!P$Eh1`ZX_qa#36D-VL+BvCIz}EX^iG8ik*q@dy7`clhA?#9oC$}F%Ka~ zvp_U-3x5&Hvt)Ei{}F+f%_B1ykHCGI!68|O(axbco=C(qu(y)24D+cOiFCPV=exR8 zPm7w~fJ230)kM+cKFrq>G(|y0`Pq+WAlW$j8B(K)Ne(F$bc};b{!l|v^duU6|SP%n<3q6LNdpSi_+d9dj8TjNhL&yLk z{3ckP6c8@RQ>%&;FD7*Ackn~}5pEk^x2{jKyR;!R51C=<3mvDNC5)6&SZy>71h&cF z2dP7Z0TY0vb$)S%5Kv=iV-~fTHu~q!ZWszA&4CCSAq;yHku<~^xl4F^tvbKl*t=_o z5g9TlxQbe`zHo;;@+^Gh<&5x6ZXQ@&PD2V}^@KUPj2~Kv5@Dst67E@-7ku8Do&>yk zd7TmZt7r{hRnnzJYc~j=U14WZyXfYKVWe2z<8CO_NL!GLpO;x_ z4tfKflOtZ+E97rjTfWi6`9llJb2p89MaJVa1$C zL&=zMQw#sUmNy755>;9$(Ya=eh=+508RNY;rA%kF0)iSR1a#gcg2ghF6Wto!!Y!&S zqHxWUn0xIu=0wgr16L*M|#y|X<0IatuY$>*!Urbd~B9+N2t|;0JI$7*K%T; zmp_Q769|C=0)y6q&=V4Y)5Zgdp;hY)%|giy@pLLlzMo=P8oIjxwsvcG5fEoC#k!XJ z3R-|sn(ZwFv^1l1Z-m0wblw76TN}KY^mrO)tpI#KAizGgMeQVP$?HtPb#nyAq}hU^ z?#M>bR%3A)$N+jnk5U#xsA2(#OZaGflO(d5Y}H*8I-eu zkKs7z{4|(1<0Nk=%h1e3HBiWR{ZXJv*qPj;%w@G;aHs=_rXsZx6}<^-G#8yaQ|`Sk$Ocw8$^xp07^K zva6r@k~BU1xQ8alh24j+9xX!zl@>;x^n!&!LU^v1Beu|sCTqA}&HL75DXk997;y%S z1Uf)IV9fPF5>_fKD%1?IB*ie?YL}L-;IzUbgYL}hCw?pEcVSx>++VC*v%T}}WawiE zvCd+?2)oYb3xffqiWa0=5GRnYVl@%GLng~o41N>5lBx@7mi4e>@W!0Ec!x}sb>Y1- z-FW9r25-{Yh+G1>6s~)4O?P#oT_4Kk;*B~A{&|rTX&mpRQCSlG#qsG!c@%d?aD`K9 zTnwY+VF<|EN`xhPwL4IXwWR8fCn6aEwDsX6yix_(E0CGPW~T*N5wN5En7({w5_c zb`QvymXaOZ3qp#sGXNQ4j&&02{WP$~DpG(2i?$QyB6f^|^i#kgNsugrV-&gWU64E} zV16CuN@Cb3rHrc-g}7zv=or`=7)a2kFb42nA)sLEKe^F}#)vM3Y5;aCNEJYEr1pHw zp{k`9*zCdxqMQUL3D6FF=$pzh*9jzAJ5XoE6)8C`=T93QijkCHAq1g(e?E+15a0Fs zn7zPw5^r?e7vrtOOXikxOm-6{cfu{B(MsVwBH%-TNm4SDOJO#}unE-!e2Uh_wk&t` z=o1_b7^7w3;mX{#3oIqUkOD7?r6saX0o?_l9ZFh;z6ofO#8gK{5`iUv(kD>>D4v9rlMvV^vrL#= z>rvB>yl#l)rAqG3|BUJF2FSDJMB9NDLQxd|2u<*rV#>t6gia7*?#BOw$?X)(IyoT~ zuXOAM*kAZh09ylQf&?xOjFO?iO@^IWFQYN@o^ges*aT>ptat+`Q;Pv8?H!i8Y=7f& zBtY{ZO_l%)w(P}ZG@~cCWq$)(Ox6qoD-UoIY(_$oEE_=v7w>O?jo2LqPF{|Snsxx$ z0gy@6v)m=0KBxr%@sFf-*-377t7S zOu{Jb_f_QZ&;sWyGBCOTKFeJ{`l5fb8iCA!or0Jr5wYKuyRA=|M1}x!gpPIMD+wfF zJj>UBdwKRhRTt9~#CX`bSc`)^n$@{&e-le_@QoNA1>EVyCz#jhxi9bU=@?~9Apzxq znk#`OUER%h4`RPT=CM$VwAYmzB9?n(e@~*=nn<7vHP0?iAunEsw$CFaclZCEN#=ph zTeu`@g|6t~+Jm+^EH^Ovltyw?7`4T&YulnAN zFuv~qC!kCq6MZtY?I9u&TOUEmH;hinyJkY{JD??qgm-bikYy&A?c~tyMw-Mw?bPL@ z(IFp+2Mbp{VCZ?N?0K$m+TdUkqtRK9V0{wZX=cqs4^-2Hq?Nm5HE2@Qy;1l$IY0V&ZKzB3?;Jc;fb zlTmP&aiGy9nFNDQeEW4^>Ww`Jy4}fn*l2XCdz5w;yrMqQ>4m^$!0cq_3L!u&cEO&r z*xrCT43No2KAaGWZ)JQeLDEO4HrvpIDLb8+%0k98cVhjGM zEU#2HDL5}QKneh)Z8sfj6aDQIpXTneiUdG<+2zK8gEW~0QVg_52c@LU=^&SEMV8wq zTfMze>O(;zbxx<;bjU-;4l2wn39jidu`}vJn=~dwa@1(G2;*v>90~2sl!gO2)KcUI zSG8^(uw|pmtX;EEPRLsutX}V1>cE|BL`IW2d#197flxuj2=n(7Jf}Bm3?XjG03$g^ z)PghDIm7@0C3Kok?q^~PvUG{oh_|!gaVlBQ*x92m%dX)}oGuE2+O5%Nkd0tuY?=Yl zyp%?4-yBKouB_Q9SYzloluMqS*}EeVwvpm?efukn?+w~olB%U`E~yi8&>3k%cxXTm z(|2aD@5RA{aT2?3uo+2085P9Awu}W@K(sQ*`tx#0ROSE|lP91|URjOspQAevogi z2j66M<0O2ai;~?`{#0Pfk3N$G9qp${V0Hpmr0_|gQw#x# zKWa(F*0p;sp@$m#G~}+jfOZkQF~kiC^t-cg%UvV3-Qmyt$kj3jLaWfCnfB`upf={z zKE9X~MMip;A_$E~Ci~r^Ai$wt;h0$4NFp%#xD0ayZBn4B$~3I%1d8j8K9a4~LP z)DfljW63G{8uVGx$kgitUWfmeDXX8_ao~bq6m4Y2Zb`7;w@sHxdM7f2Z zY7zugOYpSdn=Bu36~cD_*K|4|!oV$PK`_K|P5N{bzU4;4!ovJs+Kp3WB|#(loXzJu za|jX_q9=*AMqWn(Q=)h|>U1=UdcC#*4pr@Z+%*r!^FoCSZ?_S&QLhl{OaPbm)Bn+|i@0DZxb1WkcKez$IeciC1Jy zn%E$>0z;jcV^2&(x~y$P5|59E(eRDTPOp{zi?^trK79ek*e7zNW7H$V2A80o}K7$roOwCfQjOmQM4hL_}RfuIoW={|BpQ!N=o z)F-jK1>!&_&^RNRh89lg@~O@dAj4)!XiXu%|j0!G%U3 zt(v;qb+cgC)=+>)a%1<+1ZJ?1X`NgJ>r~7Xmr_Y?%qReqsEy>B2-qTT#87htksXDo z*j)=L3WAZl0wQ0rFQ9=*gYV(wr!Qg4u#@w#CFsKk%c>PSpJi+XYeMcMI8m`ePBtO#yc4@fAxbO=1QmW} z3s-`=*r5Hlw8`k4fzT*-%!DAZwK7hYtUXesdLMM!MXO)@ewv6xmz7)7)WZs`2LYd~ zx8>`X4}nFtu;*I@xcx|w(B3nMZ`ucU<;Qa5Tl#@?T5h~T2))wj3Pr)u>}0P_-WJxn zeGzJ@O)FC2muTfnrh-(+ts>lf%diYGw3eyOz}e8}Hk;79fQ<0j&zjL6l_b!Q9Ah=E z+YKYp!|@~4eKMm20FQW-p8O^txN16^pmR-n}0#Ubr=E1S~_nPP1{INPJ3RG?J@neT{x4 zod)24Jwo;&_%gsbU8iKa7pC$g4<;C!_(@3B#S9bP&ErffrrPVcF*r1xL|BKDDT?cu^SZTF}!Y zdOPG1ku4#T3=euVgk%>5%?mF)MF7&`(B1u95)qM0ua-2EbY3GdF7+kBN+>4jC{T>$ zFC(4LQW8I8;CeJOj&w44@C%oPARoFgx^&P@I*H3-rkyEoREzP1+c}J$=?Q&-3xb;< zE`-5?*%E<}Qrj6MMBL&KMwd8jwqPeR`gA~wTFG#P{(3z9AHlz-PDo^1>33OPa2ksDA$sI>OKM-q2y-;`|fMrAy;hOp)z)6A; zqX^a7xEo^-VTygq?({DYiR4^%HWOWhNcsb+3lzMfZ99rHmJ|gf0EN$C2f=t9dCNDX2TlDFAVGjuTpo<#8-A3vXQx`i@OMZ(ZEeYa%x!a|| zjTZeXPK7%cS|klFDFn+oY;!=Qy*FTyUZ5w<$fhMtqs!5`*dowwg>)K~M##W`0TIA1 za3P{GLs$hPLSlWuouKs z#Wsv4O1LKZDeUkda-=0YIgV9;Ec8CfV?kp2xVug``aLVqH?5!;pTvZCJXk^?#SNW4 zk#$3)Duf9M0->&S)JVk1r7#T`l)reYjGE}fOGBxU+W$A8il$FXBuyV9>PT7}^)`v5 zcF-Oznz5Z&WZ713!gdGIc?umk%1Dz699x9w7S6YH?kXSp{^Sup)F#+-IxU8*V)Qta z+jdTs@j_&YEyDkHWbF@%+*MTP>C$Mgk^m5jvzVb**fnWoGNlXScZiX6X+ugk1(`&` zU9zF^aIjbp!z5IqFaM9h&;1T+yNI{9ff<32isc8ufwEZNxRfq;sXH|GP%snOLPK|%#Cs&-jlz^TlUmB1>u|+@ooViAIRyvw zjEtY%^(n}sMLH-U0E>sd4EJzJtdbDecY9M)?w4{pAPf!NG8g(jgbzbF z097sMmI6&les@43OXGdGJ*t~n(nBR=p_Fp^HhcIwjEn#&y-j0?mC3QX)0au^yQhAH zBSSptLv9|j8Ro(|rZ-^HA+$VQTna%-&N{YIa+VOWeIVC9h|E4LL?ge4UX@M9apJ*~ zHBcW*(4SBrbaHhVM=+7CIAXJ-^}g?wA|Tlq@vsA+K5_4%CU=>57J=MateQ6Eq%P3= zkcSWV1Se##i5HEbzmgPVEqf2K@II(mL+z22@r$q$%V3PO;jQkvEJ$r8y|a@x{CA8r4H2ikZDGTd|~#}|n{ z+NBC>N6K4y9Ip3I3Wx&HO}Y090TKJoV)i|G_mi-YNd(alvU4L)>oC0VY7}xTosa^3X-hr<;?p#x8@TCsNIog|Z+ zd`m_bJj*>%2!z|Y@0w1G|($S4p~mTRNCREFwdNiKOO*aRY7(xJwP3ASF&j_Ag% z#dVMlA9^fCs3GPt9?un`mqc{o>8a8C1TLK|`jF=)!mV9&>o`zi1WN`x1~~|Yx6`VV z6)zs*704OMP|y!y^d0i(d)PfYf)V5I?!Cecm1YkKwLImCLpDKq#gSn2TGMu>*x?4r zQ!*)~lVblFk+&DFrU;kVwTUdonv0G5$eaFs?P@pa@f`y5BHC%!03O-)l$=PbBebG$ zcT2HUe9cDgPkL%a01T}vxyz-;L-sn{iKL@c1_TtN1Q8e@d)XaLV#=Qg682=Q*sftu z?AUY&3m09NV8f)FaqCD&JYws(YlD)DhBgC6N4n4la?2MhDtUx;pdb6{euP5s$X~d# zWh8#TMrRY+JPLkq!m8@xN;sqS2Y(B_M5Nd#Dvkir{aSLrD-z$>g`Qp+7c3_D%5kIsH<=!i_q}gmqze6({7OB1$ZEA?bZWyVyg0d>S68 zQ9nL&a5C7UP20rlytp#f2}DqxK#s9apv08>cj459#kFfw7xb;4ISRQ<{3~LZ3y~t$ zSnPs_6PA8@sK)?MnQlV1!fqhBAWUD{43dc>A66T#PKO_z5PWjvy!mM*^O}?v^-B(N zL3=Sx_sEB1TT#27kGU_lZnQ6up+_uoIy(i7HHV!HYMukiSCD$~X=A6cqu8mS+dZ#8 zk{u3~ynb(nIC3vR*!dIy;$VwThc@uBkQ&9dKD1U+o{A@z1Vt1(RwqWJsEckcDa3=l zq-RKP_2+3p*JxGR=7!F@iC(3hs_*}F**(;!CIf}&9&tWS8-0CiMsU;NGf6=~xrN&@ z;YbljAYxwh`~y+B@cj|3lQV=&E3#1qkBJSQ)NeYK>T+{urXlI^p(p%9&-clvZ_&c@ zNGg*yrn$-Oe{t`*F7Jf`nghs5{*rl1Z)YOdi>(^H>67LuUN1+{V$ye3EQ(R=uSE;G zkG4J3GgJ{{Y~da0yKJYvxagJ}+>y`s_Vuz-i^)`3VnO^KGWGRzSzBf?n`&z*Yv!d* zJUxvUo6Aw$kb8!I4R~> z&oI~4PN?riT0Ws6j;{)gH=d0*l}%{qHq}<)9<-r?a?zNV^vV*tkwzkjQC7-K=Gsbz z(XPh-(hBMpR|A`CQG>o&X)XPgF^srEwfWud8M;x27i3y_FDD@!V?FyR}~O=ZL3gs>@-Dp2r88Fh@&0Tbp-Il>%`HJ(uc#;mlk=>xZn8_&jAN-OJ1D(lKBtC&fG zTg8A_(L=*HQ|UB@o+KdCSZS51;c%>HWi4i0dssz9E$V2=w&6bj*v2o#nut`c;5NCq z+sc?3Fw-*T&I4wrOc8`|9^jhL(2uI>2@M1Hn8fYXmU7@8e`qY)Z9_F^LaR262O6Ne z0pc`fp2qk}K2tyNJ=|snot0G(m_#=Xxy>em8);>gNn~&{U5_1SDw)Q{O=I*Achu)D zs{}eOrVN%GNSshnR-e0vliL*3e9wf-2Wo4^nE(;4rm?BhSV@(sjF64WY73$Bd$_T( zavV-p#Y$*JW3g(yg!;hJna82)`hiElEDT>jag`wKDPu4P(Xt9;NX=?%&B#vCvURM~ zL|HKl!Y+-7231-E0_S2=6$lzLsj9|Q2wTJ&Aau|QXup2oc~BF`dI}cUTw6ZQq|Idt zdYf9t*-3EYwrWh5@OTU6TLzNIZIg>Pg)mAiiJP#%&+~N0?24*}+)E9)SIy@7-0Kaw zH*xQsT07BNq*Kc{cfBfP!mDF|pN4_gaZ6PmQ-W}|7-(dQfgpHZ_KZ0bAc8KYjA13F zaR8x~n8jRMpL-v?KefzKQE32e7+h1!LKO{W%oU_H#Y~xDfD7u-CJ0!y2{q*2F%g&E z2?_^uu~N|oN=TrAUtTnuxjYj0V+E>+$Pk;FyNsw2chlD`;tRc0VsU5!AO zW58`_EE(He+c2dVZ)1JXupu{4TM3koXX7Af(G#vqDonLA3A4s-M(Cxgf_P9!d1OfB z)nbvV8wSwT7Kq0Iz{I6wZNtDAl5#{;111`M0K#)iEzgaiMnW9cPON|i;NWjTz5M?s zp}PTyLqR3Dt(J(uUO{q}kB;xnRM#+2L;rJI3>920p@_pl;}6z1Sg@qxP5?E4&)-SL z@h&Ef%ku|slV1|fEn7GRqBjnBFEYfiz&&Aapazq#0A#pPj*1pw8j#ukMrE;@ic+GH0n%av6F7pVa`NDK;Zi_o`rOr+B(OX{_jb`x zA$_P2^@;Af1ZcChAx@>TQ|X2^lv^_vgJCE>9+xwNGsapV)*7YQEU{%SzBJt$QBx806}PRxWi0trILnSDaYnlFQ+oSwjsrX;N;3vGk+hJ82X$chGNX>$z_GPZu;#D;;Du>Phr44hU! z5UC$f`Tq!)r_e!V!d4)mHh3Ziu5B1x30{NsFt`##Q9r0sIv~=>*osPYT{EVdItBxp z$5ryQil;R^9mCUVo{p`cHfUR4Q3_}W;sm?+FX%N6dL@eH6%c__FzG5Y#BWt;Ip9Z$ z`G^W4TbLygvM@LTAcZb7SCa7012YCD5?bNEuwsy@B7(tfU_xNgTsw}Ci7%*b`l>Qd zB_nvCA5t8>zQeyD>T1nXxf`5~kYv!Sj%xT`{Jz!2*GX|5#TaNh*BL*1qS{ zH^~Q~l5zvI_`Fhx+xegeE^c{4K_fnmMtEOUiWxec3{KP7Dw5^Aw0_M|6;(SQmrEuw z^5ACJnVe+@z_rG%PCeW(1pz(R6Bvu@4FUZ)U26!&7hUj{^=n}dXwVSVkAei_z_H^h zYP7p@ALBOk#lJBsNk`HWBX>p(xDdY>OJ6^DSq-!o*J`)9>Ya#31gKIL6sF1C1%oc(1#7#%BRj8|L>>gymVrv z^&!uyZLX!x+*WwDSZR*2uV9;BZbpLZ6)iq1cF5TJo7g@7yz~w8=Q}T$)_2S$FK_nz zaO!jB`_=DRrmj6{!4*HaT%C5|*B&|Upb3Av=eS$zt+!P_Yk%x7YiD%MxpLAUtvBEH zK+V>QxktQk_Wh|J)qQ-@m!A8T^LI zm8ZsjJL$U6%YR*e9L_5SwCveRy-TEw@f-QpEsGXev2T&Z5C2?F+6bpH%6Z}DVg?%E37#eR;E@ILa6yiht z*fV*7WAGr+NfiA6t$a9-0-eNzk@N$$jqubiq~~~&a3zxaE(=H1F*w7O&qR`2j9yA9 z9FNDKUOJKIATMGjj?p??yEiV{ow-=a3!K}!HzVv1CvYjGC@Tg3vvP91rdc`pIXmf# z;zRh?23Af_ldWgv;(a8zq6ZO6>E#3E>rjq%v_fbgqGHPhqRZ*^BvHn{vf>LZ#k)$z z>W?|1iZ1xj^n1~`qG!AtzkaB=yTG zdca>qB>-}IA@Nx8J34eUmu3^`bctSgM9y9PH{K7TpE)3(aMDm%E?%gDFM6yQlP1V2 zWqi_DnIS^15~r%<)h-vWTbV>Jydf{C_$hfk()`GgD%v;zBH&R3t(OyrCs{eUbYt{I zY&@|SMZP;&UPxafAEt?j0MWaCR7Dz0e-p4V{KAzy{q(5MJ?3v{;cu^sp3CpAS(_i$A z?}4{)5B#kYBgAW$cqA)M^H7y=^33uVz9H8HQMZdX0oqj*9=Z12R z7s4RqIfc>hzh{^B#bZOc^YwXrnveM9-YtaV|H2b~2GjGCd=L2Xg_spvYm)XM*cpZ1 z1F=;Z`eJ#5Q;y)=*YB0jeWMV-|HRkIuQ7rspFWW|ls<5BLzB2mUF8&y0TZV0Zmf#`hi*HpshAA=`Te)Afy}+yyQDnXKB~*rG;z z)A4M7<8n3K9nWOqsbnT!sF(S&*>t?UH>)0PNvhdQHj<1*(y^m0tJE~zGT+vy(7&TC zf!;*6H?7W3s=e8CByqH5d2f3n9$l>Vx2D#s$@$T!yWMK<=!nK_u~^J$onUG;k84>U z??F%Tj(9YZMRz81d1VD6IVh^R9N!3ME-gnmow?jh#T2WGZywV*MtmcHp#-r%CFKo= z<1>X?Z=t3X6KgJ?qIEU}t+l8diY?Wm?ReoWI4jxFIur zn|LfUYoPd6#H7@-(uTtg(asHrBW3{MJv_Lv7Lk|R$`J)eQBMj&acU8^!Gm7uJf9jK zKDDd@K^XX|#GtjMh;c$-qKLEQG4QnrkHK1qFiR$cnm3QMaSETCb@+*itTA z6%1Q%K{TegTPvT;DiA+fP$c?Ah&&>G5WR_@CB!d+nlNDs5JjZQ->WG=Ph@L(u-&<3t!929w3I}XbxD+{X1MZ}Fx!0i5xfGf}xSufb5o-&)IFyI@bVNyUIVVpoUUpqQbb-%L5MCev<*S20}&!5%7Pxi*0p04ib}6F zk28<4P}nNbA`vwY!m74V7@3Hg9m~hjE<}*GzyVf_Y!-iFU>1V5aamc4%fl&| zf-5tx+)_1*a6zlSty0UU5-MX(}1o7*%^nWVd#uQ+*i|+EL65W5=1;F>a^?d!xguSlx=%?s8fi z+uQ9hanfPE~O`Bkk=Tm!rdObGN&qR!1bp7~=1%4fkWcQP85MH^k}o zgj(8~?o}BUjh@Friob!gO>CgAIUY@?GO3PiV^d5`W}(`eQ!zEsxG0lKu2$Q*7RofX zs+nxYpq%C_ip`afQmYSi1|^twEDSBKXf^>nx$ zZl|I;y>4gJVkH)?FbBXtckm?*Pj8E#>zC zm9x-eW=2LrrXAeg!RoRJtdX=I$lDv1P1@Rjg1GY9xbAgx$m%AHBs=ysgET zNLbSG&aQ06l2$X=fv7Qb&~9R-w&%-p%1@oZObdt)@!J=eDhUOQiKZiK$) zM55U^<{3|`QMzXiX2iEr-L#dOqi)QC^vP2=2h*DqOJ(5`M2t1kPv?9$Q|>{%CrUJ`2hsCfm* zT8CJKHihS>sZZWnvz`*N#HI9&rLOXQP?|c-u~Cwzx?R#@6Y~DdwA1xUw`@i ziqB3vq~g!rAAj}D-*0Q5@0|Hc`SriLZNgViT`_y%p^I1k;<9$nrKxw{O9$eYyThk1 z_}b6!G5_fKQ)gA1pF8A+Ip3VyS@HU}w*Rr?NY}H6Jb6^+H&6cI!K;rsa^7>BzFGa@ z1@E)R54!h?m1~clu73B|-Rq~Z7q41NFpR(Go3}Aj^K$YfU4&2NkKup1m3w)pntVQZ zM+(DFtuS^u>Ml3bp@@y6#PGMGCD_t9b=%)2R!k3G`;T!|&j;t9OMT33o0~~T=k5~H z=cd}%&DC_qT*Dy6b8N!0g< z_VEbx1pXpDz5IKlQ(Skd$(V|ttV*`yH+%7?CZk%tXctM~w}SBpy#%GoSfAPsZH8ch z9syWSS1O5Nd%N4I7qsgYa7McMB{SByZQv(OAbG}m(s+R~{x-!0{2QHO+-MsVP#5Nz zjr019Ht$StJHL)>673_s*{-&1T*Df{C&r6pMF;KibhZl$USJjdtrzp@gmz8pXku!2 zB%WU;KEi=y-($eUiGLE_%vabq_aWnKet0>xTZqq^-ywW<1JpDaT`qsaMw5njK)-rOPp*l#B+7>k>Cp{(eu3Z^`db0?mNDaRiR*9O z(w~12@9v@(K~j`AK}=8R(HrwbjfKyYUO-v+?k`y@pLw+)EQ6j0vj98tkx2R#4Tcpt zI6o(P3?+#NQI_JHzepbS!yl2Q@F0psr=RLJ{-hf92D!;Ti~b}|gB%|;AMw+^B0QSf z4ez%RcqIIZUN3#`+WyvBWA{bHGt&+g9$Hn7e9)Y;JEC;TnR(s*WDPq1?x0??2++q;jalz z;4ZxvqC5&36Ldq*GSV{wjGe{jyi99JbV75M>qS>$<%f^Ir|YB7eL0(ixi81q6bRl6 zp2-@pU5q9yqtFCnUuDM*>u>1l7hijNODg>;1-+EB5q!~(D<^1!p4g1wim+wHJ0a;e z|GWrIaiA7YQG#lmyuKaf^n&{i+-E~+JFcQ=?LcjeNDlQl?Z&#$v!e72YCEt@uWla= zK9Vu}?eAd|xCZv%vHNYr0|WgBVL+J$V9aKw49=QfKIX{t7oPt?jj6)Cb#T@=6pb~T zOx8N3rhLrW^B0=bl2Ws&j47vrrWzGVB+zxcvg)>UJ(!Oi2Inbm)AHu%O5*4r<+>!+vv@}sSTHRmaVyTM@Y`lbUSJF(~YQUPR0n+EJ)ykOil9i?9 zx~LpqwHj6`wtLxB(mGD5rNWBw@N31oQ^}Zhnlgn-s>V;q?{AD=FzYPkvs7O)e!8(9 zzAJ4LX;~idS#VZuRi+(WW3wxEtIO(f*lnJZap}ONL%US6p9p*!{3Rp6uMC<#V?-3z zu4K?uhqX3UnFmcK_S~!wswS_x|BU;~ea&vqFP=MU_QsPh`$s_i!~5Gm2v2y{d)wff z*4OWO>9WsleEmezgZ3)h2OH17s{LH0?X@57xN^hMV~@M|zb|>o{Ll9$ef)ANdUoQ8 zKV5szcdz^N+RcBl^?v{RFI|$dufFK72Sx7x;o^VY6F7Z~?dXZ|%TvDA3$JPY?SqN4 z4uAE*x~Ye~bM~}pcUr$X;oiC5>^|w_e@qU)bKi$|H&0kr+i1EfI@#)9+nWBbZ}k0Z z{pshdyXnz)wjWb=rf=rT*Pp+(Z`qwsKY9MoZ=U*cZqRJ~XGhoXZx~Z?;$Nn&==dM? z{XY-Hm!AETa}K?0#fR?A>zV@(eCt!yTS&u3ltr^RbcsF?$ ztP_=ksCn6VA|%CXJIbjjPK1SUs175jatAF;#$I1u_Uz!d4|cmhb5HlpKkhYe5yMWW zVU?z>Cu|L!A0USte3yNFeU07uSPybx_N+Y^1F0D37$i&-+(yY9#XU#y zG@@RK$a$Mgr7M*d7Akwrb z^|xbRKKa5K?@t-`);~_!@UOqTwCr!GCBGd1r;dM}`nl}j;2&qrJLbFFDjvFUW^BkJ*+S^QAe6-b^zb9S{ zUv$>GU;X=#rw{x0FW*~c<)PJT~qn==Sp9l@kFLKk}|jbu-GJ=zncrddqju z+5We$S1mYV;L@45&a%FB>iy6D&%`G?pICIuVO!olHgojy>6u^U?s(z+w-+69@8sm+ zhaURFRd4p+d+m`Y9yM|1@okTud;gE-o&U@qH_xtlV&=(LJ+x!?Kl@gHwB3Ae=^OuZ z>q8fP@Xcj+_sx82-H~ry+S0uJzPjs9s+jzg^8Pa`qA{gp(vqL78~d}=7ytf+N4|FG z_a1e>4qSjM>@RPwyURX47>ZE1mzxu;Z-uwD9PuzI+OaIt#%@n6;W%Gg`Jf;j*Y*Gfx+JzdZiqu~EbFMi{h7gM~aN#E+UJ=$r zELk#sw$8yTQmL#Z0Qwf8xT?hm2ScFjdYzSXcyrc+R{L-q><)^Nw2F=4& zf|*nT-b6<{_no)@ksddtaoY>YZx4=ZcHIB&y=!J%=Rfqw^>3cM{M+9x_Z(8%bpPkK zkDd0Cd;Q}LFI2zndGzY?JAUYW-gJ=F|Lo?P{@4Yd`^wtG6Ssf8>1%Ixo&NJzu4%ce z>gesazj(`0w{048`!BCJ>BnmiDSNYH!yjxbKHD(&jqg-0|LNVq`%Zh|2aP4Y-|2eq z$?o@#IraL9e+}RN8&B-kWX!qoTU(=bbDll^%OAe>az)Mar}p32H2aO32e*#zd+;ms z-}>maqfQ<-y?NEFZ){5crs0_TnofUV$Bw{d=e&64U1y$u=!*;P{NibU*u3oAL*Bi9 z?n%G9^w>GK+1EUF--3VHp1r$d{+)N-e!1s!KfgA2^!rO!T{gpc#CC5o_W73kzgD+x z@?qyb`PchP&cFDBwzq$_;-N2o<$~`&JR^HV+oW0dJ~eZe=ZLGki(EfF>(0w>n{wDq zw{-kDGJV~vvzo4LyYRP1oc8RD#S2#a;GWgT9bWSGGn-DC`}|?A^_*6BVz}?_5812V zztue0_Unfy-2K3z&#heihWGlqHxFz2{-o~)&kFtSk?rYCze&Gw_$v>EuYT;UN2jd* z^*I;+xw%QX={sL~<2V`qoWncjkV7QTxWW zyXKzz%hg{y^`X95v)J_`qIB%amV+=TN79P{5QY2@Qc+_CGLPqd{Y@$K1Q?jCYVZL zj4^`_EUJtq=WjU3Tsn4I6+A5TcA5b5Db*zI>q@Dc^Od^1>@QPFpaKfiTzbwiX6vPa z?;TXO^wmG!^n~@9!!|pVlj)A>rO-smvaQWq7oXpxX(4E<;cAZSIGi-bdZR)Ufp5XJ zVAi~{Yg6oPHXB!Vr%UAqWw%0Et}K<;PV|oIZh5|HchmTHXJGMSSp&C+mnuWN7DV#o=js`wp%$q-+@_iOtV?08XOC4 z+(ARmq9`_=ZPp4kglsn%hVwPm22P5chA4^s^7HsAJX{j3)#-kTvL5T{j1T- zul8SY_RssrUiygI)_C-S54WeE=|1OQ4<7f2svjTw&Zbd$+mA0R|CZ^tv=!~= zZ=V`h-<$dMPl;7Dq{h$XUk$c|$ zpT`d^eef0E6ScGc^0GSj&sYBK`ctoXf&Jq8@B=5kcjb*^7B3ukb#D64*zCvdyynK^ zLVeSmkN^A|-?(nmrqBFi;g;#&`RIhha_@ir!-v-2xA@B6{;7B4A%Fg(`|AEli~s$L zyASK?{r&C#_~#e?RGs@{{Mg(7sq83S@}*Z^>FthQHvgGxS1n!kP;T{SuHRU1o3ZIF zU)7z*eRT6v-#qP+>o2@!^%<*{E(|^F|IsxYPN~W*T>o+Zb&ovI-M#KdD>CD2HZ6bJ zI(SHpGI+=sYyp*lEuXgH8gUnB*qCk|xJ`io()NX8N~~k^hCDW^*z4)r)@o}l>`(oA zf-+aXvDEsRQj7JrZ@;_!t&dJQ=z+Cs@A*#CHH*&s=>6Z{?|$Hk@BdfussIZse#7l! ztq5J-dQh%mxWDfDLvoWw;%Ot>VRKeGXky!1E}8Spt^YpSWPk3;)~jnT{z>OT??WHI zeyj4EL+1D0edZejN1RplyRnbf*KB)N`P)Zp=gz!+@sqjUDes@y_TE#Sr(U}G*29mR z_?HWha-VqFdG51(7aw%%me>DZcV`|C)%X8#Gj_6N8_H71sG&PE_CjQd z>@!i;Fla1gEFt^QBC;>ZHujH6p-^N`MG`7owotYrB@?pzE@}Dn>G%EqzK_T6`}lkx z-}&P{=A60r+_`7YIj`4wzR$grwt$r4dBGg!06jzxJ0Xw~YWv|%aj2!HKmvc)7jii- zyP|whli5P9n~aE3&BdWUezvRG_0;=jPdvER%@0GI5^2^unS7FETtlCm>yzrr9#J*A z6J;+a(jz;J)wvG&9b8MF8sg`6b`>hs_KQ9+bx)f9X!k|&K>T1%M@HUoRb_S3R3uy8 zb3D#+2YYtYnmIOYhd&hRl#-nl7Nf`AgQh(Er;AHkNW5GuwcYa5?m_e>L$E(O96?<0eS*@ zVbG8>{NOT>ZgKp&yQE1o7>ou3D&0S~=nXF8|8J>*J%H%OrBQPV{HTGSzVQ~70k)_N zctZksD+LNI{gujW7=W+I|E?bhwDAAf+P5RxqEa6(-SZxBL9$wlYnNB@ywO{Pn`D;l zuRbi|l#gL(6K(8LqhxFlc#7RL<2ajgwA}?Cf5uLD+-JGOTp}MwL-Elf_NeiR3VN5>QFhHIIRQ;(NIV2x z_@cqej1|FK*r_Bg;Td6)WK%+Jr!w*!YScGme0a-eHsW*T`WqfLn{@2XLONm1GL2lc z1~B$1blZ}w^0oeul=KF5KEBKK;Spcrl9atp))Z)K^Ph7d_nHzMT=-Hd8a&TS9E&Vt z{pfF%VDG2Dd}-HiM4dwiiWY*^U8yIyV}cZiAY*gvsoUc`QfsXdsmudwRSAhK>O+m1 zkJ>m&2dzJ!i@JPF-hy^EJYSDt3KLkrUcvDkdRTubrPNC~dIgpgZQk$fRe02fEbTJv zL>GkX)ZNQ|{I0g2H`T5%`^4f`?1kocfpcho1eJ+ou2^r$Y|NqOd@vgEHk#+LMHUbM#58h`2TaH5?AkBh*{ z5oHwGQCH~I@zfMdi$LZz1CAnW{D+o~tlAI6po>EvynF4QFC|v4YB#2h6kxog=$K0E z#Xsub3YJ%#*Rsp2wQNjuBhs0Fv-aBHIH>WHk+->ql|7(GWee;k^-r$1aShl$)c=zo z&n)1!q_VQL4E^-xnSH?yj11qDJ7B$GX@zKx1112LWK1%=p#Q(A+%MSa>%B)}DBwqr z1ruPO1-D?|1mH-CO;hgj&D4UX{3KunQs*ra2byxje|oNOzWo1owqIcs&&I`xZJ?=b z0MobgQZsA(PBEY+&4xSix_LsxLLv5XTscxQl<&DpEOlXifL}&m)cQ%Dd2|Yw?-8zk zN!^sY1#fxM4Lau8#lzm|D-Y>~rlg%V9f{x$Ly!;k`#nazpJ~t$lcf};K*CmQ*y|As z&^Ku)(h`e*{&bXOS1@*Z_jr?9?K!lj021%SL@sMN;YhLT4?YuSN%bGdyaXMG-%aIU4kUd5R5 znj|x=S!hU75iWSl1C?ACZBvf8xxcNbwcfisP`uNgd>^oc5U2!aBd^{KTZafWFO#)z zjlRvpB*dxSOpejEIF$?2iL=mA5NQFL6_b}GV=$*I&iPL7Wl0w^g4t^3)b{K>2=SS~xj4>3-?6NR!mKOj^HW_6<;69QTzb*okvw1VxeHg;!mz(4dy3wNX2-th zvw@dN#o_B#dAjhDRfmDW;?Ho?!$zZ3jrMQdg)Aa7X_As^s9s^*aU-LAI&~EIrN#WN znXw_F=C0=vdS0>jPfb64V>2^ zmYYrf(gC40hFh5n%?1^)bxLdk%F39{(TBzhzHH_Q1y6S&tS`MMKj?z@#c;HhD6@ z$v9N~PJWc8Gd#6s`&lTH-gOrBiVPR8?RMN+KLT0v9()%T8qN8cfUJtqW6BV`bzFtZ1gP! zgi+d*8=mE{tfX5MvRMXRGgfv{^!}@s=)iJp^uRLhv8%494qVf$naRC*PC~Az^=+ue zgy!kTsIK}8fQ12K)b>_e<>-}5uak-(I`?V`g}mmDCx;f}Vg&`1R)yO=0#vVQdbKrK zOAl@j?_SLl4hUT7%g`9EaNpk_U>#i5PY#rQC#y@@clwX*Mw4~4)H$6V`Fe7m2|J~U zY;)`%?`Xkh3MNzhRdoA{ts3XMdOeg5>o=ekbfcivYNw>wr^AdiM>}hrU}iQDkH?PL zRz2{u&`~tZy{ABUu5o!gQ;*%5Z7s662y;??=q^iZz%w=>p|{d-i8lzgc zf)}k`MrZK2;~(DiyK_g`X;kXQH-Q@j1+EX+{++Ub?22~tGtfAH=ULE=IL_Vz<278< zwOV5AK}{KncJ}rCG_yY`<8Ot}VnZ8*w}K+uw(yv4XaG1(R{hsdj`{}5`LXVN6XkGj zD$g&n^Z!ECx+o^C(UaL0wx>Fk5@O7Io?e4B0VZEn+yDT>MWpUd|AW%%3_-SlGtD|>H@AcPztNKx~V z4ELieg=eNMxGI$OwQxSAbn(ebNOZYEPa{EAq(u}wy4m#AswVCH<3(!=>v!}gS16Y}T83ivVc4$+!Jq&mKe?b|slmBe2iN|G=7yd)8R zznZrMdtUAK%C?LMzVL}TW~Y$G5I!|NW3S7yjRN;=JfslLey3Fsj6Pgbv9}7%hqZG& zw^hH34SuFHuA}U5z~J76WfXs3(x+%jEQIp(q30?^*ZmCpbuZw7bji71!!@SkgNF`2 z!n&s0c^*NO>T5|haM2Lza7&`K9PDG2MHo>Y#*Q zZEaB14h)R1ZCyO@`VMzp*;C~_q)}LP9khX%?Z+#?9e%}aZKAvb&L7SkE&H-ccPVw9 zX-axgRK{`NE0(+Ckty9HyQk;G)s(~%#yvgFojNm=X97t`bU=0MlwX~^n|f!=hvw^w zmlYXogZkX;FnU*JiLQCH>?i5=TI(`mTIzB zSPa+=W7`5IvMBHw0%$q2?-_Di8GtvS^n=dOK#=>vF@@9$XC&-9lF(E<3sGeQvmviykx{)O;X8sA@5pRAIYL$@5eKE#*W_J#L> z+Tl4`?zKHeZj1X3fRN>%3V`lMhD-w?6F|soAf$#yxVu%4#nk7yGCQn5UQPE(vS;M| z!&P;``^KtOEOXw7t^grd{{#Bs?<)?(+qE*pdmu3;w3&e`P}z$8wys&2A!DP^B}gl-=*YTaKn9n!5e)exm68iZ7s7i z9lp?RTQlQ0J$jo-t+bt1k^E6o%t^Dnj56;SFmuArf-4@E0Z zwLFZYm;jcGT;i+tG!^V+jqdntk@pzS&$ zWU|MgyDMVfeg~-gYAG5{%3bf`J9cJbEWt+Sxt>NKkGN0cHT~4GB_Nn>_ z#pd^xyba&uAp1PTQ|R?1%UgJC553-tJoJ#He+j30wl7B@#Yh~+2)|$Q5_LC3_)oxP3GlfTYX1PCuX`7;s!n*i}o;+ebtm}b& z#t-zXzZpQMO#2(K+@LaS*3Z{Ez8q;~DD5aR+VnJ~RYf{fKB<+QiibB9ix?ZJ_DYQ4 zG*`08LFtNO!bxXJ3)LvEa)B?N)|ItVp+M%#$m}!HBq{2%2hmTGC5SWE|F~q@+?*3r zZfSh|k7u?vUDNvG>_{}MtDQEDRd!$Q-JN0!rZxI1tsE>~h&}6jE0s + + + Microsoft.IdentityModel.JsonWebTokens + + + + + Initializes static members of the class. + + + + + Gets the InboundClaimTypeMap used by JwtSecurityTokenHandler when producing claims from jwt. + + + + + Gets the OutboundClaimTypeMap is used by JwtSecurityTokenHandler to shorten claim types when creating a jwt. + + + + + Constants that indicate how the should be evaluated. + + + + + A value that indicates the is a Json object. + + When creating a from Json if the value was not a simple type {String, Null, True, False, Number} + then will contain the Json value. If the Json was a JsonObject, the will be set to "JSON". + + + + A value that indicates the is a Json object. + + When creating a from Json if the value was not a simple type {String, Null, True, False, Number} + then will contain the Json value. If the Json was a JsonArray, the will be set to "JSON_ARRAY". + + + + A value that indicates the is Json null. + + When creating a the cannot be null. If the Json value was null, then the + will be set to and the will be set to "JSON_NULL". + + + + A designed for representing a JSON Web Token (JWT). + + + + + Initializes a new instance of from a string in JWS or JWE Compact serialized format. + + A JSON Web Token that has been serialized in JWS or JWE Compact serialized format. + 'jwtEncodedString' is null or empty. + 'jwtEncodedString' is not in JWS or JWE Compact serialization format. + + see: https://datatracker.ietf.org/doc/html/rfc7519 (JWT) + see: https://datatracker.ietf.org/doc/html/rfc7515 (JWS) + see: https://datatracker.ietf.org/doc/html/rfc7516 (JWE) + + The contents of the returned have not been validated, the JSON Web Token is simply decoded. Validation can be accomplished using the validation methods in + + + + + + Initializes a new instance of the class where the header contains the crypto algorithms applied to the encoded header and payload. + + A string containing JSON which represents the cryptographic operations applied to the JWT and optionally any additional properties of the JWT. + A string containing JSON which represents the claims contained in the JWT. Each claim is a JSON object of the form { Name, Value }. + + see: https://datatracker.ietf.org/doc/html/rfc7519 (JWT) + see: https://datatracker.ietf.org/doc/html/rfc7515 (JWS) + see: https://datatracker.ietf.org/doc/html/rfc7516 (JWE) + + The contents of the returned have not been validated, the JSON Web Token is simply decoded. Validation can be accomplished using the validation methods in + + + 'header' is null. + 'payload' is null. + + + + Gets the AuthenticationTag from the original raw data of this instance when it was created. + + + Contains the results of a Authentication Encryption with Associated Data (AEAD). + see: https://datatracker.ietf.org/doc/html/rfc7516#section-2 + + If this JWT is not encrypted with an algorithms that uses an Authentication Tag, an empty string will be returned. + + + + + + + + + + + Gets the Ciphertext representing the encrypted JWT in the original raw data. + + + When decrypted using values in the JWE header will contain the plaintext payload. + see: https://datatracker.ietf.org/doc/html/rfc7516#section-2 + + If this JWT is not encrypted, an empty string will be returned. + + + + + + + + + + + Gets the EncodedHeader from the original raw data of this instance when it was created. + + + The original Base64UrlEncoded string of the JWT header. + + + + + Gets the Encrypted Content Encryption Key. + + + For some algorithms this value may be null even though the JWT was encrypted. + see: https://datatracker.ietf.org/doc/html/rfc7516#section-2 + + If not found, an empty string is returned. + + + + + + Gets the EncodedPayload from the original raw data of this instance when it was created. + + + The original Base64UrlEncoded of the JWT payload, for JWE this will an empty string. + + + + + Gets the EncodedSignature from the original raw data of this instance when it was created. + + + The original Base64UrlEncoded of the JWT signature. + If the JWT was not signed or a JWE, an empty string is returned. + + + + + Gets the original raw data of this instance when it was created. + + + The original Base64UrlEncoded of the JWT. + + + + + Gets the Initialization Vector used when encrypting the plaintext. + + + see: https://datatracker.ietf.org/doc/html/rfc7516#appendix-A-1-4 + + Some algorithms may not use an Initialization Vector. + If not found an empty string is returned. + + + + + + Gets the associated with this instance. + + + see: https://datatracker.ietf.org/doc/html/rfc7516#section-2 + For encrypted tokens {JWE}, this represents the JWT that was encrypted. + + If the JWT is not encrypted, this value will be null. + + + + + + Returns true if this JsonWebToken was encrypted a JWE. + + + + + Returns true if this JsonWebToken was signed a JWS. + + + + + Not implemented. + + + + + Gets or sets the that was used to sign this token. + + + If the JWT was not signed or validated, this value will be null. + + + + + Converts a string into an instance of . + + A 'JSON Web Token' (JWT) in JWS or JWE Compact Serialization Format. + if is malformed, a valid JWT should have either 2 dots (JWS) or 4 dots (JWE). + if does not have an non-empty authentication tag after the 4th dot for a JWE. + if has more than 4 dots. + + + + Returns the encoded token without signature or authentication tag. + + Encoded token string without signature or authentication tag. + + + + + + + Gets a where each claim in the JWT { name, value } is returned as a . + + + A requires each value to be represented as a string. If the value was not a string, then contains the json type. + and to determine the json type. + + + + + Gets a representing the { key, 'value' } pair corresponding to the provided . + + + A requires each value to be represented as a string. If the value was not a string, then contains the json type. + and to determine the json type. + + If the key has no corresponding value, this method will throw. + + + + + + Try to get a representing the { key, 'value' } pair corresponding to the provided . + The value is obtained from the Payload. + + + A requires each value to be represented as a string. If the value was not a string, then contains the json type. + and to determine the json type. + + true if successful, false otherwise. + + + + Gets the 'value' corresponding to key from the JWT header transformed as type 'T'. + + + The expectation is that the 'value' corresponds to a type are expected in a JWT token. + The 5 basic types: number, string, true / false, nil, array (of basic types). + This is not a general purpose translation layer for complex types. + + The value as . + if claim is not found or a transformation to cannot be made. + + + + Gets the 'value' corresponding to key from the JWT payload transformed as type 'T'. + + + The expectation is that the 'value' corresponds to a type are expected in a JWT token. + The 5 basic types: number, string, true / false, nil, array (of basic types). + This is not a general purpose translation layer for complex types. + + The value as . + if claim is not found or a transformation to cannot be made. + + + + Tries to get the claim from the JWT payload. + + + The 'value' a type T if possible. + + true if successful, false otherwise. + + + + Tries to get the value corresponding to the provided key from the JWT header { key, 'value' }. + + + The expectation is that the 'value' corresponds to a type expected in a JWT token. + The 5 basic types: number, string, true / false, nil, array (of basic types). + This is not a general purpose translation layer for complex types. + + true if successful, false otherwise. + + + + Try to get the 'value' corresponding to key from the JWT payload transformed as type 'T'. + + + The expectation is that the 'value' corresponds to a type are expected in a JWT token. + The 5 basic types: number, string, true / false, nil, array (of basic types). + This is not a general purpose translation layer for complex types. + + true if successful, false otherwise. + + + + Gets the 'value' of the 'alg' claim from the header. + + + Identifies the cryptographic algorithm used to encrypt or determine the value of the Content Encryption Key. + Applicable to an encrypted JWT {JWE}. + see: https://datatracker.ietf.org/doc/html/rfc7516#section-4-1-1 + + If the 'alg' claim is not found, an empty string is returned. + + + + + + Gets the 'value' of the 'cty' claim from the header. + + + Used by JWS applications to declare the media type[IANA.MediaTypes] of the secured content (the payload). + see: https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.12 (JWE) + see: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.10 (JWS) + + If the 'cty' claim is not found, an empty string is returned. + + + + + + Gets the 'value' of the 'enc' claim from the header. + + + Identifies the content encryption algorithm used to perform authenticated encryption + on the plaintext to produce the ciphertext and the Authentication Tag. + see: https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.2 + + + + + Gets the 'value' of the 'kid' claim from the header. + + + 'kid'is a hint indicating which key was used to secure the JWS. + see: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.4 (JWS) + see: https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.6 (JWE) + + If the 'kid' claim is not found, an empty string is returned. + + + + + + Gets the 'value' of the 'typ' claim from the header. + + + Is used by JWT applications to declare the media type. + see: https://datatracker.ietf.org/doc/html/rfc7519#section-5.1 + + If the 'typ' claim is not found, an empty string is returned. + + + + + + Gets the 'value' of the 'x5t' claim from the header. + + + Is the base64url-encoded SHA-1 thumbprint(a.k.a.digest) of the DER encoding of the X.509 certificate used to sign this token. + see: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.7 + + If the 'x5t' claim is not found, an empty string is returned. + + + + + + Gets the 'value' of the 'zip' claim from the header. + + + The "zip" (compression algorithm) applied to the plaintext before encryption, if any. + see: https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.3 + + If the 'zip' claim is not found, an empty string is returned. + + + + + + Gets the 'value' of the 'actort' claim the payload. + + + If the 'actort' claim is not found, an empty string is returned. + + + + + Gets the list of 'aud' claims from the payload. + + + Identifies the recipients that the JWT is intended for. + see: https://datatracker.ietf.org/doc/html/rfc7519#section-4-1-3 + + If the 'aud' claim is not found, enumeration will be empty. + + + + + + Gets the 'azp' claim from the payload. + + + Identifies the authorized party for the id_token. + see: https://openid.net/specs/openid-connect-core-1_0.html + + + + + Gets the 'value' of the 'iat' claim converted to a from the payload. + + + Identifies the time at which the JWT was issued. + see: https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.6 + + If the 'iat' claim is not found, then is returned. + + + + + + Gets the 'value' of the 'iss' claim from the payload. + + + Identifies the principal that issued the JWT. + see: https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.1 + + If the 'iss' claim is not found, an empty string is returned. + + + + + + Gets the 'value' of the 'jti' claim from the payload. + + + Provides a unique identifier for the JWT. + see: https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.7 + + If the 'jti' claim is not found, an empty string is returned. + + + + + + Gets the 'value' of the 'sub' claim from the payload. + + + see: https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.2 + Identifies the principal that is the subject of the JWT. + + If the 'sub' claim is not found, an empty string is returned. + + + + + + Gets the 'value' of the 'nbf' claim converted to a from the payload. + + + Identifies the time before which the JWT MUST NOT be accepted for processing. + see: https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.5 + + If the 'nbf' claim is not found, then is returned. + + + + + + Gets the 'value' of the 'exp' claim converted to a from the payload. + + + Identifies the expiration time on or after which the JWT MUST NOT be accepted for processing. + see: https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.4 + + If the 'exp' claim is not found, then is returned. + + + + + + A designed for creating and validating Json Web Tokens. + See: https://datatracker.ietf.org/doc/html/rfc7519 and http://www.rfc-editor.org/info/rfc7515. + + + + + Default claim type mapping for inbound claims. + + + + + Default value for the flag that determines whether or not the InboundClaimTypeMap is used. + + + + + Gets the Base64Url encoded string representation of the following JWT header: + { , }. + + The Base64Url encoded string representation of the unsigned JWT header. + + + + Initializes a new instance of the class. + + + + + Gets the type of the . + + The type of + + + + Gets or sets the property name of the will contain the original JSON claim 'name' if a mapping occurred when the (s) were created. + + If .IsNullOrWhiteSpace('value') is true. + + + + Gets or sets the property which is used when determining whether or not to map claim types that are extracted when validating a . + If this is set to true, the is set to the JSON claim 'name' after translating using this mapping. Otherwise, no mapping occurs. + The default value is false. + + + + + Gets or sets the which is used when setting the for claims in the extracted when validating a . + The is set to the JSON claim 'name' after translating using this mapping. + The default value is ClaimTypeMapping.InboundClaimTypeMap. + + 'value' is null. + + + + Determines if the string is a well formed Json Web Token (JWT). + See: https://datatracker.ietf.org/doc/html/rfc7519 + + String that should represent a valid JWT. + Uses matching: + JWS: @"^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$" + JWE: (dir): @"^[A-Za-z0-9-_]+\.\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$" + JWE: (wrappedkey): @"^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]$" + + + 'false' if the token is null or whitespace. + 'false' if token.Length is greater than . + 'true' if the token is in JSON compact serialization format. + + + + + Returns a value that indicates if this handler can validate a . + + 'true', indicating this instance can validate a . + + + + Creates an unsigned JWS (Json Web Signature). + + A string containing JSON which represents the JWT token payload. + if is null. + A JWS in Compact Serialization Format. + + + + Creates an unsigned JWS (Json Web Signature). + + A string containing JSON which represents the JWT token payload. + Defines the dictionary containing any custom header claims that need to be added to the JWT token header. + if is null. + if is null. + A JWS in Compact Serialization Format. + + + + Creates a JWS (Json Web Signature). + + A string containing JSON which represents the JWT token payload. + Defines the security key and algorithm that will be used to sign the JWS. + if is null. + if is null. + A JWS in Compact Serialization Format. + + + + Creates a JWS (Json Web Signature). + + A string containing JSON which represents the JWT token payload. + Defines the security key and algorithm that will be used to sign the JWS. + Defines the dictionary containing any custom header claims that need to be added to the JWT token header. + if is null. + if is null. + if is null. + if , + , , and/or + are present inside of . + A JWS in Compact Serialization Format. + + + + Creates a JWS(Json Web Signature). + + A that contains details of contents of the token. + A JWS in Compact Serialization Format. + + + + Creates a JWE (Json Web Encryption). + + A string containing JSON which represents the JWT token payload. + Defines the security key and algorithm that will be used to encrypt the JWT. + A JWE in compact serialization format. + + + + Creates a JWE (Json Web Encryption). + + A string containing JSON which represents the JWT token payload. + Defines the security key and algorithm that will be used to encrypt the JWT. + Defines the dictionary containing any custom header claims that need to be added to the outer JWT token header. + if is null. + if is null. + if is null. + if , + , , and/or + are present inside of . + A JWS in Compact Serialization Format. + + + + Creates a JWE (Json Web Encryption). + + A string containing JSON which represents the JWT token payload. + Defines the security key and algorithm that will be used to sign the JWT. + Defines the security key and algorithm that will be used to encrypt the JWT. + if is null. + if is null. + if is null. + A JWE in compact serialization format. + + + + Creates a JWE (Json Web Encryption). + + A string containing JSON which represents the JWT token payload. + Defines the security key and algorithm that will be used to sign the JWT. + Defines the security key and algorithm that will be used to encrypt the JWT. + Defines the dictionary containing any custom header claims that need to be added to the outer JWT token header. + if is null. + if is null. + if is null. + if is null. + if , + , , and/or + are present inside of . + A JWE in compact serialization format. + + + + Creates a JWE (Json Web Encryption). + + A string containing JSON which represents the JWT token payload. + Defines the security key and algorithm that will be used to encrypt the JWT. + Defines the compression algorithm that will be used to compress the JWT token payload. + A JWE in compact serialization format. + + + + Creates a JWE (Json Web Encryption). + + A string containing JSON which represents the JWT token payload. + Defines the security key and algorithm that will be used to sign the JWT. + Defines the security key and algorithm that will be used to encrypt the JWT. + Defines the compression algorithm that will be used to compress the JWT token payload. + if is null. + if is null. + if is null. + if is null. + A JWE in compact serialization format. + + + + Creates a JWE (Json Web Encryption). + + A string containing JSON which represents the JWT token payload. + Defines the security key and algorithm that will be used to sign the JWT. + Defines the security key and algorithm that will be used to encrypt the JWT. + Defines the compression algorithm that will be used to compress the JWT token payload. + Defines the dictionary containing any custom header claims that need to be added to the outer JWT token header. + Defines the dictionary containing any custom header claims that need to be added to the inner JWT token header. + if is null. + if is null. + if is null. + if is null. + if is null. + if , + , , and/or + are present inside of . + A JWE in compact serialization format. + + + + Creates a JWE (Json Web Encryption). + + A string containing JSON which represents the JWT token payload. + Defines the security key and algorithm that will be used to sign the JWT. + Defines the security key and algorithm that will be used to encrypt the JWT. + Defines the compression algorithm that will be used to compress the JWT token payload. + Defines the dictionary containing any custom header claims that need to be added to the outer JWT token header. + if is null. + if is null. + if is null. + if is null. + if is null. + if , + , , and/or + are present inside of . + A JWE in compact serialization format. + + + + Creates a from a . + + The to use as a source. + Contains parameters for validating the token. + A containing the . + + + + Creates a from a with the specified issuer. + + The to use as a source. + Contains parameters for validating the token. + Specifies the issuer for the . + A containing the . + + + + Decrypts a JWE and returns the clear text + + the JWE that contains the cypher text. + contains crypto material. + the decoded / cleartext contents of the JWE. + if is null. + if is null. + if ' .Enc' is null or empty. + if decompression failed. + if ' .Kid' is not null AND decryption fails. + if the JWE was not able to be decrypted. + + + + Encrypts a JWS. + + A 'JSON Web Token' (JWT) in JWS Compact Serialization Format. + Defines the security key and algorithm that will be used to encrypt the . + if is null or empty. + if is null. + if both and . are null. + if the CryptoProviderFactory being used does not support the (algorithm), pair. + if unable to create a token encryption provider for the (algorithm), pair. + if encryption fails using the (algorithm), pair. + if not using one of the supported content encryption key (CEK) algorithms: 128, 384 or 512 AesCbcHmac (this applies in the case of key wrap only, not direct encryption). + + + + Encrypts a JWS. + + A 'JSON Web Token' (JWT) in JWS Compact Serialization Format. + Defines the security key and algorithm that will be used to encrypt the . + Defines the dictionary containing any custom header claims that need to be added to the outer JWT token header. + if is null or empty. + if is null. + if is null. + if both and . are null. + if the CryptoProviderFactory being used does not support the (algorithm), pair. + if unable to create a token encryption provider for the (algorithm), pair. + if encryption fails using the (algorithm), pair. + if not using one of the supported content encryption key (CEK) algorithms: 128, 384 or 512 AesCbcHmac (this applies in the case of key wrap only, not direct encryption). + + + + Encrypts a JWS. + + A 'JSON Web Token' (JWT) in JWS Compact Serialization Format. + Defines the security key and algorithm that will be used to encrypt the . + Defines the compression algorithm that will be used to compress the 'innerJwt'. + if is null or empty. + if is null. + if is null or empty. + if both and . are null. + if the CryptoProviderFactory being used does not support the (algorithm), pair. + if unable to create a token encryption provider for the (algorithm), pair. + if compression using fails. + if encryption fails using the (algorithm), pair. + if not using one of the supported content encryption key (CEK) algorithms: 128, 384 or 512 AesCbcHmac (this applies in the case of key wrap only, not direct encryption). + + + + Encrypts a JWS. + + A 'JSON Web Token' (JWT) in JWS Compact Serialization Format. + Defines the security key and algorithm that will be used to encrypt the . + Defines the compression algorithm that will be used to compress the + Defines the dictionary containing any custom header claims that need to be added to the outer JWT token header. + if is null or empty. + if is null. + if is null or empty. + if is null or empty. + if both and . are null. + if the CryptoProviderFactory being used does not support the (algorithm), pair. + if unable to create a token encryption provider for the (algorithm), pair. + if compression using 'algorithm' fails. + if encryption fails using the (algorithm), pair. + if not using one of the supported content encryption key (CEK) algorithms: 128, 384 or 512 AesCbcHmac (this applies in the case of key wrap only, not direct encryption). + + + + Returns a to use when decrypting a JWE. + + The the token that is being decrypted. + The that is being decrypted. + A required for validation. + Returns a to use for signature validation. + If key fails to resolve, then null is returned + + + + Converts a string into an instance of . + + A 'JSON Web Token' (JWT) in JWS or JWE Compact Serialization Format. + A + is null or empty. + 'token.Length' is greater than . + If the is in JWE Compact Serialization format, only the protected header will be deserialized. + This method is unable to decrypt the payload. Use to obtain the payload. + The token is NOT validated and no security decisions should be made about the contents. + Use or to ensure the token is acceptable. + + + + Converts a string into an instance of . + + A 'JSON Web Token' (JWT) in JWS or JWE Compact Serialization Format. + A + is null or empty. + 'token.Length' is greater than . + The token is NOT validated and no security decisions should be made about the contents. + Use or to ensure the token is acceptable. + + + + Validates a JWS or a JWE. + + A 'JSON Web Token' (JWT) in JWS or JWE Compact Serialization Format. + A required for validation. + A + + + + Validates a token. + On a validation failure, no exception will be thrown; instead, the exception will be set in the returned TokenValidationResult.Exception property. + Callers should always check the TokenValidationResult.IsValid property to verify the validity of the result. + + The token to be validated. + A required for validation. + A + + TokenValidationResult.Exception will be set to one of the following exceptions if the is invalid. + if is null or empty. + if is null. + 'token.Length' is greater than . + if is not a valid , + if the validationParameters.TokenReader delegate is not able to parse/read the token as a valid , + + + + + + + + Converts a string into an instance of . + + A 'JSON Web Token' (JWT) in JWS or JWE Compact Serialization Format. + A whose TokenReader, if set, will be used to read a JWT. + A + if the validationParameters.TokenReader delegate is not able to parse/read the token as a valid . + if is not a valid JWT, . + + + + Private method for token validation, responsible for: + (1) Obtaining a configuration from the . + (2) Revalidating using the Last Known Good Configuration (if present), and obtaining a refreshed configuration (if necessary) and revalidating using it. + + The JWT token + The to be used for validation. + + + + + Validates the JWT signature. + + + + + This class provides an abstraction over the json parser for net461+ using System.Text.Json. + will delegate to this class to get values. + + + + + The goal here is return types that are expected in a JWT token. + The 5 basic types: number, string, true / false, nil, array (of basic types). + This is not a general purpose translation layer for complex types. + For that we would need to provide a way to hook a JsonConverter to for complex types. + + + + if this is called from TryGetValue then we don't want to throw. + + + + + + The return types that are expected in a JWT token. + The 5 basic types: number, string, true / false, nil, array (of basic types). + This is not a general purpose translation layer for complex types. + For that we would need to provide a way to hook a JsonConverter to for complex types. + + + + + + + + + Constants for Json Web Tokens. + + + + + Short header type. + + + + + Long header type. + + + + + Short token type. + + + + + Long token type. + + + + + JWS - Token format: 'header.payload.signature'. Signature is optional, but '.' is required. + + + + + JWE - Token format: 'protectedheader.encryptedkey.iv.cyphertext.authenticationtag'. + + + + + The number of parts in a JWE token. + + + + + The number of parts in a JWS token. + + + + + The maximum number of parts in a JWT. + + + + + JWE header alg indicating a shared symmetric key is directly used as CEK. + + + + + List of header parameter names see: https://datatracker.ietf.org/doc/html/rfc7519#section-5. + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.1 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7518#section-4.6.1.2 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7518#section-4.6.1.3 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7518#section-4.6.1.1 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.10 + Also: https://datatracker.ietf.org/doc/html/rfc7519#section-5.2 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.2 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7518#section-4.7.1.1 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.2 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.3 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.4 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.9 + Also: https://datatracker.ietf.org/doc/html/rfc7519#section-5.1 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.6 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#page-12 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.5 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.3 + + + + + Parameter names for JsonWebToken header values as UTF8 bytes. + Used by UTF8JsonReader/Writer for performance gains. + + + + + List of registered claims from different sources + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + http://openid.net/specs/openid-connect-core-1_0.html#IDToken + + + + + + + + + http://openid.net/specs/openid-connect-core-1_0.html#IDToken + + + + + http://openid.net/specs/openid-connect-core-1_0.html#IDToken + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + + + + + http://openid.net/specs/openid-connect-core-1_0.html#IDToken + + + + + http://openid.net/specs/openid-connect-core-1_0.html#IDToken + + + + + https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims + + + + + https://openid.net/specs/openid-connect-core-1_0.html#HybridIDToken + + + + + http://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken + + + + + https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + + + + + https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims + + + + + https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims + + + + + https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + + + + + https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims + + + + + + + + + https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + + + + + https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims + + + + + https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims + + + + + + + + + http://openid.net/specs/openid-connect-frontchannel-1_0.html#OPLogout + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-5 + + + + + + + + + + + + + Parameter names for JsonWebToken registered claim names in UTF8 bytes. + Used by UTF8JsonReader/Writer for performance gains. + + + + + Represents the parameters needed to decrypt a JSON Web Token + The JwtSecurityTokenHandler uses this as a helper when decrypting a JwtSecurityToken, the JsonWebTokenHandler sets the JsonWebToken property. + + + + + Gets or sets signature algorithm that was used to create the signature. + + + + + Gets or sets the AuthenticationTag from the original raw data of this instance when it was created. + + + + + Gets or sets the Ciphertext from the original raw data of this instance when it was created. + + + + + Gets or sets the function used to attempt decompression with. + + + + + Gets or sets the encryption algorithm (Enc) of the token. + + + + + Gets the EncodedHeader from the original raw data of this instance when it was created. + + + + + Gets or sets the EncodedHeader from the original raw data of this instance when it was created. + + + + + Gets or sets the InitializationVector from the original raw data of this instance when it was created. + + + + + Gets or sets the collection of s to attempt to decrypt with. + + + + + Gets or sets the 'value' of the 'zip' claim. + + + + + A class which contains useful methods for processing JWT tokens. + + + + + Regex that is used to figure out if a token is in JWS format. + + + + + Regex that is used to figure out if a token is in JWE format. + + + + + Produces a signature over the . + + String to be signed + The that contain crypto specs used to sign the token. + The base 64 url encoded signature over the bytes obtained from UTF8Encoding.GetBytes( 'input' ). + 'input' or 'signingCredentials' is null. + + + + Produces a signature over the . + + String to be signed + The that contain crypto specs used to sign the token. + should the be cached. + The base 64 url encoded signature over the bytes obtained from UTF8Encoding.GetBytes( 'input' ). + or is null. + + + + Decompress JWT token bytes. + + + + if is null. + if is null. + if the decompression is not supported. + if decompression using fails. + Decompressed JWT token + + + + Decrypts a Json Web Token. + + The Json Web Token, could be a JwtSecurityToken or JsonWebToken + The validation parameters containing cryptographic material. + The decryption parameters container. + The decrypted, and if the 'zip' claim is set, decompressed string representation of the token. + + + + Generates key bytes. + + + + + Gets all decryption keys. + + + + + Returns a to use when validating the signature of a token. + + The kid field of the token being validated + The x5t field of the token being validated + A required for validation. + The that will be used along with the to resolve the signing key + Returns a to use for signature validation. + Resolve the signing key using configuration then the validationParameters until a key is resolved. If key fails to resolve, then null is returned. + + + + Returns a to use when validating the signature of a token. + + The kid field of the token being validated + The x5t field of the token being validated + A collection of a signing key to be resolved from. + Returns a to use for signature validation. + If key fails to resolve, then null is returned + + + + Counts the number of Jwt Token segments. + + The Jwt Token. + The maximum number of segments to count up to. + The number of segments up to . + + + + Log messages and codes + + + + diff --git a/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml.meta b/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml.meta new file mode 100644 index 0000000..3f7798f --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.JsonWebTokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.JsonWebTokens.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5b50090ab0dceae4ba619ee188dfb884 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3.meta b/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3.meta new file mode 100644 index 0000000..45bc2b3 --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ef5f1703101de5e41810fe60138df0fc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/.signature.p7s b/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..85bbac86e9c0298b58d66b7909950eb29a4d43b9 GIT binary patch literal 24208 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 literal 0 HcmV?d00001 diff --git a/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/Microsoft.IdentityModel.Logging.nuspec b/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/Microsoft.IdentityModel.Logging.nuspec new file mode 100644 index 0000000..4afdd60 --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/Microsoft.IdentityModel.Logging.nuspec @@ -0,0 +1,39 @@ + + + + Microsoft.IdentityModel.Logging + 7.0.3 + Microsoft + MIT + https://licenses.nuget.org/MIT + https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet + Includes Event Source based logging support. + © Microsoft Corporation. All rights reserved. + .NET Windows Authentication Identity Logging + true + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/Microsoft.IdentityModel.Logging.nuspec.meta b/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/Microsoft.IdentityModel.Logging.nuspec.meta new file mode 100644 index 0000000..d398bdc --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/Microsoft.IdentityModel.Logging.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a9fbc9fe44e615a4480cb0f2cfe76a97 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib.meta b/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib.meta new file mode 100644 index 0000000..9e61fc8 --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 96ee4ccadf2861f49b51e895e11276a2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib/netstandard2.0.meta b/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib/netstandard2.0.meta new file mode 100644 index 0000000..9cb497d --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 216c025d2befc3c43a999c505c770d7f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll b/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Logging.dll new file mode 100644 index 0000000000000000000000000000000000000000..94ed2ae529b7103c13af3246edb002e952227e56 GIT binary patch literal 38952 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 + + + Microsoft.IdentityModel.Logging + + + + + Event source based logger to log different events. + + + + + Static logger that is exposed externally. An external application or framework can hook up a listener to this event source to log data in a custom way. + + + + + Flag which indicates whether or not PII is shown in logs. False by default. + + + + + Flag which indicates whether or not complete is shown in logs when is set to true. False by default. + + + + + String that is used in place of any arguments to log messages if the 'ShowPII' flag is set to false. + + + + + String that is used in place of any arguments to log messages if the 'LogCompleteSecurityArtifact' flag is set to false. + + + + + Indicates whether or the log message header (contains library version, date/time, and PII debugging information) has been written. + + + + + The log message that indicates the current library version. + + + + + The log message that indicates the date. + + + + + The log message that is shown when PII is off. + + + + + The log message that is shown when PII is off. + + + + + Writes an event log by using the provided string argument and current UTC time. + No level filtering is done on the event. + + The log message. + No level filtering. + + + + Writes an event log by using the provided string argument, current UTC time and the provided arguments list. + + The log message. + An object array that contains zero or more objects to format. + + + + Writes a verbose event log by using the provided string argument and current UTC time. + + The log message. + + + + Writes a verbose event log by using the provided string argument, current UTC time and the provided arguments list. + + The log message. + An object array that contains zero or more objects to format. + + + + Writes an information event log by using the provided string argument and current UTC time. + + The log message. + + + + Writes an information event log by using the provided string argument, current UTC time and the provided arguments list. + + The log message. + An object array that contains zero or more objects to format. + + + + Writes a warning event log by using the provided string argument and current UTC time. + + The log message. + + + + Writes a warning event log by using the provided string argument, current UTC time and the provided arguments list. + + The log message. + An object array that contains zero or more objects to format. + + + + Writes an error event log by using the provided string argument and current UTC time. + + The log message. + + + + Writes an error event log by using the provided string argument, current UTC time and the provided arguments list. + + The log message. + An object array that contains zero or more objects to format. + + + + Writes a critical event log by using the provided string argument and current UTC time. + + The log message. + + + + Writes a critical event log by using the provided string argument, current UTC time and the provided arguments list. + + The log message. + An object array that contains zero or more objects to format. + + + + Writes an exception log by using the provided event identifer, exception argument, string argument and current UTC time. + + + + The log message. + + + + Writes an exception log by using the provided event identifer, exception argument, string argument, arguments list and current UTC time. + + + + The log message. + An object array that contains zero or more objects to format. + + + + Minimum log level to log events. Default is Warning. + + + + + Provides a way to add and remove telemetry data. + + + + + Get the string that represents the client SKU. + + + + + Get the string that represents the client version. + + + + + Adds a key and its value to the collection of telemetry data. + + The name of the telemetry. + The value of the telemetry. + true if the key is successfully added; otherwise, false. + + + + Removes a key and its value from the collection of telemetry data. + + The name of the telemetry. + true if the key is successfully removed; otherwise, false. + + + + Interface that provides an unsafe method to log a security artifact. + + + SecurityToken and encoded token are considered as SecurityArtifacts. + + + + + Returns a string that represents the complete security artifact. + This may include sensitive information and should only be used for debugging purposes. + + + + + A context class that can be used to store work per request to aid with debugging. + + + + + Instantiates a new with the default activityId. + + + + + Instantiates a new with an activityId. + + + + + + Gets or set a that will be used in the call to EventSource.SetCurrentThreadActivityId before logging. + + + + + Gets or sets a boolean controlling if logs are written into the context. + Useful when debugging. + + + + + Gets or sets a string that helps with setting breakpoints when debugging. + + + + + The collection of logs associated with a request. Use to control capture. + + + + + Gets or sets an that enables custom extensibility scenarios. + + + + + Helper class for logging. + + + + + Gets or sets a logger to which logs will be written to. + + + + + Indicates whether the log message header (contains library version, date/time, and PII debugging information) has been written. + + + + + The log message that is shown when PII is off. + + + + + The log message that is shown when PII is on. + + + + + Gets whether logging is enabled at the specified ."/> + + The log level + if logging is enabled at the specified level; otherwise, . + + + + Logs an exception using the event source logger and returns new exception. + + argument that is null or empty. + EventLevel is set to Error. + + + + Logs an exception using the event source logger and returns new typed exception. + + message to log. + EventLevel is set to Error. + + + + Logs an argument exception using the event source logger and returns new typed exception. + + Identifies the argument whose value generated the ArgumentException. + message to log. + EventLevel is set to Error. + + + + Logs an exception using the event source logger and returns new typed exception. + + Format string of the log message. + An object array that contains zero or more objects to format. + EventLevel is set to Error. + + + + Logs an argument exception using the event source logger and returns new typed exception. + + Identifies the argument whose value generated the ArgumentException. + Format string of the log message. + An object array that contains zero or more objects to format. + EventLevel is set to Error. + + + + Logs an exception using the event source logger and returns new typed exception. + + the inner to be added to the outer exception. + message to log. + EventLevel is set to Error. + + + + Logs an argument exception using the event source logger and returns new typed exception. + + Identifies the argument whose value generated the ArgumentException. + the inner to be added to the outer exception. + message to log. + EventLevel is set to Error. + + + + Logs an exception using the event source logger and returns new typed exception. + + the inner to be added to the outer exception. + Format string of the log message. + An object array that contains zero or more objects to format. + EventLevel is set to Error. + + + + Logs an argument exception using the event source logger and returns new typed exception. + + Identifies the argument whose value generated the ArgumentException. + the inner to be added to the outer exception. + Format string of the log message. + An object array that contains zero or more objects to format. + EventLevel is set to Error. + + + + Logs an exception using the event source logger and returns new typed exception. + + Identifies the level of an event to be logged. + message to log. + + + + Logs an argument exception using the event source logger and returns new typed exception. + + Identifies the level of an event to be logged. + Identifies the argument whose value generated the ArgumentException. + message to log. + + + + Logs an exception using the event source logger and returns new typed exception. + + Identifies the level of an event to be logged. + Format string of the log message. + An object array that contains zero or more objects to format. + + + + Logs an argument exception using the event source logger and returns new typed exception. + + Identifies the level of an event to be logged. + Identifies the argument whose value generated the ArgumentException. + Format string of the log message. + An object array that contains zero or more objects to format. + + + + Logs an exception using the event source logger and returns new typed exception. + + Identifies the level of an event to be logged. + the inner to be added to the outer exception. + message to log. + + + + Logs an argument exception using the event source logger and returns new typed exception. + + Identifies the level of an event to be logged. + Identifies the argument whose value generated the ArgumentException. + the inner to be added to the outer exception. + message to log. + + + + Logs an exception using the event source logger and returns new typed exception. + + Identifies the level of an event to be logged. + the inner to be added to the outer exception. + Format string of the log message. + An object array that contains zero or more objects to format. + + + + Logs an argument exception using the event source logger and returns new typed exception. + + Identifies the level of an event to be logged. + Identifies the argument whose value generated the ArgumentException. + the inner to be added to the outer exception. + Format string of the log message. + An object array that contains zero or more objects to format. + + + + Logs an exception using the event source logger. + + The exception to log. + + + + Logs an exception using the event source logger. + + Identifies the level of an event to be logged. + The exception to log. + + + + Logs an information event. + + The log message. + An object array that contains zero or more objects to format. + + + + Logs a verbose event. + + The log message. + An object array that contains zero or more objects to format. + + + + Logs a warning event. + + The log message. + An object array that contains zero or more objects to format. + + + + Logs an exception using the event source logger and returns new typed exception. + + Identifies the level of an event to be logged. + Identifies the argument whose value generated the ArgumentException. + the inner to be added to the outer exception. + Format string of the log message. + An object array that contains zero or more objects to format. + + + + Formats the string using InvariantCulture + + Format string. + Format arguments. + Formatted string. + + + + Marks a log message argument () as NonPII. + + A log message argument to be marked as NonPII. + An argument marked as NonPII. + + Marking an argument as NonPII in calls will result in logging + that argument in cleartext, regardless of the flag value. + + + + + Marks a log message argument () as SecurityArtifact. + + A log message argument to be marked as SecurityArtifact. + A callback function to log the security artifact safely. + An argument marked as SecurityArtifact. + + Since even the payload may sometimes contain security artifacts, naïve disarm algorithms such as removing signatures + will not work. For now the will only be leveraged if + is set and no unsafe callback is provided. Future changes + may introduce a support for best effort disarm logging. + + + + + Marks a log message argument () as SecurityArtifact. + + A log message argument to be marked as SecurityArtifact. + A callback function to log the security artifact safely. + A callback function to log the security artifact without scrubbing. + An argument marked as SecurityArtifact. + if is null. + if is null. + + Since even the payload may sometimes contain security artifacts, naïve disarm algorithms such as removing signatures + will not work. For now the is currently unused. Future changes + may introduce a support for best effort disarm logging which will leverage . + + + + + Marks a log message argument () as SecurityArtifact. + + A log message argument to be marked as SecurityArtifact. + A callback function to log the security artifact without scrubbing. + An argument marked as SecurityArtifact. + if is null. + + + + Creates a by using the provided event level, exception argument, string argument and arguments list. + + + + The log message. + An object array that contains zero or more objects to format. + + + + Log messages and codes for Microsoft.IdentityModel.Logging + + + + + An internal structure that is used to mark an argument as NonPII. + Arguments wrapped with a NonPII structure will be considered as NonPII in the message logging process. + + + + + Argument wrapped with a structure is considered as NonPII in the message logging process. + + + + + Creates an instance of that wraps the . + + An argument that is considered as NonPII. + + + + Returns a string that represents the . + + Null if the is , otherwise calls method of the . + + + + An internal structure that is used to mark an argument as SecurityArtifact. + Arguments wrapped with a SecurityArtifact structure will be considered as a SecurityArtifact in the message logging process. + + + SecurityToken and encoded token are considered as SecurityArtifacts. + + + + + Argument wrapped with a structure is considered as SecurityArtifact in the message logging process. + + + + + The ToString callback delegate that returns a disarmed SecurityArtifact. + + + + + The ToString callback delegate that returns an unscrubbed SecurityArtifact. + + + + + Creates an instance of that wraps the . + + An argument that is considered as SecurityArtifact. + A callback used to disarm the token. + + Since even the payload may sometimes contain security artifacts, naïve disarm algorithms (such as removing signatures + in the case of JWTs) will not work. For now the will only be leveraged if + is set and no unsafe callback is provided. Future changes + may introduce a support for best effort disarm logging. + + + + + Creates an instance of that wraps the . + + An argument that is considered as SecurityArtifact. + A ToString callback. + A ToString callback which will return the unscrubbed artifact. + + Since even the payload may sometimes contain security artifacts, naïve disarm algorithms (such as removing signatures + in the case of JWTs) will not work. For now the is currently unused. Future changes + may introduce a support for best effort disarm logging which will leverage . + + + + + A dummy callback which can be leveraged to return a standard scrubbed token in the case where expected token is unknown. + + Ignored token. + The standard scrubbed token string. + + + + Returns a string that represents the . + + Null if the is , otherwise calls the provided safe callback on . + + + + Event listener that writes logs to a file or a fileStream provided by user. + + + + + Name of the default log file, excluding its path. + + + + + Initializes a new instance of that writes logs to text file. + + + + + Initializes a new instance of that writes logs to text file. + + location of the file where log messages will be written. + + + + Initializes a new instance of that writes logs to text file. + + StreamWriter where logs will be written. + + + + Called whenever an event has been written by an event source for which the event listener has enabled events. + + + + + + Releases all resources used by the current instance of the class. + + + + + Indicates that the specified method requires dynamic access to code that is not referenced + statically, for example through . + + + This allows tools to understand which methods are unsafe to call when removing unreferenced + code from an application. + + + + + Initializes a new instance of the class + with the specified message. + + + A message that contains information about the usage of unreferenced code. + + + + + Gets a message that contains information about the usage of unreferenced code. + + + + + Gets or sets an optional URL that contains more information about the method, + why it requires unreferenced code, and what options a consumer has to deal with it. + + + + + Suppresses reporting of a specific rule violation, allowing multiple suppressions on a + single code artifact. + + + is different than + in that it doesn't have a + . So it is always preserved in the compiled assembly. + + + + + Initializes a new instance of the + class, specifying the category of the tool and the identifier for an analysis rule. + + The category for the attribute. + The identifier of the analysis rule the attribute applies to. + + + + Gets the category identifying the classification of the attribute. + + + The property describes the tool or tool analysis category + for which a message suppression attribute applies. + + + + + Gets the identifier of the analysis tool rule to be suppressed. + + + Concatenated together, the and + properties form a unique check identifier. + + + + + Gets or sets the scope of the code that is relevant for the attribute. + + + The Scope property is an optional argument that specifies the metadata scope for which + the attribute is relevant. + + + + + Gets or sets a fully qualified path that represents the target of the attribute. + + + The property is an optional argument identifying the analysis target + of the attribute. An example value is "System.IO.Stream.ctor():System.Void". + Because it is fully qualified, it can be long, particularly for targets such as parameters. + The analysis tool user interface should be capable of automatically formatting the parameter. + + + + + Gets or sets an optional argument expanding on exclusion criteria. + + + The property is an optional argument that specifies additional + exclusion where the literal metadata target is not sufficiently precise. For example, + the cannot be applied within a method, + and it may be desirable to suppress a violation against a statement in the method that will + give a rule violation, but not against all statements in the method. + + + + + Gets or sets the justification for suppressing the code analysis message. + + + + + Initializes a new instance of the class + with the specified member types. + + The types of members dynamically accessed. + + + + Gets the which specifies the type + of members dynamically accessed. + + + + + Specifies the types of members that are dynamically accessed. + + This enumeration has a attribute that allows a + bitwise combination of its member values. + + + + + Specifies no members. + + + + + Specifies the default, parameterless public constructor. + + + + + Specifies all public constructors. + + + + + Specifies all non-public constructors. + + + + + Specifies all public methods. + + + + + Specifies all non-public methods. + + + + + Specifies all public fields. + + + + + Specifies all non-public fields. + + + + + Specifies all public nested types. + + + + + Specifies all non-public nested types. + + + + + Specifies all public properties. + + + + + Specifies all non-public properties. + + + + + Specifies all public events. + + + + + Specifies all non-public events. + + + + + Specifies all interfaces implemented by the type. + + + + + Specifies all members. + + + + diff --git a/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml.meta b/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml.meta new file mode 100644 index 0000000..fb1c98f --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Logging.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Logging.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fea31e33894b9124484aa965fa3b0b4f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3.meta b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3.meta new file mode 100644 index 0000000..09b05d0 --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2718da2bce207af45a4536e7a710c7ce +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/.signature.p7s b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..5c1afbd2736a1129c279784c8fb2263b53edb7b9 GIT binary patch literal 24207 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 literal 0 HcmV?d00001 diff --git a/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/Microsoft.IdentityModel.Tokens.nuspec b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/Microsoft.IdentityModel.Tokens.nuspec new file mode 100644 index 0000000..659e2e4 --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/Microsoft.IdentityModel.Tokens.nuspec @@ -0,0 +1,54 @@ + + + + Microsoft.IdentityModel.Tokens + 7.0.3 + Microsoft + MIT + https://licenses.nuget.org/MIT + https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet + Includes types that provide support for SecurityTokens, Cryptographic operations: Signing, Verifying Signatures, Encryption. + © Microsoft Corporation. All rights reserved. + .NET Windows Authentication Identity SecurityTokens Cryptographic operations Signing Verifying Signatures Encryption + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/Microsoft.IdentityModel.Tokens.nuspec.meta b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/Microsoft.IdentityModel.Tokens.nuspec.meta new file mode 100644 index 0000000..c766bf3 --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/Microsoft.IdentityModel.Tokens.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0cb9b03253fe0e845891c85454f60acd +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib.meta b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib.meta new file mode 100644 index 0000000..8da7e83 --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3d598bef89407644193a53b2e91d6859 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0.meta b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0.meta new file mode 100644 index 0000000..1782c66 --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8019472326fc74949a546757f26375ae +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll new file mode 100644 index 0000000000000000000000000000000000000000..c4417dea8c5cdd8ac53e0b606af93c9cf97e40bb GIT binary patch literal 281120 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%0AWvriH@p+Z}nz{WT48KZ#Pn_vERyGyv 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 literal 0 HcmV?d00001 diff --git a/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll.meta b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll.meta new file mode 100644 index 0000000..e8e349f --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Tokens.dll.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: f51dcdcda38231a4fb02e117b0879e30 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 3 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml new file mode 100644 index 0000000..ce8c782 --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml @@ -0,0 +1,5507 @@ + + + + Microsoft.IdentityModel.Tokens + + + + + This adapter abstracts the 'RSA' differences between versions of .Net targets. + + + + + Calls and + + + + + Base class for a Security Key that contains Asymmetric key material. + + + + + Default constructor + + + + + This must be overridden to get a bool indicating if a private key exists. + + true if it has a private key; otherwise, false. + + + + Gets the status of the private key. + + 'Exists' if private key exists for sure; 'DoesNotExist' if private key doesn't exist for sure; 'Unknown' if we cannot determine. + + + + Enum for the existence of private key + + + + + private key exists for sure + + + + + private key doesn't exist for sure + + + + + unable to determine the existence of private key + + + + + Provides signature and verification operations for Asymmetric Algorithms using a . + + + + + Mapping from algorithm to minimum .KeySize when creating signatures. + + + + + Mapping from algorithm to minimum .KeySize when verifying signatures. + + + + + Initializes a new instance of the class used to create and verify signatures. + + The that will be used for signature operations. + The signature algorithm to apply. + + + + Initializes a new instance of the class used to create and verify signatures. + + The that will be used for signature operations. + The signature algorithm to apply. + If this is required to create signatures then set this to true. + + Creating signatures requires that the has access to a private key. + Verifying signatures (the default), does not require access to the private key. + + is null. + is null or empty. + is true and there is no private key. + If and algorithm pair are not supported. + + willCreateSignatures is true and .KeySize is less than the size corresponding to the given algorithm in . + + + .KeySize is less than the size corresponding to the algorithm in . Note: this is always checked. + + If the runtime is unable to create a suitable cryptographic provider. + + + + Gets the mapping from algorithm to the minimum .KeySize for creating signatures. + + + + + Gets the mapping from algorithm to the minimum .KeySize for verifying signatures. + + + + + Creating a Signature requires the use of a . + This method returns the + that describes the to use when generating a Signature. + + The SignatureAlgorithm in use. + The to use. + if is null or whitespace. + if is not supported. + + + + For testing purposes + + + + + Produces a signature over the 'input' using the and algorithm passed to . + + The bytes to be signed. + A signature over the input. + if is null. + if .Length == 0. + If has been called. + Sign is thread safe. + + + + Validates that an asymmetric key size is of sufficient size for a SignatureAlgorithm. + + The asymmetric key to validate. + Algorithm for which this key will be used. + Whether they key will be used for creating signatures. + if is null. + if is null or empty. + if .KeySize is less than the minimum + acceptable size. + + for minimum signing sizes. + for minimum verifying sizes. + + + + + Verifies that the over using the + and specified by this + are consistent. + + The bytes to generate the signature over. + The value to verify against. + true if signature matches, false otherwise. + is null or has length == 0. + is null or has length == 0. + If has been called. + Verify is thread safe. + + + + + + + Calls to release managed resources. + + true, if called from Dispose(), false, if invoked inside a finalizer. + + + + Encodes and Decodes strings as Base64Url encoding. + + + + + The following functions perform base64url encoding which differs from regular base64 encoding as follows + * padding is skipped so the pad character '=' doesn't have to be percent encoded + * the 62nd and 63rd regular base64 encoding characters ('+' and '/') are replace with ('-' and '_') + The changes make the encoding alphabet file and URL safe. + + string to encode. + Base64Url encoding of the UTF8 bytes. + + + + Converts a subset of an array of 8-bit unsigned integers to its equivalent string representation which is encoded with base-64-url digits. Parameters specify + the subset as an offset in the input array, and the number of elements in the array to convert. + + An array of 8-bit unsigned integers. + An offset in inArray. + The number of elements of inArray to convert. + The string representation in base 64 url encoding of length elements of inArray, starting at position offset. + 'inArray' is null. + offset or length is negative OR offset plus length is greater than the length of inArray. + + + + Converts a subset of an array of 8-bit unsigned integers to its equivalent string representation which is encoded with base-64-url digits. + + An array of 8-bit unsigned integers. + The string representation in base 64 url encoding of length elements of inArray, starting at position offset. + 'inArray' is null. + offset or length is negative OR offset plus length is greater than the length of inArray. + + + + Converts the specified string, base-64-url encoded to utf8 bytes. + base64Url encoded string. + UTF8 bytes. + + + + Decodes the string from Base64UrlEncoded to UTF8. + + string to decode. + UTF8 string. + + + + Base64 encode/decode implementation for as per https://tools.ietf.org/html/rfc4648#section-5. + Uses ArrayPool[T] to minimize memory usage. + + + + + Decodes a Base64UrlEncoded string into a byte array. + + The string to decode. + Decoded bytes. + + + + Decodes a Base64UrlEncoded string into a byte array. + + String to decode. + Index of char in to start decode operation. + Number of chars in to decode. + Decoded bytes. + + + + Decodes a Base64UrlEncoded string and then performs an action. + + String to decode. + Index of char in to start decode operation. + Number of chars in to decode from . + Input parameter to action. + Action to perform on decoded bytes. + Output type of decoding action. + Type of Input parameter to action. + Instance of {T}. + + The buffer for the decode operation uses shared memory pool to avoid allocations. + The length of the rented array of bytes may be larger than the decoded bytes, therefore the action needs to know the actual length to use. + The result of is passed to the action. + + + + + Decodes a Base64UrlEncoded string and then performs an action. + + The string to decode. + Index of char in to start decode operation from. + Count of char in to decode. + Action to perform on decoded bytes. + Return type of operation. + Instance of {T}. + + The buffer for the decode operation uses shared memory pool to avoid allocations. + The length of the rented array of bytes may be larger than the decoded bytes, therefore the action needs to know the actual length to use. + The result of is passed to the action. + + + + + Decodes a Base64UrlEncoded string and then performs an action. + + The string to decode. + Index of char in to start decode operation from. + Count of char in to decode. + Input parameter 1 to action. + Input parameter 2 to action. + Input parameter 3 to action. + Action to perform on decoded bytes. + Output type of decoding action. + Type of Input parameter 1 to action. + Type of Input parameter 2 to action. + Type of Input parameter 3 to action. + Instance of {T}. + + The buffer for the decode operation uses shared memory pool to avoid allocations. + The length of the rented array of bytes may be larger than the decoded bytes, therefore the action needs to know the actual length to use. + The result of is passed to the action. + + + + + Decodes a Base64UrlEncoded string into a byte array. + + String to decode. + Index of char in to start decode operation. + Number of chars in to decode. + byte array to place results. + + Changes from Base64UrlEncoder implementation + 1. Padding is optional. + 2. '+' and '-' are treated the same. + 3. '/' and '_' are treated the same. + + + + + Encode byte array to Base64UrlEncoded string. + + Bytes to encode. + Base64Url encoded string. + + + + Encode byte array to Base64UrlEncoded string. + + Bytes to encode. + Index into to start encode operation. + Number of bytes in to encode, starting from offset. + Base64Url encoded string. + + + + Validates the input string for decode operation. + + String to validate. + Index of char in to start decode operation. + Number of chars in to decode, starting from offset. + Size of the decoded bytes arrays. + + + + Represents a generic metadata configuration which is applicable for both XML and JSON based configurations. + + + + + Gets the issuer specified via the metadata endpoint. + + + + + Gets the that the IdentityProvider indicates are to be used in order to sign tokens. + + + + + Gets or sets the token endpoint specified via the metadata endpoint. + This is the fed:PassiveRequestorEndpoint in WS-Federation, https://docs.oasis-open.org/wsfed/federation/v1.2/os/ws-federation-1.2-spec-os.html#:~:text=fed%3ASecurityTokenServiceType/fed%3APassiveRequestorEndpoint + Or the token_endpoint in the OIDC metadata. + + + + + Gets or sets the token endpoint specified via the metadata endpoint. + This is the fed:SecurityTokenServiceType in WS-Federation, http://docs.oasis-open.org/wsfed/federation/v1.2/os/ws-federation-1.2-spec-os.html#:~:text=fed%3ASecurityTokenSerivceEndpoint + + + + + Gets the that the IdentityProvider indicates are to be used in order to decrypt tokens. + + + + + Comparison class for a . + + + + + Represents a generic configuration manager. + + + + + Gets or sets the that controls how often an automatic metadata refresh should occur. + + + + + 12 hours is the default time interval that afterwards will obtain new configuration. + + + + + 1 hour is the default time interval that a last known good configuration will last for. + + + + + 5 minutes is the default time interval that must pass for to obtain a new configuration. + + + + + The default constructor. + + + + + Constructor. + + The event queue task creation option. + + + + Obtains an updated version of if the appropriate refresh interval has passed. + This method may return a cached version of the configuration. + + CancellationToken + Configuration of type Configuration. + This method on the base class throws a as it is meant to be + overridden by the class that extends it. + + + + Gets all valid last known good configurations. + + A collection of all valid last known good configurations. + + + + The last known good configuration or LKG (a configuration retrieved in the past that we were able to successfully validate a token against). + + + + + The length of time that a last known good configuration is valid for. + + + + + The metadata address to retrieve the configuration from. + + + + + 5 minutes is the minimum value for automatic refresh. can not be set less than this value. + + + + + 1 second is the minimum time interval that must pass for to obtain new configuration. + + + + + The minimum time between retrievals, in the event that a retrieval failed, or that a refresh was explicitly requested. + + + + + Indicates whether the last known good feature should be used, true by default. + + + + + Indicates whether the last known good configuration is still fresh, depends on when the LKG was first used and it's lifetime. + + + + + Indicate that the configuration may be stale (as indicated by failing to process incoming tokens). + + + + + An opaque context used to store work when working with authentication artifacts. + + + + + Instantiates a new with a default activityId. + + + + + Instantiates a new with an activityId. + + + + + A class which contains useful methods for processing collections. + + + + + Checks whether is null or empty. + + The type of the . + The to be checked. + True if is null or empty, false otherwise. + + + + Constants for compression algorithms. + + + + + Compression provider factory for compression and decompression. + + + + + Static constructor that initializes the default . + + + + + Default constructor for . + + + + + Constructor that creates a deep copy of given object. + + to copy from. + + + + Returns the default instance. + + + + + Extensibility point for custom compression support application wide. + + + + + Answers if an algorithm is supported. + + the name of the crypto algorithm. + true if the algorithm is supported, false otherwise. + + + + Returns a for a specific algorithm. + + the decompression algorithm. + a . + + + + Defines the options which can be used to configure the internal LKG configuration cache. + See for more details. + + + + + 10 is the default size limit of the cache (in number of items) for last known good configuration. + + + + + Gets or sets the BaseConfgiurationComparer that to compare . + + + + + The size limit of the cache (in number of items) for last known good configuration. + + + + + The event queue task creation option, default to None instead of LongRunning as LongRunning will always start a task on a new thread instead of a thread from ThreadPool. + + + + + Whether or not to remove expired items. + + + + + Definition of cache for crypto providers + + + + + Returns the cache key to use when looking up an entry into the cache for a + + the to create the key for. + the cache key to use for finding a . + + + + Returns the 'key' that will be used to find a crypto provider in this cache. + + the key that is used to by the crypto provider. + the algorithm that is used by the crypto provider. + the typeof the crypto provider obtained by calling object.GetType(). + the cache key to use for finding a crypto provider. + + + + Trys to adds a to this cache. + + to cache. + true if the was added, false if the cache already contained the + + + + Trys to find a in this cache. + + the key that is used to by the crypto provider. + the algorithm that is used by the crypto provider. + the typeof the crypto provider obtained by calling object.GetType(). + a bool to indicate if the will be used to sign. + the if found. + true if a was found, false otherwise. + + + + Trys to remove a from this cache. + + to remove. + true if the was removed, false if the was not found. + + + + Specifies the CryptoProviderCacheOptions which can be used to configure the internal cryptoprovider cache. + We are using our own simple LRU caching implementation across all targets. + See for more details. + + + + + Default value for . + + + + + Gets or sets the size of the cache (in number of items). + 20% of the cache will be evicted whenever the cache gets to 95% of this size. + Items will be evicted from least recently used to most recently used. + + + + + Creates cryptographic operators by specifying a 's and algorithms. + + + + + Returns the default instance. + + + + + Gets or sets the default value for caching of 's. + + + + + Gets or sets the maximum size of the object pool used by the SignatureProvider that are used for crypto objects. + + + + + Static constructor that initializes the default . + + + + + Default constructor for . + + + + + Initializes an instance of a . + + + The cache to use for caching CryptoProviders + + + + + Constructor that creates a deep copy of given object. + + to copy from. + + + + Gets the + + + + + Extensibility point for creating custom cryptographic operators. + + By default, if set, will be called before creating cryptographic operators. + If true is returned, then will be called. The will throw if the + Cryptographic operator returned is not of the correct type. + + + + Gets or sets a bool controlling if should be cached. + + + + + Gets or sets the maximum size of the object pool used by the SignatureProvider that are used for crypto objects. + + + + + Creates an instance of for a specific <SecurityKey, Algorithm>. + + the to use. + the algorithm to use. + thrown if is null. + thrown if is null or empty. + thrown if and algorithm pair are not supported. + thrown if returns a type that is not assignable from . + + If is set and returns true. + is called to obtain the . + + When finished with the call . + + an instance of + + + + Creates an instance of for a specific <SecurityKey, Algorithm>. + + the to use. + the algorithm to use. + thrown if is null. + thrown if is null or empty. + thrown if and algorithm pair are not supported. + thrown if returns a type not assignable from . + + If is set and returns true. + is called to obtain the . + + When finished with the call . + + an instance of + + + + Creates an instance of for a specific <SecurityKey, Algorithm>. + + the to use. + the algorithm to use. + thrown if is null. + thrown if is null or empty. + thrown if and algorithm pair are not supported. + thrown if returns a type that is not assignable from . + + If is set and returns true. + is called to obtain the . + + When finished with the call . + + an instance of + + + + Creates a that creates a signature with the algorithm and . + + the to use for signing. + the algorithm to use for signing. + thrown if is null. + thrown if is null or empty. + thrown if is too small. + thrown if is not assignable from or . + thrown if the key / algorithm is not supported. + thrown if returns a type that is not assignable from . + + AsymmetricSignatureProviders require access to a PrivateKey for Signing. + When finished with the call . + If is set and returns true. + is called to obtain the . + + + A that can be used to create a signature using the and algorithm. + + + + Creates a that creates a signature with the algorithm and . + + the to use for signing. + the algorithm to use for signing. + indicates if the should be cached for reuse. + thrown if is null. + thrown if is null or empty. + thrown if is too small. + thrown if is not assignable from or . + thrown if the key / algorithm is not supported. + thrown if returns a type that is not assignable from . + + AsymmetricSignatureProviders require access to a PrivateKey for Signing. + When finished with the call . + If is set and returns true. + is called to obtain the . + + + A that can be used to create a signature using the and algorithm. + + + + Creates a that supports the and algorithm. + + The to use for signature verification. + The algorithm to use for verifying. + thrown if is null. + thrown if is null or empty. + thrown if is too small. + thrown if is not assignable from or . + thrown if the key / algorithm is not supported. + thrown if returns a type that is not assignable from . + When finished with the call . + If is set and returns true. + is called to obtain the . + + + A that can be used to validate a signature using the and algorithm. + + + + Creates a that supports the and algorithm. + + The to use for signature verification. + The algorithm to use for verifying. + should the be cached. + thrown if is null. + thrown if is null or empty. + thrown if is too small. + thrown if is not assignable from or . + thrown if the key / algorithm is not supported. + thrown if returns a type that is not assignable from . + When finished with the call . + If is set and returns true. + is called to obtain the . + + + A that can be used to validate a signature using the and algorithm. + + + + Creates a for a specific algorithm. + + the name of the hash algorithm to create. + thrown if is null or empty. + thrown if returns a type that is not assignable from . + thrown if is not supported. + When finished with the call . + If is set and returns true. + is called to obtain the . + + + A . + + + + Creates a for a specific algorithm. + + the name of the hash algorithm to create. + thrown if is null or empty. + thrown if returns a type that is not assignable from . + thrown if is not supported. + When finished with the call . + If is set and returns true. + is called to obtain the . + + + A . + + + + Returns a for a specific algorithm. + + bytes to use to create the Keyed Hash. + the name of the keyed hash algorithm to create. + thrown if is null. + thrown if is null or empty. + thrown if returns a type that is not assignable from . + is not supported. + When finished with the call . + If is set and returns true. + is called to obtain the . + + + A . + + + + For some security key types, in some runtimes, it's not possible to extract public key material and create an . + In these cases, will be an empty string, and these keys should not be cached. + + to be examined. + True if should be cached, false otherwise. + + + + Checks if an algorithm is supported. + + the name of the Hash algorithm. + Only considers known Hash algorithms. + true if: + + If is set and returns true. + + The algorithm is supported. + + + + + + Checks if the algorithm and is supported. + + the security algorithm to apply. + the . + Algorithms are supported for specific key types. + For example: + and will return true. + and will return false. + + true if: + + If is set and returns true. + + The algorithm / key pair is supported. + + + + + + When finished with a call this method for cleanup. The default behavior is to call + + to be released. + thrown if is null. + + + + When finished with a call this method for cleanup."/> + + to be released. + thrown if is null. + + + + When finished with a call this method for cleanup."/> + + to be released. + thrown if is null. + + + + When finished with a call this method for cleanup. The default behavior is to call + + to be released. + thrown if is null. + + + + Helper class for adding DateTimes and Timespans. + + + + + Add a DateTime and a TimeSpan. + The maximum time is DateTime.MaxTime. It is not an error if time + timespan > MaxTime. + Just return MaxTime. + + Initial value. + to add. + as the sum of time and timespan. + + + + Gets the Maximum value for a DateTime specifying kind. + + DateTimeKind to use. + DateTime of specified kind. + + + + Gets the Minimum value for a DateTime specifying kind. + + DateTimeKind to use. + DateTime of specified kind. + + + + Ensures that DataTime is UTC. + + to convert. + + + + + Ensures that DateTime is UTC. + + to convert. + + + + + A compression provider that supports compression and decompression using the algorithm. + + + + + Initializes a new instance of the class used to compress and decompress used the algorithm. + + + + + Initializes a new instance of the class used to compress and decompress used the algorithm. + The compression level to use when compressing. + + + + + Gets the compression algorithm. + + + + + Specifies whether compression should emphasize speed or compression size. + Set to by default. + + + + + Decompress the value using DEFLATE algorithm. + + the bytes to decompress. + the decompressed bytes. + + + + Compress the value using the DEFLATE algorithm. + + the bytes to compress. + the compressed bytes. + + + + Answers if a compression algorithm is supported. + + the name of the compression algorithm. + true if the compression algorithm is supported, false otherwise. + + + + This adapter abstracts the differences between versions of .Net targets. + + + + + Initializes a new instance of the class. + + + creation is not supported by some platforms. + For more details, see https://aka.ms/IdentityModel/create-ecdsa. + + + + + Creates an ECDsa object using the and . + + + + + Creates an ECDsa object using the and . + 'ECParameters' structure is available in .NET Framework 4.7+, .NET Standard 1.6+, and .NET Core 1.0+. + This method is supported only on Windows as other platforms don't support operations with . + + + + + Returns the size of key in bytes + + Represents ecdsa curve -P256, P384, P521 + Size of the key in bytes + + + + Magic numbers identifying ECDSA blob types + + + + + Returns the magic value representing the curve corresponding to the curve id. + + Represents ecdsa curve -P256, P384, P512 + Whether the provider will create signatures or not + Uint representing the magic number + + + + Tests if user's runtime platform supports operations using . + + True if operations using are supported on user's runtime platform, false otherwise. + + + + Creates an ECDsa object using the and . + 'ECParameters' structure is available in .NET Framework 4.7+, .NET Standard 1.6+, and .NET Core 1.0+. + + + + + Returns the elliptic curve corresponding to the curve id. + + Represents ecdsa curve -P256, P384, P512 + + + + Tests if user application's runtime supports structure. + + True if structure is supported, false otherwise. + + + + Throws during runtime if user application's runtime doesn't support structure. + + + + + Represents a ECDsa security key. + + + + + Returns a new instance of . + + + + + + instance used to initialize the key. + + + + + Gets a bool indicating if a private key exists. + + true if it has a private key; otherwise, false. + + + + Gets an enum indicating if a private key exists. + + 'Exists' if private key exists for sure; 'DoesNotExist' if private key doesn't exist for sure; 'Unknown' if we cannot determine. + + + + Gets key size. + + + + + Determines whether the can compute a JWK thumbprint. + + true if JWK thumbprint can be computed; otherwise, false. + https://datatracker.ietf.org/doc/html/rfc7638 + + + + Computes a sha256 hash over the . + + A JWK thumbprint. + https://datatracker.ietf.org/doc/html/rfc7638 + + + + Collection of text encoding related helper methods. + + + + + Obtains bytes from a string using the Encoding and then performs an action. + + String to process. + Encoding used to obtain bytes. + Operation to invoke with result which is byte array and length of useful data in array with offset as 0. + Return type of operation. + Instance of {T}. + + The encoding operation uses shared memory pool to avoid allocations. + The length of the rented array of bytes may be larger than the decoded bytes, therefore the action needs to know the actual length to use. + is passed to the action. + + + + + Obtains bytes from a string using the Encoding and then performs an action. + + String to process. + Index to start from in . + Length of characters to operate in from . + Encoding used to obtain bytes. + Operation to invoke with result which is byte array and length of useful data in array with offset as 0. + Return type of operation. + Instance of {T}. + + The encoding operation uses shared memory pool to avoid allocations. + The length of the rented array of bytes may be larger than the decoded bytes, therefore the action needs to know the actual length to use. + is passed to the action. + + + + + Obtains bytes from a string using the Encoding and then performs an action. + + String to process. + Index to start from in . + Length of characters to operate in from . + Encoding used to obtain bytes. + Input parameter 1 to action. + Input parameter 2 to action. + Input parameter 3 to action. + Action to perform with bytes. + Return type of operation. + Type of Input parameter 1 to action. + Type of Input parameter 2 to action. + Type of Input parameter 3 to action. + Instance of {T}. + + The encoding operation uses shared memory pool to avoid allocations. + The length of the rented array of bytes may be larger than the decoded bytes, therefore the action needs to know the actual length to use. + is passed to the action. + + + + + Encodes the string using given Encoding, and invokes the operation with the result. + + Return type of operation. + Input parameter to operation. + String to process. + Encoding used to obtain bytes. + Additional operation parameter. + Operation to invoke with result which is byte array and length of useful data in array with offset as 0. + Result of operation. + + The encoding operation uses shared memory pool to avoid allocations. + The length of the rented array of bytes may be larger than the decoded bytes, therefore the action needs to know the actual length to use. + is passed to the action. + + + + + Obtains bytes from a string using the Encoding and then performs an action. + + String to process. + Index to start from in . + Length of characters to operate in from . + Encoding used to obtain bytes. + Additional operation parameter. + Operation to invoke with result which is byte array and length of useful data in array with offset as 0. + Return type of operation. + Input parameter to operation. + Instance of {T}. + + The encoding operation uses shared memory pool to avoid allocations. + The length of the rented array of bytes may be larger than the decoded bytes, therefore the action needs to know the actual length to use. + is passed to the action. + + + + + A class for properties that are used for token encryption. + + + + + Initializes a new instance of the class. + + . + A key wrap algorithm to use when encrypting a session key. + Data encryption algorithm to apply. + if 'certificate' is null. + if 'alg' is null or empty. + if 'enc' is null or empty. + + + + Initializes a new instance of the class. + + to use when encrypting a session key. + A key wrap algorithm to use when encrypting a session key. + Data encryption algorithm to apply. + if 'key' is null. + if 'alg' is null or empty. + if 'enc' is null or empty. + + + + Initializes a new instance of the class. + + Used in scenarios when a key represents a 'shared' symmetric key. + For example, SAML 2.0 Assertion will be encrypted using a provided symmetric key + which won't be serialized to a SAML token. + + to apply. + Data encryption algorithm to apply. + If the is not a . + if 'enc' is null or empty. + + + + Gets the key wrap algorithm used for session key encryption. + + + + + Gets the data encryption algorithm. + + + + + Public key used in Key Agreement Algorithms + + + + + Users can override the default with this property. This factory will be used for creating encryption providers. + + + + + Gets or sets a bool that controls if the encrypted token creation will set default 'cty' if not specified. + + Applies to only JWT tokens. + + + + + + Gets the used for encryption. + + + + + Provides authenticated encryption and decryption services. + + + + + Initializes a new instance of the class used for encryption and decryption. + + The that will be used for crypto operations. + The encryption algorithm to apply. + 'key' is null. + 'algorithm' is null or whitespace. + key size is not large enough. + 'algorithm' is not supported. + a symmetricSignatureProvider is not created. + + + + Gets the encryption algorithm that is being used. + + + + + Gets or sets a user context for a . + + This is null by default. This can be used by applications for extensibility scenarios. + + + + Gets the that is being used. + + + + + Encrypts the 'plaintext' + + the data to be encrypted. + will be combined with iv and ciphertext to create an authenticationtag. + containing ciphertext, iv, authenticationtag. + plaintext is null or empty. + authenticationData is null or empty. + AES crypto operation threw. See inner exception for details. + + + + Encrypts the 'plaintext' + + the data to be encrypted. + will be combined with iv and ciphertext to create an authenticationtag. + initialization vector for encryption. + containing ciphertext, iv, authenticationtag. + is null or empty. + is null or empty. + Thrown if the AES crypto operation threw. See inner exception for details. + Thrown if the internal is disposed. + + + + Decrypts ciphertext into plaintext + + the encrypted text to decrypt. + the authenticateData that is used in verification. + the initialization vector used when creating the ciphertext. + the authenticationTag that was created during the encyption. + decrypted ciphertext + is null or empty. + is null or empty. + is null or empty. + is null or empty. + Thrown if the signature over the authenticationTag fails to verify. + Thrown if the AES crypto operation threw. See inner exception. + Thrown if the internal is disposed. + + + + Calls and + + + + + Releases managed resources. + + true, if called from Dispose(), false, if invoked inside a finalizer. + + + + Checks if an 'key, algorithm' pair is supported + + the + the algorithm to check. + true if 'key, algorithm' pair is supported. + + + + The algorithm parameter logically defines a HMAC algorithm. + This method returns the HMAC to use. + + + + + + + Called to obtain the byte[] needed to create a + + that will be used to obtain the byte[]. + [] that is used to populated the KeyedHashAlgorithm. + if is null. + if a byte[] can not be obtained from SecurityKey. + and are supported. + For a .Key is returned + For a Base64UrlEncoder.DecodeBytes is called with if == JsonWebAlgorithmsKeyTypes.Octet + + + + + Checks that the key has sufficient length + + that contains bytes. + the algorithm to apply. + if is null. + if is null or empty. + if is not a supported algorithm. + + + + Contains the results of operation. + + + + + Initializes a new + + the used during + protected text. + the initialization vector used. + the bytes that need be passed to . + + + + Gets the . + + + + + Gets the Ciphertext. + + + + + Gets the initialization vector. + + + + + Gets the authentication tag + + + + + Provides Wrap key and Unwrap key services. + + + + + Gets the KeyWrap algorithm that is being used. + + + + + Gets or sets a user context for a . + + This is null by default. This can be used by runtimes or for extensibility scenarios. + + + + Gets the that is being used. + + + + + Calls and + + + + + Can be over written in descendants to dispose of internal components. + + true, if called from Dispose(), false, if invoked inside a finalizer + + + + Unwrap a key. + + key to unwrap. + Unwrapped key. + + + + Wrap a key. + + the key to be wrapped + wrapped key. + + + + Provides RSA Wrap key and Unwrap key services. + + + + + Initializes a new instance of used for wrapping and un-wrappping keys. + These keys are usually symmetric session keys that are wrapped using the recipients public key. + The that will be used for cryptographic operations. + The KeyWrap algorithm to apply. + Whether this is required to un-wrap keys. If true, the private key is required. + 'key' is null. + 'algorithm' is null. + The key size doesn't match the algorithm. + If and algorithm pair are not supported. + Failed to create RSA algorithm with provided key and algorithm. + + + + + Gets the KeyWrap algorithm that is being used. + + + + + Gets or sets a user context for a . + + This is null by default. This is for use by the application and not used by this SDK. + + + + Gets the that is being used. + + + + + Disposes of internal components. + + true, if called from Dispose(), false, if invoked inside a finalizer. + + + + Checks if an algorithm is supported. + + The that will be used for crypto operations. + The KeyWrap algorithm to apply. + true if the algorithm is supported; otherwise, false. + + + + Unwrap a key using RSA decryption. + + the bytes to unwrap. + Unwrapped key + 'keyBytes' is null or length == 0. + If has been called. + Failed to unwrap the wrappedKey. + If the internal RSA algorithm is null. + + + + Wrap a key using RSA encryption. + + the key to be wrapped + A wrapped key + 'keyBytes' is null or has length == 0. + If has been called. + Failed to wrap the 'keyBytes'. + If the internal RSA algorithm is null. + + + + Provides Wrap key and Unwrap key services. + + + + + Initializes a new instance of the class used for wrap key and unwrap key. + The that will be used for crypto operations. + The KeyWrap algorithm to apply. + 'key' is null. + 'algorithm' is null. + If and algorithm pair are not supported. + The cannot be converted to byte array + The keysize doesn't match the algorithm. + Failed to create symmetric algorithm with provided key and algorithm. + + + + + Gets the KeyWrap algorithm that is being used. + + + + + Gets or sets a user context for a . + + This is null by default. This can be used by runtimes or for extensibility scenarios. + + + + Gets the that is being used. + + + + + Disposes of internal components. + + true, if called from Dispose(), false, if invoked inside a finalizer. + + + + Returns the . + + + The cannot be converted to byte array + The keysize doesn't match the algorithm. + Failed to create symmetric algorithm with provided key and algorithm. + + + + Answers if an algorithm is supported + + the + the algorithm to use + true if the algorithm is supported; otherwise, false. + + + + Unwrap a key using Symmetric decryption. + + bytes to unwrap + Unwraped key + 'keyBytes' is null or length == 0. + 'keyBytes' is not a multiple of 8. + If has been called. + Failed to unwrap the wrappedKey. + + + + Wrap a key using Symmetric encryption. + + the key to be wrapped + The wrapped key result + 'keyBytes' is null or has length 0. + 'keyBytes' is not a multiple of 8. + If has been called. + Failed to wrap 'keyBytes'. + + + + Returns the absolute DateTime or the Seconds since Unix Epoch, where Epoch is UTC 1970-01-01T0:0:0Z. + + + + + DateTime as UTV for UnixEpoch + + + + + Per JWT spec: + Gets the number of seconds from 1970-01-01T0:0:0Z as measured in UTC until the desired date/time. + + The DateTime to convert to seconds. + if dateTimeUtc less than UnixEpoch, return 0 + the number of seconds since Unix Epoch. + + + + Creates a DateTime from epoch time. + + Number of seconds. + The DateTime in UTC. + + + + This is an LRU cache implementation that relies on an event queue rather than locking to achieve thread safety. + This approach has been decided on in order to optimize the performance of the get and set operations on the cache. + This cache contains a doubly linked list in order to maintain LRU order, as well as a dictionary (map) to keep track of + keys and expiration times. The linked list (a structure which is not thread-safe) is NEVER modified directly inside + an API call (e.g. get, set, remove); it is only ever modified sequentially by a background thread. On the other hand, + the map is a which may be modified directly inside an API call or + through eventual processing of the event queue. This implementation relies on the principle of 'eventual consistency': + though the map and it's corresponding linked list may be out of sync at any given point in time, they will eventually line up. + See here for more details: + https://aka.ms/identitymodel/caching + + The key type to be used by the cache. + The value type to be used by the cache + + + + Constructor. + + The capacity of the cache, used to determine if experiencing overflow. + The event queue task creation option, default to None instead of LongRunning as LongRunning will always start a task on a new thread instead of ThreadPool. + The equality comparison implementation to be used by the map when comparing keys. + Whether or not to remove expired items. + The period to wait to remove expired items, in seconds. + Whether or not to maintain items in a LRU fashion, moving to front of list when accessed in the cache. + + + + Occurs when the application is ready to exit. + + The sender of the event. + The event argument. + + + + Occurs when an AppDomain is about to be unloaded. + + The sender of the event. + The event argument. + + + + Stop the event queue task. + This is provided mainly for users who have unit tests that check for running task(s) to stop the task at the end of each test. + + + + + Stop the event queue task immediately if it is running. This allows the task/thread to terminate gracefully. + Currently there is no unmanaged resource, if any is added in the future it should be disposed of in this method. + + + + + This is the delegate for the event queue task. + + + + + Remove all expired cache items from _doubleLinkedList and _map. + + Number of items removed. + + + + Remove all expired cache items from the _map ONLY. This is called for the non-LRU (_maintainLRU = false) scenaro. + The enumerator returned from the dictionary is safe to use concurrently with reads and writes to the dictionary, according to the MS document. + + Number of items removed. + + + + Remove items from the LinkedList by the desired compaction percentage. + This should be a private method. + + + + + Remove items from the Dictionary by the desired compaction percentage. + Since _map does not have LRU order, items are simply removed from using FirstOrDefault(). + + + + + When the cache is at _maxCapacityPercentage, it needs to be compacted by _compactionPercentage. + This method calculates the new size of the cache after being compacted. + + The new target cache size after compaction. + + + + This is the method that determines the end time for the event queue task. + The goal is to be able to track the incoming events and predict how long the task should run in order to + avoid a long running task and reduce the overhead costs of restarting tasks. + For example, maybe we can track the last three events' time and set the _eventQueueRunDurationInSeconds = 2 * average_time_between_events. + Note: tasks are based on thread pool so the overhead should not be huge but we should still try to minimize it. + + the time when the event queue task should end + + + + This method is called after an item is added to the event queue. It will start the event queue task if one is not already running (_eventQueueTaskState != EventQueueTaskRunning). + Using CompareExchange to set the _eventQueueTaskState prevents multiple tasks from being started. + + + + Each time a node gets accessed, it gets moved to the beginning (head) of the list if the _maintainLRU == true + + + Removes a particular key from the cache. + + + + FOR TESTING ONLY. + + + + + + FOR TESTING ONLY. + + + + + FOR TESTING ONLY. + + + + + FOR TESTING ONLY. + + + + + + FOR TESTING ONLY. + + + + + FOR TESTING PURPOSES ONLY. + This is for tests to verify all tasks exit at the end of tests if the queue is empty. + + + + + FOR TESTING PURPOSES ONLY. + + + + + Throw this exception when a received has invalid arguments. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class with a specified error message + and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The that is the cause of the current exception, or a null reference if no inner exception is specified. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + Thrown when JWE compression fails. + + + + + Initializes a new instance of + + + + + Initializes a new instance of + + + + + Initializes a new instance of + + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + Thrown when JWE decompression fails. + + + + + Initializes a new instance of + + + + + Initializes a new instance of + + + + + Initializes a new instance of + + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + Represents a security token exception when decryption failed. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class with a specified error message + and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The that is the cause of the current exception, or a null reference if no inner exception is specified. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + Represents a security token exception when encryption failed. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class with a specified error message + and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The that is the cause of the current exception, or a null reference if no inner exception is specified. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + This exception is thrown when a security token contained a key identifier but the key was not found by the runtime + when decrypting a token. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + A that represents the root cause of the exception. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + Represents a security token exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class with a specified error message + and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The that is the cause of the current exception, or a null reference if no inner exception is specified. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + When overridden in a derived class, sets the System.Runtime.Serialization.SerializationInfo + with information about the exception. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + thrown if is null. + + + + Throw this exception when a received Security Token has expiration time in the past. + + + + + Gets or sets the Expires value that created the validation exception. This value is always in UTC. + + + + + Initializes a new instance of + + + + + Initializes a new instance of + + + + + Initializes a new instance of + + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + + + + This exception is thrown when a cryptographic algorithm is invalid. + + + + + Gets or sets the invalid algorithm that created the validation exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Additional information to be included in the exception and displayed to user. + + + + Initializes a new instance of the class. + + Additional information to be included in the exception and displayed to user. + A that represents the root cause of the exception. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + + + + This exception is thrown when 'audience' of a token was not valid. + + + + + Gets or sets the InvalidAudience that created the validation exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + A that represents the root cause of the exception. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + + + + This exception is thrown when 'issuer' of a token was not valid. + + + + + Gets or sets the InvalidIssuer that created the validation exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + A that represents the root cause of the exception. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + + + + This exception is thrown when 'lifetime' of a token was not valid. + + + + + Gets or sets the NotBefore value that created the validation exception. This value is always in UTC. + + + + + Gets or sets the Expires value that created the validation exception. This value is always in UTC. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + A that represents the root cause of the exception. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + + + + This exception is thrown when 'signature' of a token was not valid. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + A that represents the root cause of the exception. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + Throw this exception when a received Security Token has an invalid issuer signing key. + + + + + Gets or sets the SigningKey that was found invalid. + + + + + Initializes a new instance of + + + + + Initializes a new instance of + + + + + Initializes a new instance of + + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + This exception is thrown when the token type ('typ' header claim) of a JWT token is invalid. + + + + + Gets or sets the invalid type that created the validation exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Additional information to be included in the exception and displayed to user. + + + + Initializes a new instance of the class. + + Additional information to be included in the exception and displayed to user. + A that represents the root cause of the exception. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + + + + Represents a key wrap exception when encryption failed. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class with a specified error message + and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The that is the cause of the current exception, or a null reference if no inner exception is specified. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + Represents a exception when the token is malformed. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class with a specified error message + and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The that is the cause of the current exception, or a null reference if no inner exception is specified. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + This exception is thrown when a security is missing an ExpirationTime. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + A that represents the root cause of the exception. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + Throw this exception when a received Security token has an effective time + in the future. + + + + + Gets or sets the NotBefore value that created the validation exception. This value is always in UTC. + + + + + Initializes a new instance of + + + + + Initializes a new instance of + + + + + Initializes a new instance of + + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + + + + This exception is thrown when an add to the TokenReplayCache fails. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + A that represents the root cause of the exception. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + Throw this exception when a received Security Token has been replayed. + + + + + Initializes a new instance of + + + + + Initializes a new instance of + + + + + Initializes a new instance of + + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + This exception is thrown when a security token contained a key identifier but the key was not found by the runtime. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + A that represents the root cause of the exception. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + This exception is thrown when a security token contained a key identifier but the key was not found by the runtime + and when validation errors exist over the security token. This exception is not intended to be used as a signal + to refresh keys. + + + This exception type is now considered obsolete and will be removed in the next major version (7.0.0). + + + + + Indicates the type of the validation failure. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The validation failures. + Addtional information to be included in the exception and displayed to user. + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + + + + Initializes a new instance of the class. + + Addtional information to be included in the exception and displayed to user. + A that represents the root cause of the exception. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + + + + Represents a security token validation exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class with a specified error message + and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The that is the cause of the current exception, or a null reference if no inner exception is specified. + + + + Initializes a new instance of the class. + + the that holds the serialized object data. + The contextual information about the source or destination. + + + + The reason for being unable to validate + + + + + Indicates no validation failures + + + + + Indicates that the lifetime was invalid + + + + + Indicates that the issuer was invalid + + + + + Compression provider interface. + + + + + Gets the compression algorithm. + + + + + Called to determine if an algorithm is supported. + + the algorithm that defines the compression method. + true if supported + + + + Decompress. + + the value to decompress. + + + + Compress. + + the value to decompress. + + + + Provides extensibility for cryptographic operators. + If custom operators are needed for then can be set to + return these operators. will be before each creation. + + + + + Called to determine if a cryptographic operation is supported. + + the algorithm that defines the cryptographic operator. + the arguments required by the cryptographic operator. May be null. + true if supported + + + + returns a cryptographic operator that supports the algorithm. + + the algorithm that defines the cryptographic operator. + the arguments required by the cryptographic operator. May be null. + call when finished with the object. + + + + called to release the object returned from + + the object returned from . + + + + Defines a cache for crypto providers. + Current support is limited to only. + + + + + Creates a new instance of using the default . + + + + + Creates a new instance of using the specified . + + The options used to configure the . + + + + Creates a new instance of using the specified . + + The options used to configure the . + Options used to create the event queue thread. + The time used in ms for the timeout interval of the event queue. Defaults to 500 ms. + + + + Returns the cache key to use when looking up an entry into the cache for a + + the to create the key for. + if signatureProvider is null. + the cache key to use for finding a . + + + + Returns the 'key' that will be used to find a crypto provider in this cache. + + the key that is used to by the crypto provider. + the algorithm that is used by the crypto provider. + the typeof the crypto provider obtained by calling object.GetType(). + if securityKey is null. + if algorithm is null or empty string. + if typeofProvider is null or empty string. + the cache key to use for finding a crypto provider. + + + + Trys to adds a to this cache. + + to cache. + if signatureProvider is null. + + true if the was added, false if the cache already contained the or if should not be cached. + + if the is added will be set to 'this'. + + + + Trys to find a to this cache. + + the key that is used to by the crypto provider. + the algorithm that is used by the crypto provider. + the typeof the crypto provider obtained by calling object.GetType(). + a bool to indicate if the will be used to sign. + the if found. + if securityKey is null. + if algorithm is null or empty string. + if typeofProvider is null or empty string. + true if a was found, false otherwise. + + + + Trys to remove a from this cache. + + to remove. + if signatureProvider is null. + true if the was removed, false if the was not found. + if the is removed will be set to null. + + + + Calls and + Note: the EventBasedLRUCache is no longer being disposed of, but since this is a public class and can be used as base class of + custom cache implementations, we need to keep it as some implementations may override Dispose(). + + + + + If is true, this method disposes of and . + + True if called from the method, false otherwise. + + + + FOR TESTING ONLY. + + + + + FOR TESTING ONLY. + + + + + FOR TESTING ONLY. + + + + + FOR TESTING ONLY. + + + + + FOR TESTING ONLY. + + + + + FOR TESTING ONLY. + + + + + FOR TESTING PURPOSES ONLY. + + + + + Validators meant to be kept internal + + + + + Called after signature validation has failed to avoid a metadata refresh + + + + + ISecurityTokenValidator + + + + + Returns true if the token can be read, false otherwise. + + + + + Returns true if a token can be validated. + + + + + Gets and sets the maximum size in bytes, that a will be processed. + + + + + Validates a token passed as a string using + + + + + Interface that defines a simple cache for tacking replaying of security tokens. + + + + + Try to add a securityToken. + + the security token to add. + the time when security token expires. + true if the security token was successfully added. + + + + Try to find securityToken + + the security token to find. + true if the security token is found. + + + + Constants for JsonWebAlgorithms "kty" Key Type (sec 6.1) + https://datatracker.ietf.org/doc/html/rfc7518#section-6.1 + + + + + Represents a JSON Web Key as defined in https://datatracker.ietf.org/doc/html/rfc7517. + + + + + Initializes an new instance of . + + + + + Returns a new instance of . + + A string that contains JSON Web Key parameters in JSON format. + + If 'json' is null or empty. + If 'json' fails to deserialize. + + + + Initializes an new instance of from a json string. + + A string that contains JSON Web Key parameters in JSON format. + If 'json' is null or empty. + If 'json' fails to deserialize. + + + + If this was converted to or from a SecurityKey, this field will be set. + + + + + If this was failed converted to a SecurityKey, this field will be set. + + + + + When deserializing from JSON any properties that are not defined will be placed here. + + + + + Gets or sets the 'alg' (KeyType). + + + + + Gets or sets the 'crv' (ECC - Curve). + + + + + Gets or sets the 'd' (ECC - Private Key OR RSA - Private Exponent). + + Value is formated as: Base64urlUInt + + + + Gets or sets the 'dp' (RSA - First Factor CRT Exponent). + + Value is formated as: Base64urlUInt + + + + Gets or sets the 'dq' (RSA - Second Factor CRT Exponent). + + Value is formated as: Base64urlUInt + + + + Gets or sets the 'e' (RSA - Exponent). + + + + + Gets or sets the 'k' (Symmetric - Key Value). + + Base64urlEncoding + + + + Gets the key id of this . + + + + + Gets the 'key_ops' (Key Operations). + + + + + Gets or sets the 'kid' (Key ID).. + + + + + Gets or sets the 'kty' (Key Type). + + + + + Gets or sets the 'n' (RSA - Modulus). + + Value is formatted as: Base64urlEncoding + + + + Gets or sets the 'oth' (RSA - Other Primes Info). + + + + + Gets or sets the 'p' (RSA - First Prime Factor).. + + Value is formatted as: Base64urlUInt + + + + Gets or sets the 'q' (RSA - Second Prime Factor).. + + Value is formatted as: Base64urlUInt + + + + Gets or sets the 'qi' (RSA - First CRT Coefficient).. + + Value is formatted as: Base64urlUInt + + + + Gets or sets the 'use' (Public Key Use).. + + + + + Gets or sets the 'x' (ECC - X Coordinate).. + + Value is formatted as: Base64urlEncoding + + + + Gets the 'x5c' collection (X.509 Certificate Chain).. + + + + + Gets or sets the 'x5t' (X.509 Certificate SHA-1 thumbprint).. + + + + + Gets or sets the 'x5t#S256' (X.509 Certificate SHA-256 thumbprint).. + + + + + Gets or sets the 'x5u' (X.509 URL).. + + + + + Gets or sets the 'y' (ECC - Y Coordinate).. + + Value is formatted as: Base64urlEncoding + + + + Gets the key size of . + + + + + Gets a bool indicating if a private key exists. + + true if it has a private key; otherwise, false. + + + + Determines whether the can compute a JWK thumbprint. + + true if JWK thumbprint can be computed; otherwise, false. + https://datatracker.ietf.org/doc/html/rfc7638 + + + + Computes the JWK thumprint per spec: https://datatracker.ietf.org/doc/html/rfc7638 />. + + A the JWK thumbprint. + + + + Creates a JsonWebKey representation of an asymmetric public key. + + JsonWebKey representation of an asymmetric public key. + https://datatracker.ietf.org/doc/html/rfc7800#section-3.2 + + + + Returns the formatted string: GetType(), Use: 'value', Kid: 'value', Kty: 'value', InternalId: 'value'. + + string + + + + Converts a into a + Supports: converting to a from one of: , , and . + + + + + Converts a into a + + a to convert. + a + if is null. + if is not a supported type. + Supports: , and . + + + + Converts a into a + + a to convert. + a + if is null. + + + + Converts a into a + + a to convert. + a + if is null. + + + + Converts a into a . + + a to convert. + + true to represent the as an , + false to represent the as an , using the "x5c" parameter. + + a . + if is null. + + + + Converts a into a + + a to convert. + a + if is null. + + + + Converts a into a + + an to convert. + a + if is null. + + + + Constants for JsonWebKey Elliptical Curve Types + https://datatracker.ietf.org/doc/html/rfc7518#section-6.2.1.1 + + + + + JsonWebKey parameter names + see: https://datatracker.ietf.org/doc/html/rfc7517 + + + + + JsonWebKey parameter names as UTF8 bytes + Used by UTF8JsonReader/Writer for performance gains. + + + + + Contains a collection of that can be populated from a json string. + + provides support for https://datatracker.ietf.org/doc/html/rfc7517. + + + + Returns a new instance of . + + a string that contains JSON Web Key parameters in JSON format. + + If 'json' is null or empty. + If 'json' fails to deserialize. + + + + Initializes an new instance of . + + + + + Initializes an new instance of from a json string. + + a json string containing values. + If 'json' is null or empty. + If 'json' fails to deserialize. + + + + When deserializing from JSON any properties that are not defined will be placed here. + + + + + Gets the . + + + + + Default value for the flag that controls whether unresolved JsonWebKeys will be included in the resulting collection of method. + + + + + Flag that controls whether unresolved JsonWebKeys will be included in the resulting collection of method. + + + + + Returns the JsonWebKeys as a . + + + To include unresolved JsonWebKeys in the resulting collection, set to false. + + + + + Names for Json Web Key Set Values + + + + + Constants for JsonWebKeyUse (sec 4.2) + https://datatracker.ietf.org/doc/html/rfc7517#section-4.2 + + + + + Creates a JsonException that provides information on what went wrong + + the . + the type the reader was expecting to find. + the name of the type being read. + the property name being read. + inner exception if any. + + + + + This method is called when deserializing a property value as an object. + Normally we put the object into a Dictionary[string, object]. + + the + the property name that is being read + the type that is being deserialized + if true reader.Read() will be called. + + + + + Writes an 'object' as a JsonProperty. + This was written to support what IdentityModel6x supported and is not meant to be a + general object serializer. + If a user needs to serialize a special value, then serialize the value into a JsonElement. + + + + + Writes values into an array. + Assumes the writer.StartArray() has been called. + + + + + + + Reads a JsonWebKey. see: https://datatracker.ietf.org/doc/html/rfc7517 + + a pointing at a StartObject. + + A . + + + + Reads a JsonWebKey. see: https://datatracker.ietf.org/doc/html/rfc7517 + + a pointing at a StartObject. + + A . + + + + This method will be used when reading OIDC metadata + + + + + + + Log messages and codes + + + + + Generic implementation of object pooling pattern with predefined pool size limit. The main + purpose is that limited number of frequently used objects can be kept in the pool for + further recycling. + + Notes: + 1) it is not the goal to keep all returned objects. Pool is not meant for storage. If there + is no space in the pool, extra returned objects will be dropped. + + 2) it is implied that if object was obtained from a pool, the caller will return it back in + a relatively short time. Keeping checked out objects for long durations is ok, but + reduces usefulness of pooling. Just new up your own. + + Not returning objects to the pool in not detrimental to the pool's work, but is a bad practice. + Rationale: + If there is no intent for reusing the object, do not use pool - just use "new". + + + + + Produces an instance. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search. + + + + + Returns objects to the pool. + + + Search strategy is a simple linear probing which is chosen for it cache-friendliness. + Note that Free will try to store recycled objects close to the start thus statistically + reducing how far we will typically search in Allocate. + + + + + Returns a string message for the specified Win32 error code. + + + + + Represents a Rsa security key. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + + + + + Gets a bool indicating if a private key exists. + + true if it has a private key; otherwise, false. + + + + Gets an enum indicating if a private key exists. + + 'Exists' if private key exists for sure; 'DoesNotExist' if private key doesn't exist for sure; 'Unknown' if we cannot determine. + + + + Gets RSA key size. + + + + + used to initialize the key. + + + + + instance used to initialize the key. + + + + + Determines whether the can compute a JWK thumbprint. + + true if JWK thumbprint can be computed; otherwise, false. + https://datatracker.ietf.org/doc/html/rfc7638 + + + + Computes a sha256 hash over the . + + A JWK thumbprint. + https://datatracker.ietf.org/doc/html/rfc7638 + + + + Constants for Security Algorithm. + + + + + Base class for Security Key. + + + + + Default constructor + + + + + This must be overridden to get the size of this . + + + + + Gets the key id of this . + + + + + Gets or sets . + + + + + Returns the formatted string: GetType(), KeyId: 'value', InternalId: 'value'. + + string + + + + Determines whether the can compute a JWK thumbprint. + + true if JWK thumbprint can be computed; otherwise, false. + https://datatracker.ietf.org/doc/html/rfc7638 + + + + Computes a sha256 hash over the . + + A JWK thumbprint. + https://datatracker.ietf.org/doc/html/rfc7638 + + + + Checks if can perform the cryptographic operation specified by the with this . + + the algorithm to apply. + true if can perform the cryptographic operation sepecified by the with this . + + + + Contains information about the keys inside the tokens. + + + + + Base class for security token. + + + + + + + + This must be overridden to get the Id of this . + + + + + This must be overridden to get the issuer of this . + + + + + This must be overridden to get the . + + + + + This must be overridden to get or set the that signed this instance. + + .ValidateToken(...) can this value when a is used to successfully validate a signature. + + + + This must be overridden to get the time when this was Valid. + + + + + This must be overridden to get the time when this is no longer Valid. + + + + + Contains some information which used to create a security token. + + + + + Gets or sets the value of the 'audience' claim. + + + + + Defines the compression algorithm that will be used to compress the JWT token payload. + + + + + Gets or sets the used to create a encrypted security token. + + + + + Gets or sets the value of the 'expiration' claim. This value should be in UTC. + + + + + Gets or sets the issuer of this . + + + + + Gets or sets the time the security token was issued. This value should be in UTC. + + + + + Gets or sets the notbefore time for the security token. This value should be in UTC. + + + + + Gets or sets the token type. + If provided, this will be added as the value for the 'typ' header parameter. In the case of a JWE, this will be added to both the inner (JWS) and the outer token (JWE) header. By default, the value used is 'JWT'. + If also contains 'typ' header claim value, it will override the TokenType provided here. + This value is used only for JWT tokens and not for SAML/SAML2 tokens + + + + + Gets or sets the which represents the claims that will be used when creating a security token. + If both and are set, the claim values in Subject will be combined with the values + in Claims. The values found in Claims take precedence over those found in Subject, so any duplicate + values will be overridden. + + + + + Gets or sets the which contains any custom header claims that need to be added to the JWT token header. + The 'alg', 'kid', 'x5t', 'enc', and 'zip' claims are added by default based on the , + , and/or provided and SHOULD NOT be included in this dictionary as this + will result in an exception being thrown. + These claims are only added to the outer header (in case of a JWE). + + + + + Gets or sets the which contains any custom header claims that need to be added to the inner JWT token header. + The 'alg', 'kid', 'x5t', 'enc', and 'zip' claims are added by default based on the , + , and/or provided and SHOULD NOT be included in this dictionary as this + will result in an exception being thrown. + + For JsonWebTokenHandler, these claims are merged with while adding to the inner JWT header. + + + + + + Gets or sets the used to create a security token. + + + + + Gets or sets the . + If both and are set, the claim values in Subject will be combined with the values + in Claims. The values found in Claims take precedence over those found in Subject, so any duplicate + values will be overridden. + + + + + Defines the interface for a Security Token Handler. + + + + + Creates an instance of + + + + + Returns . + + + true if attached; otherwise, false. + + + + Returns . + + + + + + Gets a value indicating whether this handler supports validation of tokens + handled by this instance. + v + 'True' if the instance is capable of SecurityToken + validation. + + + + Gets a value indicating whether the class provides serialization functionality to serialize token handled + by this instance. + + true if the WriteToken method can serialize this token. + + + + This must be overridden to get the System.Type of the SecurityToken this instance handles. + + + + + Indicates whether the is positioned at an element that can be read. + + An reader positioned at a start element. The reader should not be advanced. + 'true' if the token can be read. + + + + Indicates whether the current token string can be read as a token + of the type handled by this instance. + + The token string thats needs to be read. + 'True' if the ReadToken method can parse the token string. + + + + Gets security token. + + . + SecurityToken instance which represents the serialized token. + + + + Serializes to string a token of the type handled by this instance. + + A token of type TokenType. + The serialized token. + + + + This must be overridden to serialize to XML a token of the type handled by this instance. + + The XML writer. + A token of type . + + + + This must be overridden to deserialize token with the provided . + + . + the current . + SecurityToken instance which represents the serialized token. + + + + This must be overridden to validate a token passed as a string using + + A token of type . + the current . + The token of type that was validated. + + + + Reads and validates a token using a xmlReader and + + A pointing at the start element of the token. + Contains data and information needed for validation. + The that was validated. + + + + Provides signature services, signing and verifying. + + + + + Maintains the number of external references + see: , , + + + + + Initializes a new instance of the class used to create and verify signatures. + + The that will be used for signature operations. + The signature algorithm to apply. + is null. + is null or empty. + + + + Gets the signature algorithm. + + + + + Gets or sets a user context for a . + + This is null by default. This is for use by the application and not used by this SDK. + + + + Gets or sets the that is associated with this + + + + + Calls and + + + + + Can be over written in descendants to dispose of internal components. + + true, if called from Dispose(), false, if invoked inside a finalizer + + + + Gets the . + + + + + For testing purposes + + + + + This must be overridden to produce a signature over the 'input'. + + bytes to sign. + signed bytes + + + Verifies that the over using the + and specified by this + are consistent. + the bytes that were signed. + signature to compare against. + true if the computed signature matches the signature parameter, false otherwise. + + + + Verifies that a signature created over the 'input' matches the signature. Using and 'algorithm' passed to . + + The bytes to verify. + offset in to input bytes to caculate hash. + number of bytes of signature to use. + signature to compare against. + offset into signature array. + how many bytes to verfiy. + true if computed signature matches the signature parameter, false otherwise. + 'input' is null. + 'signature' is null. + 'input.Length' == 0. + 'signature.Length' == 0. + 'length < 1' + 'offset + length > input.Length' + has been called. + + + + Gets or sets a bool indicating if this is expected to create signatures. + + + + + Defines the , algorithm and digest for digital signatures. + + + + + Initializes a new instance of the class. + + that will be used for signing. + Algorithm will be set to . + the 'digest method' if needed may be implied from the algorithm. For example implies Sha256. + if 'key' is null. + if 'algorithm' is null or empty. + + + + Initializes a new instance of the class. + + that will be used for signing. + The signature algorithm to apply. + the 'digest method' if needed may be implied from the algorithm. For example implies Sha256. + if 'certificate' is null. + if 'algorithm' is null or empty. + + + + Initializes a new instance of the class. + + . + The signature algorithm to apply. + the 'digest method' if needed may be implied from the algorithm. For example implies Sha256. + if 'key' is null. + if 'algorithm' is null or empty. + + + + Initializes a new instance of the class. + + . + The signature algorithm to apply. + The digest algorithm to apply. + if 'key' is null. + if 'algorithm' is null or empty. + if 'digest' is null or empty. + + + + Gets the signature algorithm. + + if 'value' is null or empty. + + + + Gets the digest algorithm. + + + + + Users can override the default with this property. This factory will be used for creating signature providers. + + This will have precedence over + + + + Gets the used for signature creation or validation. + + + + + Gets the key id associated with . + + + + + Defines the default set of algorithms this library supports + + + + + Creating a Signature requires the use of a . + This method returns the + that describes the to use when generating a Signature. + + The SignatureAlgorithm in use. + The to use. + if is null or whitespace. + if is not supported. + + + + Creating a Signature requires the use of a . + This method returns the HashAlgorithm string that is associated with a SignatureAlgorithm. + + The SignatureAlgorithm of interest. + if is null or whitespace. + if is not supported. + + + + Checks if an 'algorithm, key' pair is supported. + + the algorithm to check. + the . + true if 'algorithm, key' pair is supported. + + + + Represents a symmetric security key. + + + + + Returns a new instance of instance. + + The byte array of the key. + + + + Gets the key size. + + + + + Gets the byte array of the key. + + + + + Determines whether the can compute a JWK thumbprint. + + true if JWK thumbprint can be computed; otherwise, false. + https://datatracker.ietf.org/doc/html/rfc7638 + + + + Computes a sha256 hash over the . + + A JWK thumbprint. + https://datatracker.ietf.org/doc/html/rfc7638 + + + + Provides signing and verifying operations using a and specifying an algorithm. + + + + + Mapping from algorithm to the expected signature size in bytes. + + + + + This is the minimum .KeySize when creating and verifying signatures. + + + + + Initializes a new instance of the class that uses an to create and / or verify signatures over a array of bytes. + + The that will be used for signature operations. + The signature algorithm to use. + 'key' is null. + 'algorithm' is null or empty. + If and algorithm pair are not supported. + '.KeySize' is smaller than . + + + + Initializes a new instance of the class that uses an to create and / or verify signatures over a array of bytes. + + The that will be used for signature operations. + The signature algorithm to use. + indicates if this will be used to create signatures. + 'key' is null. + 'algorithm' is null or empty. + If and algorithm pair are not supported. + '.KeySize' is smaller than . + + + + Gets or sets the minimum .KeySize"/>. + + 'value' is smaller than . + + + + Called to obtain the byte[] needed to create a + + that will be used to obtain the byte[]. + [] that is used to populated the KeyedHashAlgorithm. + if key is null. + if a byte[] can not be obtained from SecurityKey. + and are supported. + For a .Key is returned + For a Base64UrlEncoder.DecodeBytes is called with if == JsonWebAlgorithmsKeyTypes.Octet + + + + + Returns a . + This method is called just before a cryptographic operation. + This provides the opportunity to obtain the from an object pool. + If this method is overridden, it is importont to override + if custom releasing of the is desired. + + The hash algorithm to use to create the hash value. + The byte array of the key. + An instance of + + + + For testing purposes + + + + + This method is called just after the cryptographic operation. + If was overridden this method can be overridden for + any custom handling such as returning the to an object pool. + + The " in use. + + + + Produces a signature over the 'input' using the and 'algorithm' passed to . + + The bytes to sign. + Signed bytes + 'input' is null. + 'input.Length' == 0. + has been called. + is null. This can occur if a derived type deletes it or does not create it. + Sign is thread safe. + + + + Verifies that a signature created over the 'input' matches the signature. Using and 'algorithm' passed to . + + The bytes to verify. + signature to compare against. + true if computed signature matches the signature parameter, false otherwise. + 'input' is null. + 'signature' is null. + 'input.Length' == 0. + 'signature.Length' == 0. + has been called. + If the internal is null. This can occur if a derived type deletes it or does not create it. + Verify is thread safe. + + + + Verifies that a signature created over the 'input' matches the signature. Using and 'algorithm' passed to . + + The bytes to verify. + signature to compare against. + number of bytes of signature to use. + true if computed signature matches the signature parameter, false otherwise. + 'input' is null. + 'signature' is null. + 'input.Length' == 0. + 'signature.Length' == 0. + 'length < 1' + has been called. + If the internal is null. This can occur if a derived type deletes it or does not create it. + + + + + + + This internal method is called from the AuthenticatedEncryptionProvider which passes in the algorithm that defines the size expected for the signature. + The reason is the way the AuthenticationTag is validated. + For example when "A128CBC-HS256" is specified, SHA256 will used to create the HMAC and 32 bytes will be generated, but only the first 16 will be validated. + + The bytes to verify. + offset in to input bytes to caculate hash. + number of bytes of signature to use. + signature to compare against. + offset into signature array. + how many bytes to verfiy. + algorithm passed by AuthenticatedEncryptionProvider. + true if computed signature matches the signature parameter, false otherwise. + + + + Disposes of internal components. + + true, if called from Dispose(), false, if invoked inside a finalizer. + + + + An opaque context used to store work when working with authentication artifacts. + + + + + Instantiates a new with a default activity ID. + + + + + Instantiates a new with an activity ID. + + + + + Defines properties shared across all security token handlers. + + + + + Default lifetime of tokens created. When creating tokens, if 'expires', 'notbefore' or 'issuedat' are null, + then a default will be set to: issuedat = DateTime.UtcNow, notbefore = DateTime.UtcNow, expires = DateTime.UtcNow + TimeSpan.FromMinutes(TokenLifetimeInMinutes). + + See: for configuration. + + + + Gets and sets the maximum token size in bytes that will be processed. + + 'value' less than 1. + + + + Gets or sets a bool that controls if token creation will set default 'exp', 'nbf' and 'iat' if not specified. + + See: for configuration. + + + + Gets or sets the token lifetime in minutes. + + Used during token creation to set the default expiration ('exp'). + 'value' less than 1. + + + + Validates a token. + On a validation failure, no exception will be thrown; instead, the exception will be set in the returned TokenValidationResult.Exception property. + Callers should always check the TokenValidationResult.IsValid property to verify the validity of the result. + + The token to be validated. + A required for validation. + A + + + + Validates a token. + On a validation failure, no exception will be thrown; instead, the exception will be set in the returned TokenValidationResult.Exception property. + Callers should always check the TokenValidationResult.IsValid property to verify the validity of the result. + + The to be validated. + A required for validation. + A + + + + Converts a string into an instance of . + + The string to be deserialized. + is null or empty. + 'token.Length' is greater than . + A . + + + + Called by base class to create a . + Currently only used by the JsonWebTokenHandler to allow for a Lazy creation. + + the that has the Claims. + the that was used to validate the token. + the 'issuer' to use by default when creating a Claim. + A . + + + + + A class which contains useful methods for processing tokens. + + + + + A URI that represents the JSON XML data type. + + When mapping json to .Net Claim(s), if the value was not a string (or an enumeration of strings), the ClaimValue will serialized using the current JSON serializer, a property will be added with the .Net type and the ClaimTypeValue will be set to 'JsonClaimValueType'. + + + + A URI that represents the JSON array XML data type. + + When mapping json to .Net Claim(s), if the value was not a string (or an enumeration of strings), the ClaimValue will serialized using the current JSON serializer, a property will be added with the .Net type and the ClaimTypeValue will be set to 'JsonClaimValueType'. + + + + A URI that represents the JSON null data type + + When mapping json to .Net Claim(s), we use empty string to represent the claim value and set the ClaimValueType to JsonNull + + + + Creates a dictionary from a list of Claim's. + + A list of claims. + A Dictionary representing claims. + + + + Returns all provided in and . + + The that contains signing keys used for validation. + A required for validation. + Returns all provided in provided in and . + + + + Merges claims. If a claim with same type exists in both and , the one in claims will be kept. + + Collection of 's. + Collection of 's. + A Merged list of 's. + + + + Check whether the given exception type is recoverable by LKG. + + The exception to check. + true if the exception is certain types of exceptions otherwise, false. + + + + Check whether the given configuration is recoverable by LKG. + + The kid from token."/> + The to check. + The LKG exception to check. + The exception to check. + true if the configuration is recoverable otherwise, false. + + + + Definition for AlgorithmValidator + + The algorithm to validate. + The that signed the . + The being validated. + required for validation. + true if the algorithm is considered valid + + + + Definition for AudienceValidator. + + The audiences found in the . + The being validated. + required for validation. + true if the audience is considered valid. + + + + Definition for IssuerSigningKeyResolver. + + The representation of the token that is being validated. + The that is being validated. It may be null. + A key identifier. It may be null. + required for validation. + A to use when validating a signature. + If both and are set, IssuerSigningKeyResolverUsingConfiguration takes + priority. + + + + Definition for IssuerSigningKeyResolverUsingConfiguration. + + The representation of the token that is being validated. + The that is being validated. It may be null. + A key identifier. It may be null. + required for validation. + required for validation. + A to use when validating a signature. + If both and are set, IssuerSigningKeyResolverUsingConfiguration takes + priority. + + + + Definition for IssuerSigningKeyValidator. + + The that signed the . + The being validated. + required for validation. + If both and are set, IssuerSigningKeyResolverUsingConfiguration takes + priority. + + + + Definition for IssuerSigningKeyValidatorUsingConfiguration. + + The that signed the . + The being validated. + required for validation. + required for validation. + If both and are set, IssuerSigningKeyResolverUsingConfiguration takes + priority. + + + + Definition for IssuerValidator. + + The issuer to validate. + The that is being validated. + required for validation. + The issuer to use when creating the "Claim"(s) in a "ClaimsIdentity". + The delegate should return a non null string that represents the 'issuer'. If null a default value will be used. + If both and are set, IssuerValidatorUsingConfiguration takes + priority. + + + + Definition for IssuerValidatorUsingConfiguration. + + The issuer to validate. + The that is being validated. + required for validation. + required for validation. + The issuer to use when creating the "Claim"(s) in a "ClaimsIdentity". + The delegate should return a non null string that represents the 'issuer'. If null a default value will be used. + If both and are set, IssuerValidatorUsingConfiguration takes + priority. + + + + + Definition for IssuerValidatorAsync. Left internal for now while we work out the details of async validation for all delegates. + + The issuer to validate. + The that is being validated. + required for validation. + The issuer to use when creating the "Claim"(s) in a "ClaimsIdentity". + The delegate should return a non null string that represents the 'issuer'. If null a default value will be used. + if set, will be called before or + + + + + Definition for LifetimeValidator. + + The 'notBefore' time found in the . + The 'expiration' time found in the . + The being validated. + required for validation. + + + + Definition for TokenReplayValidator. + + The 'expiration' time found in the . + The being validated. + required for validation. + + + + + Definition for SignatureValidator. + + A securityToken with a signature. + required for validation. + + + + Definition for SignatureValidator. + + A securityToken with a signature. + required for validation. + The that is required for validation. + + + + Definition for TokenReader. + + A securityToken with a signature. + required for validation. + + + + Definition for TokenDecryptionKeyResolver. + + The representation of the token to be decrypted. + The to be decrypted. The runtime by default passes null. + A key identifier. It may be null. + required for validation. + A to use when decrypting the token. + + + + Definition for TypeValidator. + + The token type to validate. + The that is being validated. + required for validation. + The actual token type, that may be the same as or a different value if the token type was resolved from a different location. + + + + Definition for TransformBeforeSignatureValidation. + + The that is being validated. + required for validation. + A transformed . + + + + Contains a set of parameters that are used by a when validating a . + + + + + This is the default value of when creating a . + The value is "AuthenticationTypes.Federation". + To change the value, set to a different value. + + + + + Default for the clock skew. + + 300 seconds (5 minutes). + + + + Default for the maximum token size. + + 250 KB (kilobytes). + + + + Copy constructor for . + + + + + Initializes a new instance of the class. + + + + + Gets or sets . + + + + + Gets or sets a delegate used to validate the cryptographic algorithm used. + + + If set, this delegate will validate the cryptographic algorithm used and + the algorithm will not be checked against . + + + + + Gets or sets a delegate that will be used to validate the audience. + + + If set, this delegate will be called to validate the 'audience', instead of default processing. + This means that no default 'audience' validation will occur. + Even if is false, this delegate will still be called. + + + + + Gets or sets the AuthenticationType when creating a . + + If 'value' is null or whitespace. + + + + Gets or sets the clock skew to apply when validating a time. + + If 'value' is less than 0. + The default is 300 seconds (5 minutes). + + + + Returns a new instance of with values copied from this object. + + A new object copied from this object + This is a shallow Clone. + + + + Creates a using: + + 'NameClaimType': If NameClaimTypeRetriever is set, call delegate, else call NameClaimType. If the result is a null or empty string, use . + 'RoleClaimType': If RoleClaimTypeRetriever is set, call delegate, else call RoleClaimType. If the result is a null or empty string, use . + + A with Authentication, NameClaimType and RoleClaimType set. + + + + If set, this property will be used to obtain the issuer and signing keys associated with the metadata endpoint of . + The obtained issuer and signing keys will then be used along with those present on the TokenValidationParameters for validation of the incoming token. + + + + + Users can override the default with this property. This factory will be used for creating signature providers. + + + + + Gets or sets a string that helps with setting breakpoints when debugging. + + + + + Gets or sets a boolean that controls if a '/' is significant at the end of the audience. + The default is true. + + + + + Gets or sets the flag that indicates whether to include the when the validation fails. + + + + + Gets or sets a delegate for validating the that signed the token. + + + If set, this delegate will be called to validate the that signed the token, instead of default processing. + This means that no default validation will occur. + Even if is false, this delegate will still be called. + If both and are set, IssuerSigningKeyResolverUsingConfiguration takes + priority. + + + + + Gets or sets a delegate for validating the that signed the token. + + + If set, this delegate will be called to validate the that signed the token, instead of default processing. + This means that no default validation will occur. + Even if is false, this delegate will still be called. + This delegate should be used if properties from the configuration retrieved from the authority are necessary to validate the + issuer signing key. + If both and are set, IssuerSigningKeyValidatorUsingConfiguration takes + priority. + + + + + Gets a that is unique to this instance. + Calling will result in a new instance of this IDictionary. + + + + + Gets a value indicating if was called to obtain this instance. + + + + + Gets or sets the that is to be used for signature validation. + + + + + Gets or sets a delegate that will be called to retrieve a used for signature validation. + + + This will be used to check the signature. This can be helpful when the does not contain a key identifier. + If both and are set, IssuerSigningKeyResolverUsingConfiguration takes + priority. + + + + + Gets or sets a delegate that will be called to retrieve a used for signature validation using the + and . + + + This will be used to check the signature. This can be helpful when the does not contain a key identifier. + This delegate should be used if properties from the configuration retrieved from the authority are necessary to resolve the + issuer signing key. + If both and are set, IssuerSigningKeyResolverUsingConfiguration takes + priority. + + + + + Gets or sets an used for signature validation. + + + + + Gets or sets a delegate that will be used to validate the issuer of the token. + + + If set, this delegate will be called to validate the 'issuer' of the token, instead of default processing. + This means that no default 'issuer' validation will occur. + Even if is false, this delegate will still be called. + If both and are set, IssuerValidatorUsingConfiguration takes + priority. + + + + + Gets or sets a delegate that will be used to validate the issuer of the token. + + + If set, this delegate will be called to validate the 'issuer' of the token, instead of default processing. + This means that no default 'issuer' validation will occur. + Even if is false, this delegate will still be called. + IssuerValidatorAsync takes precedence over and . + + + + + Gets or sets a delegate that will be used to validate the issuer of the token. + + + If set, this delegate will be called to validate the 'issuer' of the token, instead of default processing. + This means that no default 'issuer' validation will occur. + Even if is false, this delegate will still be called. + This delegate should be used if properties from the configuration retrieved from the authority are necessary to validate the issuer. + If both and are set, IssuerValidatorUsingConfiguration takes + priority. + + + + + Gets or sets a delegate that will be called to transform a token to a supported format before validation. + + + + + Gets or sets a delegate that will be used to validate the lifetime of the token + + + If set, this delegate will be called to validate the lifetime of the token, instead of default processing. + This means that no default lifetime validation will occur. + Even if is false, this delegate will still be called. + + + + + Gets or sets a that will decide if the token identifier claim needs to be logged. + Default value is true. + + + + + Gets or sets a that will decide if validation failure needs to be logged as an error. + Default value is true for backward compatibility of the behavior. + If set to false, validation failures are logged as Information and then thrown. + + + + + Gets or sets a that defines the . + + + Controls the value returns. It will return the first where the equals . + The default is . + + + + + Gets or sets a delegate that will be called to set the property after validating a token. + + + The function will be passed: + The that is being validated. + The issuer associated with the token. + Returns the value that will set the property . + + + + + Gets or sets the that contains a collection of custom key/value pairs. This allows addition of parameters that could be used in custom token validation scenarios. + + + + + Gets or sets a boolean to control if configuration required to be refreshed before token validation. + + + The default is false. + + + + + Gets or sets a value indicating whether SAML tokens must have at least one AudienceRestriction. + The default is true. + + + + + Gets or sets a value indicating whether tokens must have an 'expiration' value. + The default is true. + + + + + Gets or sets a value indicating whether a can be considered valid if not signed. + The default is true. + + + + + Gets or sets the that defines the . + + + Controls the results of . + Each where == will be checked for a match against the 'string' passed to . + The default is . + + + + + Gets or sets a delegate that will be called to set the property after validating a token. + + + The function will be passed: + The that is being validated. + The issuer associated with the token. + Returns the value that will set the property . + + + + + Gets or sets a boolean to control if the original token should be saved after the security token is validated. + + The runtime will consult this value and save the original token that was validated. + The default is false. + + + + + Gets or sets a delegate that will be used to validate the signature of the token. + + + If set, this delegate will be called to signature of the token, instead of default processing. + + + + + Gets or sets a delegate that will be used to validate the signature of the token using the and + the . + + + If set, this delegate will be called to signature of the token, instead of default processing. + + + + + Gets or sets the that is to be used for decryption. + + + + + Gets or sets a delegate that will be called to retreive a used for decryption. + + + This will be used to decrypt the token. This can be helpful when the does not contain a key identifier. + + + + + Gets or sets the that is to be used for decrypting inbound tokens. + + + + + Gets or sets a delegate that will be used to read the token. + + + If set, this delegate will be called to read the token instead of default processing. + + + + + Gets or set the that store tokens that can be checked to help detect token replay. + + If set, then tokens must have an expiration time or the runtime will fault. + + + + Gets or sets a delegate that will be used to validate the token replay of the token + + + If set, this delegate will be called to validate the token replay of the token, instead of default processing. + This means no default token replay validation will occur. + Even if is false, this delegate will still be called. + + + + + Gets or sets a value indicating whether all should be tried during signature validation when a key is not matched to token kid or if token kid is empty. + The default is true. + + + + + Gets or sets a delegate that will be used to validate the type of the token. + If the token type cannot be validated, an exception MUST be thrown by the delegate. + Note: the 'type' parameter may be null if it couldn't be extracted from its usual location. + Implementations that need to resolve it from a different location can use the 'token' parameter. + + + If set, this delegate will be called to validate the 'type' of the token, instead of default processing. + This means that no default 'type' validation will occur. + + + + + Gets or sets a value indicating if an actor token is detected, whether it should be validated. + The default is false. + + + + + Gets or sets a boolean to control if the audience will be validated during token validation. + + Validation of the audience, mitigates forwarding attacks. For example, a site that receives a token, could not replay it to another side. + A forwarded token would contain the audience of the original site. + This boolean only applies to default audience validation. If is set, it will be called regardless of whether this + property is true or false. + The default is true. + + + + + Gets or sets a boolean to control if the issuer will be validated during token validation. + + + Validation of the issuer mitigates forwarding attacks that can occur when an + IdentityProvider represents multiple tenants and signs tokens with the same keys. + It is possible that a token issued for the same audience could be from a different tenant. For example an application could accept users from + contoso.onmicrosoft.com but not fabrikam.onmicrosoft.com, both valid tenants. An application that accepts tokens from fabrikam could forward them + to the application that accepts tokens for contoso. + This boolean only applies to default issuer validation. If is set, it will be called regardless of whether this + property is true or false. + The default is true. + + + + + Gets or sets a boolean to control if the LKG configuration will be used for token validation. + + + The default is false. + + + + + Gets or sets a boolean that controls if validation of the that signed the securityToken is called. + + It is possible for tokens to contain the public key needed to check the signature. For example, X509Data can be hydrated into an X509Certificate, + which can be used to validate the signature. In these cases it is important to validate the SigningKey that was used to validate the signature. + This boolean only applies to default signing key validation. If is set, it will be called regardless of whether this + property is true or false. + The default is false. + + + + + Gets or sets a boolean to control if the lifetime will be validated during token validation. + + + This boolean only applies to default lifetime validation. If is set, it will be called regardless of whether this + property is true or false. + The default is true. + + + + + Gets or sets a boolean that controls the validation order of the payload and signature during token validation. + + If is set to true, it will validate payload ahead of signature. + The default is false. + + + + + Gets or sets a boolean to control if the token replay will be validated during token validation. + + + This boolean only applies to default token replay validation. If is set, it will be called regardless of whether this + property is true or false. + The default is false. + + + + + Gets or sets the valid algorithms for cryptographic operations. + + + If set to a non-empty collection, only the algorithms listed will be considered valid. + The default is null. + + + + + Gets or sets a string that represents a valid audience that will be used to check against the token's audience. + The default is null. + + + + + Gets or sets the that contains valid audiences that will be used to check against the token's audience. + The default is null. + + + + + Gets or sets a that represents a valid issuer that will be used to check against the token's issuer. + The default is null. + + + + + Gets or sets the that contains valid issuers that will be used to check against the token's issuer. + The default is null. + + + + + Gets or sets the that contains valid types that will be used to check against the JWT header's 'typ' claim. + If this property is not set, the 'typ' header claim will not be validated and all types will be accepted. + In the case of a JWE, this property will ONLY apply to the inner token header. + The default is null. + + + + + Contains artifacts obtained when a SecurityToken is validated. + A SecurityTokenHandler returns an instance that captures the results of validating a token. + + + + + Creates an instance of + + + + + This ctor is used by the JsonWebTokenHandler as part of delaying creation of ClaimsIdentity. + + + + + + + + + The created from the validated security token. + + + + + The created from the validated security token. + + + + + Gets or sets the without synchronization. All accesses must either + be protected or used when the caller knows access is serialized. + + + + Gets the object to use in for double-checked locking. + + + + Gets or sets the that occurred during validation. + + + + + Gets or sets the issuer that was found in the token. + + + + + True if the token was successfully validated, false otherwise. + + + + + Gets or sets the that contains a collection of custom key/value pairs. This allows addition of data that could be used in custom scenarios. This uses for case-sensitive comparison of keys. + + + + + Gets or sets the that was validated. + + + + + The to be returned when validation fails. + + + + + Gets or sets the that contains call information. + + + + + Gets or sets the token type of the that was validated. + When a is registered, + the type returned by the delegate is used to populate this property. + Otherwise, the type is resolved from the token itself, if available + (e.g for a JSON Web Token, from the "typ" header). + + + + + Generates unique IDs. + + + + + Creates a unique ID suitable for use in an xml:id field. The value is + not hard to guess but is unique. + + The unique ID. + + + + Creates a unique ID similar to that created by CreateNonRandomId, + but instead of an underscore, the supplied prefix is used. + + The prefix to use. + The unique ID, with the given prefix. + + + + Creates a unique, random ID suitable for use in an xml:id field. The + value is hard to guess and unique. + + The unique ID. + + + + Creates a unique, random ID similar to that created by CreateRandomId, + but instead of an underscore, the supplied prefix is used. + + The prefix to use. + The random URI. + + + + Creates a unique, random ID suitable for use as a URI. The value is + hard to guess and unique. The URI is in the urn:uuid: namespace. + + The random URI. + + + + Contains some utility methods. + + + + + A string with "empty" value. + + + + + A string with "null" value. + + + + + Creates a copy of the byte array. + + The resource array. + A copy of the byte array. + + + + Serializes the list of strings into string as follows: + 'str1','str2','str3' ... + + + The strings used to build a comma delimited string. + + + The single . + + + + + Returns whether the input string is https. + + The input string. + true if the input string is https; otherwise, false. + + + + Returns whether the input uri is https. + + . + true if the input uri is https; otherwise, false. + + + + Compares two byte arrays for equality. Hash size is fixed normally it is 32 bytes. + The attempt here is to take the same time if an attacker shortens the signature OR changes some of the signed contents. + + + One set of bytes to compare. + + + The other set of bytes to compare with. + + + true if the bytes are equal, false otherwise. + + + + + Compares two byte spans for equality. Hash size is fixed normally it is 32 bytes. + The attempt here is to take the same time if an attacker shortens the signature OR changes some of the signed contents. + + + One set of bytes to compare. + + + The other set of bytes to compare with. + + length of spans to check + + true if the bytes are equal, false otherwise. + + + + + AudienceValidator + + + + + Validates if a given algorithm for a is valid. + + The algorithm to be validated. + The that signed the . + The being validated. + required for validation. + + + + Determines if the audiences found in a are valid. + + The audiences found in the . + The being validated. + required for validation. + If 'validationParameters' is null. + If 'audiences' is null and is true. + If is null or whitespace and is null. + If none of the 'audiences' matched either or one of . + An EXACT match is required. + + + + Determines if an issuer found in a is valid. + + The issuer to validate + The that is being validated. + required for validation. + The issuer to use when creating the "Claim"(s) in a "ClaimsIdentity". + If 'validationParameters' is null. + If 'issuer' is null or whitespace and is true. + If is null or whitespace and is null. + If 'issuer' failed to matched either or one of . + An EXACT match is required. + + + + Determines if an issuer found in a is valid. + + The issuer to validate + The that is being validated. + required for validation. + The required for issuer and signing key validation. + The issuer to use when creating the "Claim"(s) in a "ClaimsIdentity". + If 'validationParameters' is null. + If 'issuer' is null or whitespace and is true. + If ' configuration' is null. + If is null or whitespace and is null and is null. + If 'issuer' failed to matched either or one of or . + An EXACT match is required. + + + + Determines if an issuer found in a is valid. + + The issuer to validate + The that is being validated. + required for validation. + The required for issuer and signing key validation. + The issuer to use when creating the "Claim"(s) in a "ClaimsIdentity". + If 'validationParameters' is null. + If 'issuer' is null or whitespace and is true. + If ' configuration' is null. + If is null or whitespace and is null and is null. + If 'issuer' failed to matched either or one of or . + An EXACT match is required. + + + + Validates the that signed a . + + The that signed the . + The being validated. + required for validation. + if 'securityKey' is null and ValidateIssuerSigningKey is true. + if 'securityToken' is null and ValidateIssuerSigningKey is true. + if 'validationParameters' is null. + + + + Validates the that signed a . + + The that signed the . + The being validated. + required for validation. + The required for issuer and signing key validation. + if 'securityKey' is null and ValidateIssuerSigningKey is true. + if 'securityToken' is null and ValidateIssuerSigningKey is true. + if 'validationParameters' is null. + + + + Given a signing key, when it's derived from a certificate, validates that the certificate is already active and non-expired + + The that signed the . + The that are used to validate the token. + + + + Validates the lifetime of a . + + The 'notBefore' time found in the . + The 'expiration' time found in the . + The being validated. + required for validation. + If 'validationParameters' is null. + If 'expires.HasValue' is false and is true. + If 'notBefore' is > 'expires'. + If 'notBefore' is > DateTime.UtcNow. + If 'expires' is < DateTime.UtcNow. + All time comparisons apply . + + + + Validates if a token has been replayed. + + When does the security token expire. + The being validated. + required for validation. + If 'securityToken' is null or whitespace. + If 'validationParameters' is null or whitespace. + If is not null and expirationTime.HasValue is false. When a TokenReplayCache is set, tokens require an expiration time. + If the 'securityToken' is found in the cache. + If the 'securityToken' could not be added to the . + + + + Validates if a token has been replayed. + + The being validated. + When does the security token expire. + required for validation. + If 'securityToken' is null or whitespace. + If 'validationParameters' is null or whitespace. + If is not null and expirationTime.HasValue is false. When a TokenReplayCache is set, tokens require an expiration time. + If the 'securityToken' is found in the cache. + If the 'securityToken' could not be added to the . + + + + Validates the type of the token. + + The token type or null if it couldn't be resolved (e.g from the 'typ' header for a JWT). + The that is being validated. + required for validation. + If is null. + If is null. + If is null or whitespace and is not null. + If failed to match . + An EXACT match is required. (case sensitive) is used for comparing against . + The actual token type, that may be the same as or a different value if the token type was resolved from a different location. + + + + An designed to construct based on a x509 certificate. + + + + + Designed to construct based on a x509 certificate. + + A + + will be used as the key wrap algorithm + will be used as the data encryption algorithm + + if 'certificate' is null. + + + + Designed to construct based on the x509 certificate, a key wrap algorithm, and data encryption algorithm. + + A + A key wrap algorithm + Data encryption algorithm + if 'certificate' is null. + if 'keyWrapAlgorithm' is null or empty. + if 'dataEncryptionAlgorithm' is null or empty. + + + + Gets the used by this instance. + + + + + An that is backed by a + + + + + Instantiates a using a + + The to use. + if is null. + + + + Instantiates a using a . + + The to use. + The value to set for the KeyId + if is null. + if is null or empty. + + + + Gets the key size. + + + + + Gets the X5t of this . + + + + + Returns the private key from the . + + + + + Gets the public key from the . + + + + + Gets a bool indicating if a private key exists. + + true if it has a private key; otherwise, false. + + + + Gets an enum indicating if a private key exists. + + 'Exists' if private key exists for sure; 'DoesNotExist' if private key doesn't exist for sure; 'Unknown' if we cannot determine. + + + + Gets the . + + + + + Determines whether the can compute a JWK thumbprint. + + true if JWK thumbprint can be computed; otherwise, false. + https://datatracker.ietf.org/doc/html/rfc7638 + + + + Computes a sha256 hash over the . + + A JWK thumbprint. + https://datatracker.ietf.org/doc/html/rfc7638 + + + + Returns a bool indicating if this key is equivalent to another key. + + true if the keys are equal; otherwise, false. + + + + Returns an int hash code. + + An int hash code + + + + Defines the , algorithm and digest for digital signatures. + + + + + Initializes a new instance of the class. + + that will be used for signing. + Algorithm will be set to . + the 'digest method' if needed may be implied from the algorithm. For example implies Sha256. + if 'certificate' is null. + + + + Initializes a new instance of the class. + + A that will be used for signing. + The signature algorithm to apply. + the 'digest method' if needed may be implied from the algorithm. For example implies Sha256. + if 'certificate' is null. + if 'algorithm' is null or empty. + + + + Gets the used by this instance. + + + + diff --git a/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml.meta b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml.meta new file mode 100644 index 0000000..b1f679a --- /dev/null +++ b/Assets/Packages/Microsoft.IdentityModel.Tokens.7.0.3/lib/netstandard2.0/Microsoft.IdentityModel.Tokens.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fef0908ec128e1341a68cd10592e28db +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/MimeMapping.2.0.0.meta b/Assets/Packages/MimeMapping.2.0.0.meta new file mode 100644 index 0000000..aeb9068 --- /dev/null +++ b/Assets/Packages/MimeMapping.2.0.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 990e7c06b38149b4187e38eeaf1aa6d6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/MimeMapping.2.0.0/.signature.p7s b/Assets/Packages/MimeMapping.2.0.0/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..1df43ee75374c612215b641753586a0a3ef9a333 GIT binary patch literal 11512 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

-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 + + + MimeMapping + 2.0.0 + Matthew Little + MIT + https://licenses.nuget.org/MIT + README.md + https://github.com/zone117x/MimeMapping + Constants for (almost) all MIME types and method to determine MIME type from a file name. +Contains just over 1000 mime types. + +The Dictionary is generated from the jshttp/mime-db db.json file. +Works similar to .NET's System.Web.MimeMapping.GetMimeMapping. + +It aggregates data from the following sources: +https://www.iana.org/assignments/media-types/media-types.xhtml +https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types +https://hg.nginx.org/nginx/raw-file/default/conf/mime.types + +See: +https://github.com/jshttp/mime-db#mime-db +https://learn.microsoft.com/dotnet/api/system.web.mimemapping.getmimemapping + mimetype contenttype mime type mimemapping GetMimeMapping media-types rfc 4288 + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/MimeMapping.2.0.0/MimeMapping.nuspec.meta b/Assets/Packages/MimeMapping.2.0.0/MimeMapping.nuspec.meta new file mode 100644 index 0000000..b88f998 --- /dev/null +++ b/Assets/Packages/MimeMapping.2.0.0/MimeMapping.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8d3ab565e92ca574e95d8f454ccef204 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/MimeMapping.2.0.0/README.md b/Assets/Packages/MimeMapping.2.0.0/README.md new file mode 100644 index 0000000..769489d --- /dev/null +++ b/Assets/Packages/MimeMapping.2.0.0/README.md @@ -0,0 +1,43 @@ +# MimeMapping + +[![Nuget](https://img.shields.io/nuget/v/MimeMapping)](https://www.nuget.org/packages/MimeMapping/) +[![Nuget](https://img.shields.io/nuget/dt/MimeMapping)](https://www.nuget.org/packages/MimeMapping/) +[![build](https://github.com/zone117x/MimeMapping/actions/workflows/build.yml/badge.svg)](https://github.com/zone117x/MimeMapping/actions/workflows/build.yml) +[![codecov](https://codecov.io/github/zone117x/MimeMapping/branch/master/graph/badge.svg)](https://codecov.io/github/zone117x/MimeMapping) + +Constants for (almost) all MIME types and method to determine MIME type from a file name. +Contains just over 1000 mime types. + +The Dictionary is generated from the [`jshttp/mime-db`](https://github.com/jshttp/mime-db#mime-db) `db.json`. +Works similar to .NET's [System.Web.MimeMapping.GetMimeMapping](https://learn.microsoft.com/dotnet/api/system.web.mimemapping.getmimemapping). + +It aggregates data from the following sources: + +- +- +- + +The library is just a literal C# `Dictionary` with over 1000 entries, and a helper method that can be passed a file path. + +## Example Usage + +```C# +string myFile = "myimage.jpg"; +string mimeType = MimeMapping.MimeUtility.GetMimeMapping(myFile); +Console.WriteLine(mimeType); // output: image/jpeg + +string randomFile = "data.asdf"; +string mimeType = MimeMapping.MimeUtility.GetMimeMapping(randomFile); +Console.WriteLine(mimeType); // output: application/octet-stream + +string rawExtension = "json"; +string mimeType = MimeMapping.MimeUtility.GetMimeMapping(rawExtension); +Console.WriteLine(mimeType); // output: application/json + + +// List all types.. +foreach(var kp in MimeMapping.MimeTypes.TypeMap) +{ + Console.WriteLine($"File extension: {kp.Key}, mime string: {kp.Value}"); +} +``` diff --git a/Assets/Packages/MimeMapping.2.0.0/README.md.meta b/Assets/Packages/MimeMapping.2.0.0/README.md.meta new file mode 100644 index 0000000..175a542 --- /dev/null +++ b/Assets/Packages/MimeMapping.2.0.0/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c84dbcdaf76d05f4ab5cecfcbe1684fd +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/MimeMapping.2.0.0/lib.meta b/Assets/Packages/MimeMapping.2.0.0/lib.meta new file mode 100644 index 0000000..f909a8b --- /dev/null +++ b/Assets/Packages/MimeMapping.2.0.0/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 22bc3c932d8b4284a8d81617c02efc49 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0.meta b/Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0.meta new file mode 100644 index 0000000..08b633d --- /dev/null +++ b/Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6a0e97a70b05caf4fa41eef1a4f41099 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0/MimeMapping.dll b/Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0/MimeMapping.dll new file mode 100644 index 0000000000000000000000000000000000000000..817d8cf8faf9b7f13ee5868ba401ff59211bd001 GIT binary patch literal 270848 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%0Am%hj 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%0DYz*1 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 literal 0 HcmV?d00001 diff --git a/Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0/MimeMapping.dll.meta b/Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0/MimeMapping.dll.meta new file mode 100644 index 0000000..d35d452 --- /dev/null +++ b/Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0/MimeMapping.dll.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: edef8c2a9d9f92e4689fd13a6601adf9 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 3 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0/MimeMapping.xml b/Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0/MimeMapping.xml new file mode 100644 index 0000000..f66b4f7 --- /dev/null +++ b/Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0/MimeMapping.xml @@ -0,0 +1,7121 @@ + + + + MimeMapping + + + +

+ MIME type constants. Last updated on 2023-03-28T04:30:24Z. + Generated from the mime-db source + + + + ez + + + aw + + + atom + + + atomcat + + + atomdeleted + + + atomsvc + + + dwd + + + held + + + rsat + + + bdoc + + + xcs + + + ccxml + + + cdfx + + + cdmia + + + cdmic + + + cdmid + + + cdmio + + + cdmiq + + + cpl + + + cu + + + mpd + + + mpp + + + davmount + + + dbk + + + dssc + + + xdssc + + + es + + + ecma + + + emma + + + emotionml + + + epub + + + exi + + + exp + + + fdt + + + pfr + + + geojson + + + gml + + + gpx + + + gxf + + + gz + + + hjson + + + stk + + + ink + + + inkml + + + ipfix + + + its + + + jar + + + war + + + ear + + + ser + + + class + + + js + + + mjs + + + json + + + map + + + json5 + + + jsonml + + + jsonld + + + lgr + + + lostxml + + + hqx + + + cpt + + + mads + + + webmanifest + + + mrc + + + mrcx + + + ma + + + nb + + + mb + + + mathml + + + mbox + + + mpf + + + mscml + + + metalink + + + meta4 + + + mets + + + maei + + + musd + + + mods + + + m21 + + + mp21 + + + mp4s + + + m4p + + + doc + + + dot + + + mxf + + + nq + + + nt + + + cjs + + + bin + + + dms + + + lrf + + + mar + + + so + + + dist + + + distz + + + pkg + + + bpk + + + dump + + + elc + + + deploy + + + exe + + + dll + + + deb + + + dmg + + + iso + + + img + + + msi + + + msp + + + msm + + + buffer + + + oda + + + opf + + + ogx + + + omdoc + + + onetoc + + + onetoc2 + + + onetmp + + + onepkg + + + oxps + + + relo + + + xer + + + pdf + + + pgp + + + asc + + + sig + + + prf + + + p10 + + + p7m + + + p7c + + + p7s + + + p8 + + + ac + + + cer + + + crl + + + pkipath + + + pki + + + pls + + + ai + + + eps + + + ps + + + provx + + + cww + + + pskcxml + + + raml + + + rdf + + + owl + + + rif + + + rnc + + + rl + + + rld + + + rs + + + rapd + + + sls + + + rusd + + + gbr + + + mft + + + roa + + + rsd + + + rss + + + rtf + + + sbml + + + scq + + + scs + + + spq + + + spp + + + sdp + + + senmlx + + + sensmlx + + + setpay + + + setreg + + + shf + + + siv + + + sieve + + + smi + + + smil + + + rq + + + srx + + + gram + + + grxml + + + sru + + + ssdl + + + ssml + + + swidtag + + + tei + + + teicorpus + + + tfi + + + tsd + + + toml + + + trig + + + ttml + + + ubj + + + rsheet + + + td + + + 1km + + + plb + + + psb + + + pvb + + + tcap + + + pwn + + + aso + + + imp + + + acu + + + atc + + + acutc + + + air + + + fcdt + + + fxp + + + fxpl + + + xdp + + + xfdf + + + age + + + ahead + + + azf + + + azs + + + azw + + + acc + + + ami + + + apk + + + cii + + + fti + + + atx + + + mpkg + + + key + + + m3u8 + + + numbers + + + pages + + + pkpass + + + swi + + + iota + + + aep + + + bmml + + + mpm + + + bmi + + + rep + + + cdxml + + + mmd + + + cdy + + + csl + + + cla + + + rp9 + + + c4g + + + c4d + + + c4f + + + c4p + + + c4u + + + c11amc + + + c11amz + + + csp + + + cdbcmsg + + + cmc + + + clkx + + + clkk + + + clkp + + + clkt + + + clkw + + + wbs + + + pml + + + ppd + + + car + + + pcurl + + + dart + + + rdz + + + dbf + + + uvf + + + uvvf + + + uvd + + + uvvd + + + uvt + + + uvvt + + + uvx + + + uvvx + + + uvz + + + uvvz + + + fe_launch + + + dna + + + mlp + + + dpg + + + dfac + + + kpxx + + + ait + + + svc + + + geo + + + mag + + + nml + + + esf + + + msf + + + qam + + + slt + + + ssf + + + es3 + + + et3 + + + ez2 + + + ez3 + + + fdf + + + mseed + + + seed + + + dataless + + + gph + + + ftc + + + fm + + + frame + + + maker + + + book + + + fnc + + + ltf + + + fsc + + + oas + + + oa2 + + + oa3 + + + fg5 + + + bh2 + + + ddd + + + xdw + + + xbd + + + fzs + + + txd + + + ggb + + + ggt + + + gex + + + gre + + + gxt + + + g2w + + + g3w + + + gmx + + + gdoc + + + gslides + + + gsheet + + + kml + + + kmz + + + gqf + + + gqs + + + gac + + + ghf + + + gim + + + grv + + + gtm + + + tpl + + + vcg + + + hal + + + zmm + + + hbci + + + les + + + hpgl + + + hpid + + + hps + + + jlt + + + pcl + + + pclxl + + + sfd-hdstx + + + mpy + + + afp + + + listafp + + + list3820 + + + irm + + + sc + + + icc + + + icm + + + igl + + + ivp + + + ivu + + + igm + + + xpw + + + xpx + + + i2g + + + qbo + + + qfx + + + rcprofile + + + irp + + + xpr + + + fcs + + + jam + + + rms + + + jisp + + + joda + + + ktz + + + ktr + + + karbon + + + chrt + + + kfo + + + flw + + + kon + + + kpr + + + kpt + + + ksp + + + kwd + + + kwt + + + htke + + + kia + + + kne + + + knp + + + skp + + + skd + + + skt + + + skm + + + sse + + + lasxml + + + lbd + + + lbe + + + 123 + + + apr + + + pre + + + nsf + + + org + + + scm + + + lwp + + + portpkg + + + mvt + + + mcd + + + mc1 + + + cdkey + + + mwf + + + mfm + + + flo + + + igx + + + mif + + + daf + + + dis + + + mbk + + + mqy + + + msl + + + plc + + + txf + + + mpn + + + mpc + + + xul + + + cil + + + cab + + + xls + + + xlm + + + xla + + + xlc + + + xlt + + + xlw + + + xlam + + + xlsb + + + xlsm + + + xltm + + + eot + + + chm + + + ims + + + lrm + + + thmx + + + msg + + + cat + + + stl + + + ppt + + + pps + + + pot + + + ppam + + + pptm + + + sldm + + + ppsm + + + potm + + + mpt + + + docm + + + dotm + + + wps + + + wks + + + wcm + + + wdb + + + wpl + + + xps + + + mseq + + + mus + + + msty + + + taglet + + + nlu + + + ntf + + + nitf + + + nnd + + + nns + + + nnw + + + ngdat + + + n-gage + + + rpst + + + rpss + + + edm + + + edx + + + ext + + + odc + + + otc + + + odb + + + odf + + + odft + + + odg + + + otg + + + odi + + + oti + + + odp + + + otp + + + ods + + + ots + + + odt + + + odm + + + ott + + + oth + + + xo + + + dd2 + + + obgx + + + oxt + + + osm + + + pptx + + + sldx + + + ppsx + + + potx + + + xlsx + + + xltx + + + docx + + + dotx + + + mgp + + + dp + + + esa + + + pdb + + + pqa + + + oprc + + + paw + + + str + + + ei6 + + + efif + + + wg + + + plf + + + pbd + + + box + + + mgz + + + qps + + + ptid + + + qxd + + + qxt + + + qwd + + + qwt + + + qxl + + + qxb + + + rar + + + bed + + + mxl + + + musicxml + + + cryptonote + + + cod + + + rm + + + rmvb + + + link66 + + + st + + + see + + + sema + + + semd + + + semf + + + ifm + + + itp + + + iif + + + ipk + + + twd + + + twds + + + mmf + + + teacher + + + fo + + + sdkm + + + sdkd + + + dxp + + + sfs + + + sdc + + + sda + + + sdd + + + smf + + + sdw + + + vor + + + sgl + + + smzip + + + sm + + + wadl + + + sxc + + + stc + + + sxd + + + std + + + sxi + + + sti + + + sxm + + + sxw + + + sxg + + + stw + + + sus + + + susp + + + svd + + + sis + + + sisx + + + xsm + + + bdm + + + xdm + + + ddf + + + tao + + + pcap + + + cap + + + dmp + + + tmo + + + tpt + + + mxs + + + tra + + + ufd + + + ufdl + + + utz + + + umj + + + unityweb + + + uoml + + + vcx + + + vsd + + + vst + + + vss + + + vsw + + + vis + + + vsf + + + wbxml + + + wmlc + + + wmlsc + + + wtb + + + nbp + + + wpd + + + wqd + + + stf + + + xar + + + xfdl + + + hvd + + + hvs + + + hvp + + + osf + + + osfpvg + + + saf + + + spf + + + cmp + + + zir + + + zirz + + + zaz + + + vxml + + + wasm + + + wif + + + wgt + + + hlp + + + wsdl + + + wspolicy + + + 7z + + + abw + + + ace + + + arj + + + aab + + + x32 + + + u32 + + + vox + + + aam + + + aas + + + bcpio + + + torrent + + + blb + + + blorb + + + bz + + + bz2 + + + boz + + + cbr + + + cba + + + cbt + + + cbz + + + cb7 + + + vcd + + + cfs + + + chat + + + pgn + + + crx + + + cco + + + nsc + + + cpio + + + csh + + + udeb + + + dgc + + + dir + + + dcr + + + dxr + + + cst + + + cct + + + cxt + + + w3d + + + fgd + + + swa + + + wad + + + ncx + + + dtb + + + res + + + dvi + + + evy + + + eva + + + bdf + + + gsf + + + psf + + + pcf + + + snf + + + pfa + + + pfb + + + pfm + + + afm + + + arc + + + spl + + + gca + + + ulx + + + gnumeric + + + gramps + + + gtar + + + hdf + + + php + + + install + + + jardiff + + + jnlp + + + kdbx + + + latex + + + luac + + + lzh + + + lha + + + run + + + mie + + + prc + + + mobi + + + application + + + lnk + + + wmd + + + wmz + + + xbap + + + mdb + + + obd + + + crd + + + clp + + + com + + + bat + + + mvb + + + m13 + + + m14 + + + wmf + + + emf + + + emz + + + mny + + + pub + + + scd + + + trm + + + wri + + + nc + + + cdf + + + pac + + + nzb + + + pl + + + pm + + + p12 + + + pfx + + + p7b + + + spc + + + p7r + + + rpm + + + ris + + + sea + + + sh + + + shar + + + swf + + + xap + + + sql + + + sit + + + sitx + + + srt + + + sv4cpio + + + sv4crc + + + t3 + + + gam + + + tar + + + tcl + + + tk + + + tex + + + tfm + + + texinfo + + + texi + + + obj + + + ustar + + + hdd + + + ova + + + ovf + + + vbox + + + vbox-extpack + + + vdi + + + vhd + + + vmdk + + + src + + + webapp + + + der + + + crt + + + pem + + + fig + + + xlf + + + xpi + + + xz + + + z1 + + + z2 + + + z3 + + + z4 + + + z5 + + + z6 + + + z7 + + + z8 + + + xaml + + + xav + + + xca + + + xdf + + + xel + + + xns + + + xenc + + + xhtml + + + xht + + + xml + + + xsl + + + xsd + + + rng + + + dtd + + + xop + + + xpl + + + xslt + + + xspf + + + mxml + + + xhvml + + + xvml + + + xvm + + + yang + + + yin + + + zip + + + 3gpp + + + adp + + + amr + + + au + + + snd + + + mid + + + midi + + + kar + + + rmi + + + mxmf + + + mp3 + + + m4a + + + mp4a + + + mpga + + + mp2 + + + mp2a + + + m2a + + + m3a + + + oga + + + ogg + + + spx + + + opus + + + s3m + + + sil + + + uva + + + uvva + + + eol + + + dra + + + dts + + + dtshd + + + lvp + + + pya + + + ecelp4800 + + + ecelp7470 + + + ecelp9600 + + + rip + + + wav + + + weba + + + aac + + + aif + + + aiff + + + aifc + + + caf + + + flac + + + mka + + + m3u + + + wax + + + wma + + + ram + + + ra + + + rmp + + + xm + + + cdx + + + cif + + + cmdf + + + cml + + + csml + + + xyz + + + ttc + + + otf + + + ttf + + + woff + + + woff2 + + + exr + + + apng + + + avci + + + avcs + + + avif + + + bmp + + + cgm + + + drle + + + fits + + + g3 + + + gif + + + heic + + + heics + + + heif + + + heifs + + + hej2 + + + hsj2 + + + ief + + + jls + + + jp2 + + + jpg2 + + + jpeg + + + jpg + + + jpe + + + jph + + + jhc + + + jpm + + + jpx + + + jpf + + + jxr + + + jxra + + + jxrs + + + jxs + + + jxsc + + + jxsi + + + jxss + + + ktx + + + ktx2 + + + png + + + btif + + + pti + + + sgi + + + svg + + + svgz + + + t38 + + + tif + + + tiff + + + tfx + + + psd + + + azv + + + uvi + + + uvvi + + + uvg + + + uvvg + + + djvu + + + djv + + + sub + + + dwg + + + dxf + + + fbs + + + fpx + + + fst + + + mmr + + + rlc + + + ico + + + dds + + + mdi + + + wdp + + + npx + + + b16 + + + tap + + + vtf + + + wbmp + + + xif + + + pcx + + + webp + + + 3ds + + + ras + + + cmx + + + fh + + + fhc + + + fh4 + + + fh5 + + + fh7 + + + jng + + + sid + + + pic + + + pct + + + pnm + + + pbm + + + pgm + + + ppm + + + rgb + + + tga + + + xbm + + + xpm + + + xwd + + + disposition-notification + + + u8msg + + + u8dsn + + + u8mdn + + + u8hdr + + + eml + + + mime + + + wsc + + + 3mf + + + gltf + + + glb + + + igs + + + iges + + + msh + + + mesh + + + silo + + + mtl + + + stpx + + + stpz + + + stpxz + + + dae + + + dwf + + + gdl + + + gtw + + + mts + + + ogex + + + x_b + + + x_t + + + vds + + + usdz + + + bsp + + + vtu + + + wrl + + + vrml + + + x3db + + + x3dbz + + + x3dv + + + x3dvz + + + x3d + + + x3dz + + + appcache + + + manifest + + + ics + + + ifb + + + coffee + + + litcoffee + + + css + + + csv + + + html + + + htm + + + shtml + + + jade + + + jsx + + + less + + + markdown + + + md + + + mml + + + mdx + + + n3 + + + txt + + + text + + + conf + + + def + + + list + + + log + + + in + + + ini + + + dsc + + + rtx + + + sgml + + + sgm + + + shex + + + slim + + + slm + + + spdx + + + stylus + + + styl + + + tsv + + + t + + + tr + + + roff + + + man + + + me + + + ms + + + ttl + + + uri + + + uris + + + urls + + + vcard + + + curl + + + dcurl + + + mcurl + + + scurl + + + ged + + + fly + + + flx + + + gv + + + 3dml + + + spot + + + jad + + + wml + + + wmls + + + vtt + + + s + + + asm + + + c + + + cc + + + cxx + + + cpp + + + h + + + hh + + + dic + + + htc + + + f + + + for + + + f77 + + + f90 + + + hbs + + + java + + + lua + + + mkd + + + nfo + + + opml + + + p + + + pas + + + pde + + + sass + + + scss + + + etx + + + sfv + + + ymp + + + uu + + + vcs + + + vcf + + + yaml + + + yml + + + 3gp + + + 3g2 + + + h261 + + + h263 + + + h264 + + + m4s + + + jpgv + + + jpgm + + + mj2 + + + mjp2 + + + ts + + + mp4 + + + mp4v + + + mpg4 + + + mpeg + + + mpg + + + mpe + + + m1v + + + m2v + + + ogv + + + qt + + + mov + + + uvh + + + uvvh + + + uvm + + + uvvm + + + uvp + + + uvvp + + + uvs + + + uvvs + + + uvv + + + uvvv + + + dvb + + + fvt + + + mxu + + + m4u + + + pyv + + + uvu + + + uvvu + + + viv + + + webm + + + f4v + + + fli + + + flv + + + m4v + + + mkv + + + mk3d + + + mks + + + mng + + + asf + + + asx + + + vob + + + wm + + + wmv + + + wmx + + + wvx + + + avi + + + movie + + + smv + + + ice + + + File extensions + + + ez + + + aw + + + atom + + + atomcat + + + atomdeleted + + + atomsvc + + + dwd + + + held + + + rsat + + + bdoc + + + xcs + + + ccxml + + + cdfx + + + cdmia + + + cdmic + + + cdmid + + + cdmio + + + cdmiq + + + cpl + + + cu + + + mpd + + + mpp + + + davmount + + + dbk + + + dssc + + + xdssc + + + es + + + ecma + + + emma + + + emotionml + + + epub + + + exi + + + exp + + + fdt + + + pfr + + + geojson + + + gml + + + gpx + + + gxf + + + gz + + + hjson + + + stk + + + ink + + + inkml + + + ipfix + + + its + + + jar + + + war + + + ear + + + ser + + + class + + + js + + + mjs + + + json + + + map + + + json5 + + + jsonml + + + jsonld + + + lgr + + + lostxml + + + hqx + + + cpt + + + mads + + + webmanifest + + + mrc + + + mrcx + + + ma + + + nb + + + mb + + + mathml + + + mbox + + + mpf + + + mscml + + + metalink + + + meta4 + + + mets + + + maei + + + musd + + + mods + + + m21 + + + mp21 + + + mp4s + + + m4p + + + doc + + + dot + + + mxf + + + nq + + + nt + + + cjs + + + bin + + + dms + + + lrf + + + mar + + + so + + + dist + + + distz + + + pkg + + + bpk + + + dump + + + elc + + + deploy + + + exe + + + dll + + + deb + + + dmg + + + iso + + + img + + + msi + + + msp + + + msm + + + buffer + + + oda + + + opf + + + ogx + + + omdoc + + + onetoc + + + onetoc2 + + + onetmp + + + onepkg + + + oxps + + + relo + + + xer + + + pdf + + + pgp + + + asc + + + sig + + + prf + + + p10 + + + p7m + + + p7c + + + p7s + + + p8 + + + ac + + + cer + + + crl + + + pkipath + + + pki + + + pls + + + ai + + + eps + + + ps + + + provx + + + cww + + + pskcxml + + + raml + + + rdf + + + owl + + + rif + + + rnc + + + rl + + + rld + + + rs + + + rapd + + + sls + + + rusd + + + gbr + + + mft + + + roa + + + rsd + + + rss + + + rtf + + + sbml + + + scq + + + scs + + + spq + + + spp + + + sdp + + + senmlx + + + sensmlx + + + setpay + + + setreg + + + shf + + + siv + + + sieve + + + smi + + + smil + + + rq + + + srx + + + gram + + + grxml + + + sru + + + ssdl + + + ssml + + + swidtag + + + tei + + + teicorpus + + + tfi + + + tsd + + + toml + + + trig + + + ttml + + + ubj + + + rsheet + + + td + + + 1km + + + plb + + + psb + + + pvb + + + tcap + + + pwn + + + aso + + + imp + + + acu + + + atc + + + acutc + + + air + + + fcdt + + + fxp + + + fxpl + + + xdp + + + xfdf + + + age + + + ahead + + + azf + + + azs + + + azw + + + acc + + + ami + + + apk + + + cii + + + fti + + + atx + + + mpkg + + + key + + + m3u8 + + + numbers + + + pages + + + pkpass + + + swi + + + iota + + + aep + + + bmml + + + mpm + + + bmi + + + rep + + + cdxml + + + mmd + + + cdy + + + csl + + + cla + + + rp9 + + + c4g + + + c4d + + + c4f + + + c4p + + + c4u + + + c11amc + + + c11amz + + + csp + + + cdbcmsg + + + cmc + + + clkx + + + clkk + + + clkp + + + clkt + + + clkw + + + wbs + + + pml + + + ppd + + + car + + + pcurl + + + dart + + + rdz + + + dbf + + + uvf + + + uvvf + + + uvd + + + uvvd + + + uvt + + + uvvt + + + uvx + + + uvvx + + + uvz + + + uvvz + + + fe_launch + + + dna + + + mlp + + + dpg + + + dfac + + + kpxx + + + ait + + + svc + + + geo + + + mag + + + nml + + + esf + + + msf + + + qam + + + slt + + + ssf + + + es3 + + + et3 + + + ez2 + + + ez3 + + + fdf + + + mseed + + + seed + + + dataless + + + gph + + + ftc + + + fm + + + frame + + + maker + + + book + + + fnc + + + ltf + + + fsc + + + oas + + + oa2 + + + oa3 + + + fg5 + + + bh2 + + + ddd + + + xdw + + + xbd + + + fzs + + + txd + + + ggb + + + ggt + + + gex + + + gre + + + gxt + + + g2w + + + g3w + + + gmx + + + gdoc + + + gslides + + + gsheet + + + kml + + + kmz + + + gqf + + + gqs + + + gac + + + ghf + + + gim + + + grv + + + gtm + + + tpl + + + vcg + + + hal + + + zmm + + + hbci + + + les + + + hpgl + + + hpid + + + hps + + + jlt + + + pcl + + + pclxl + + + sfd-hdstx + + + mpy + + + afp + + + listafp + + + list3820 + + + irm + + + sc + + + icc + + + icm + + + igl + + + ivp + + + ivu + + + igm + + + xpw + + + xpx + + + i2g + + + qbo + + + qfx + + + rcprofile + + + irp + + + xpr + + + fcs + + + jam + + + rms + + + jisp + + + joda + + + ktz + + + ktr + + + karbon + + + chrt + + + kfo + + + flw + + + kon + + + kpr + + + kpt + + + ksp + + + kwd + + + kwt + + + htke + + + kia + + + kne + + + knp + + + skp + + + skd + + + skt + + + skm + + + sse + + + lasxml + + + lbd + + + lbe + + + 123 + + + apr + + + pre + + + nsf + + + org + + + scm + + + lwp + + + portpkg + + + mvt + + + mcd + + + mc1 + + + cdkey + + + mwf + + + mfm + + + flo + + + igx + + + mif + + + daf + + + dis + + + mbk + + + mqy + + + msl + + + plc + + + txf + + + mpn + + + mpc + + + xul + + + cil + + + cab + + + xls + + + xlm + + + xla + + + xlc + + + xlt + + + xlw + + + xlam + + + xlsb + + + xlsm + + + xltm + + + eot + + + chm + + + ims + + + lrm + + + thmx + + + msg + + + cat + + + stl + + + ppt + + + pps + + + pot + + + ppam + + + pptm + + + sldm + + + ppsm + + + potm + + + mpt + + + docm + + + dotm + + + wps + + + wks + + + wcm + + + wdb + + + wpl + + + xps + + + mseq + + + mus + + + msty + + + taglet + + + nlu + + + ntf + + + nitf + + + nnd + + + nns + + + nnw + + + ngdat + + + n-gage + + + rpst + + + rpss + + + edm + + + edx + + + ext + + + odc + + + otc + + + odb + + + odf + + + odft + + + odg + + + otg + + + odi + + + oti + + + odp + + + otp + + + ods + + + ots + + + odt + + + odm + + + ott + + + oth + + + xo + + + dd2 + + + obgx + + + oxt + + + osm + + + pptx + + + sldx + + + ppsx + + + potx + + + xlsx + + + xltx + + + docx + + + dotx + + + mgp + + + dp + + + esa + + + pdb + + + pqa + + + oprc + + + paw + + + str + + + ei6 + + + efif + + + wg + + + plf + + + pbd + + + box + + + mgz + + + qps + + + ptid + + + qxd + + + qxt + + + qwd + + + qwt + + + qxl + + + qxb + + + rar + + + bed + + + mxl + + + musicxml + + + cryptonote + + + cod + + + rm + + + rmvb + + + link66 + + + st + + + see + + + sema + + + semd + + + semf + + + ifm + + + itp + + + iif + + + ipk + + + twd + + + twds + + + mmf + + + teacher + + + fo + + + sdkm + + + sdkd + + + dxp + + + sfs + + + sdc + + + sda + + + sdd + + + smf + + + sdw + + + vor + + + sgl + + + smzip + + + sm + + + wadl + + + sxc + + + stc + + + sxd + + + std + + + sxi + + + sti + + + sxm + + + sxw + + + sxg + + + stw + + + sus + + + susp + + + svd + + + sis + + + sisx + + + xsm + + + bdm + + + xdm + + + ddf + + + tao + + + pcap + + + cap + + + dmp + + + tmo + + + tpt + + + mxs + + + tra + + + ufd + + + ufdl + + + utz + + + umj + + + unityweb + + + uoml + + + vcx + + + vsd + + + vst + + + vss + + + vsw + + + vis + + + vsf + + + wbxml + + + wmlc + + + wmlsc + + + wtb + + + nbp + + + wpd + + + wqd + + + stf + + + xar + + + xfdl + + + hvd + + + hvs + + + hvp + + + osf + + + osfpvg + + + saf + + + spf + + + cmp + + + zir + + + zirz + + + zaz + + + vxml + + + wasm + + + wif + + + wgt + + + hlp + + + wsdl + + + wspolicy + + + 7z + + + abw + + + ace + + + arj + + + aab + + + x32 + + + u32 + + + vox + + + aam + + + aas + + + bcpio + + + torrent + + + blb + + + blorb + + + bz + + + bz2 + + + boz + + + cbr + + + cba + + + cbt + + + cbz + + + cb7 + + + vcd + + + cfs + + + chat + + + pgn + + + crx + + + cco + + + nsc + + + cpio + + + csh + + + udeb + + + dgc + + + dir + + + dcr + + + dxr + + + cst + + + cct + + + cxt + + + w3d + + + fgd + + + swa + + + wad + + + ncx + + + dtb + + + res + + + dvi + + + evy + + + eva + + + bdf + + + gsf + + + psf + + + pcf + + + snf + + + pfa + + + pfb + + + pfm + + + afm + + + arc + + + spl + + + gca + + + ulx + + + gnumeric + + + gramps + + + gtar + + + hdf + + + php + + + install + + + jardiff + + + jnlp + + + kdbx + + + latex + + + luac + + + lzh + + + lha + + + run + + + mie + + + prc + + + mobi + + + application + + + lnk + + + wmd + + + wmz + + + xbap + + + mdb + + + obd + + + crd + + + clp + + + com + + + bat + + + mvb + + + m13 + + + m14 + + + wmf + + + emf + + + emz + + + mny + + + pub + + + scd + + + trm + + + wri + + + nc + + + cdf + + + pac + + + nzb + + + pl + + + pm + + + p12 + + + pfx + + + p7b + + + spc + + + p7r + + + rpm + + + ris + + + sea + + + sh + + + shar + + + swf + + + xap + + + sql + + + sit + + + sitx + + + srt + + + sv4cpio + + + sv4crc + + + t3 + + + gam + + + tar + + + tcl + + + tk + + + tex + + + tfm + + + texinfo + + + texi + + + obj + + + ustar + + + hdd + + + ova + + + ovf + + + vbox + + + vbox-extpack + + + vdi + + + vhd + + + vmdk + + + src + + + webapp + + + der + + + crt + + + pem + + + fig + + + xlf + + + xpi + + + xz + + + z1 + + + z2 + + + z3 + + + z4 + + + z5 + + + z6 + + + z7 + + + z8 + + + xaml + + + xav + + + xca + + + xdf + + + xel + + + xns + + + xenc + + + xhtml + + + xht + + + xml + + + xsl + + + xsd + + + rng + + + dtd + + + xop + + + xpl + + + xslt + + + xspf + + + mxml + + + xhvml + + + xvml + + + xvm + + + yang + + + yin + + + zip + + + 3gpp + + + adp + + + amr + + + au + + + snd + + + mid + + + midi + + + kar + + + rmi + + + mxmf + + + mp3 + + + m4a + + + mp4a + + + mpga + + + mp2 + + + mp2a + + + m2a + + + m3a + + + oga + + + ogg + + + spx + + + opus + + + s3m + + + sil + + + uva + + + uvva + + + eol + + + dra + + + dts + + + dtshd + + + lvp + + + pya + + + ecelp4800 + + + ecelp7470 + + + ecelp9600 + + + rip + + + wav + + + weba + + + aac + + + aif + + + aiff + + + aifc + + + caf + + + flac + + + mka + + + m3u + + + wax + + + wma + + + ram + + + ra + + + rmp + + + xm + + + cdx + + + cif + + + cmdf + + + cml + + + csml + + + xyz + + + ttc + + + otf + + + ttf + + + woff + + + woff2 + + + exr + + + apng + + + avci + + + avcs + + + avif + + + bmp + + + cgm + + + drle + + + fits + + + g3 + + + gif + + + heic + + + heics + + + heif + + + heifs + + + hej2 + + + hsj2 + + + ief + + + jls + + + jp2 + + + jpg2 + + + jpeg + + + jpg + + + jpe + + + jph + + + jhc + + + jpm + + + jpx + + + jpf + + + jxr + + + jxra + + + jxrs + + + jxs + + + jxsc + + + jxsi + + + jxss + + + ktx + + + ktx2 + + + png + + + btif + + + pti + + + sgi + + + svg + + + svgz + + + t38 + + + tif + + + tiff + + + tfx + + + psd + + + azv + + + uvi + + + uvvi + + + uvg + + + uvvg + + + djvu + + + djv + + + sub + + + dwg + + + dxf + + + fbs + + + fpx + + + fst + + + mmr + + + rlc + + + ico + + + dds + + + mdi + + + wdp + + + npx + + + b16 + + + tap + + + vtf + + + wbmp + + + xif + + + pcx + + + webp + + + 3ds + + + ras + + + cmx + + + fh + + + fhc + + + fh4 + + + fh5 + + + fh7 + + + jng + + + sid + + + pic + + + pct + + + pnm + + + pbm + + + pgm + + + ppm + + + rgb + + + tga + + + xbm + + + xpm + + + xwd + + + disposition-notification + + + u8msg + + + u8dsn + + + u8mdn + + + u8hdr + + + eml + + + mime + + + wsc + + + 3mf + + + gltf + + + glb + + + igs + + + iges + + + msh + + + mesh + + + silo + + + mtl + + + stpx + + + stpz + + + stpxz + + + dae + + + dwf + + + gdl + + + gtw + + + mts + + + ogex + + + x_b + + + x_t + + + vds + + + usdz + + + bsp + + + vtu + + + wrl + + + vrml + + + x3db + + + x3dbz + + + x3dv + + + x3dvz + + + x3d + + + x3dz + + + appcache + + + manifest + + + ics + + + ifb + + + coffee + + + litcoffee + + + css + + + csv + + + html + + + htm + + + shtml + + + jade + + + jsx + + + less + + + markdown + + + md + + + mml + + + mdx + + + n3 + + + txt + + + text + + + conf + + + def + + + list + + + log + + + in + + + ini + + + dsc + + + rtx + + + sgml + + + sgm + + + shex + + + slim + + + slm + + + spdx + + + stylus + + + styl + + + tsv + + + t + + + tr + + + roff + + + man + + + me + + + ms + + + ttl + + + uri + + + uris + + + urls + + + vcard + + + curl + + + dcurl + + + mcurl + + + scurl + + + ged + + + fly + + + flx + + + gv + + + 3dml + + + spot + + + jad + + + wml + + + wmls + + + vtt + + + s + + + asm + + + c + + + cc + + + cxx + + + cpp + + + h + + + hh + + + dic + + + htc + + + f + + + for + + + f77 + + + f90 + + + hbs + + + java + + + lua + + + mkd + + + nfo + + + opml + + + p + + + pas + + + pde + + + sass + + + scss + + + etx + + + sfv + + + ymp + + + uu + + + vcs + + + vcf + + + yaml + + + yml + + + 3gp + + + 3g2 + + + h261 + + + h263 + + + h264 + + + m4s + + + jpgv + + + jpgm + + + mj2 + + + mjp2 + + + ts + + + mp4 + + + mp4v + + + mpg4 + + + mpeg + + + mpg + + + mpe + + + m1v + + + m2v + + + ogv + + + qt + + + mov + + + uvh + + + uvvh + + + uvm + + + uvvm + + + uvp + + + uvvp + + + uvs + + + uvvs + + + uvv + + + uvvv + + + dvb + + + fvt + + + mxu + + + m4u + + + pyv + + + uvu + + + uvvu + + + viv + + + webm + + + f4v + + + fli + + + flv + + + m4v + + + mkv + + + mk3d + + + mks + + + mng + + + asf + + + asx + + + vob + + + wm + + + wmv + + + wmx + + + wvx + + + avi + + + movie + + + smv + + + ice + + + + MIME type utility to lookup by file extension + + + + + The "octet-stream" subtype is used to indicate that a body contains arbitrary binary data. + See application/octet-stream + + + + + Dictionary of all available types (lazy loaded on first call) + + + + The file extensions (ex: "zip"), the file name, or file path + The mime type string, returns "application/octet-stream" if no known type was found + + + The mime type string, e.g. "application/json" + One or more extensions matching the mime type or null if no match + + + diff --git a/Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0/MimeMapping.xml.meta b/Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0/MimeMapping.xml.meta new file mode 100644 index 0000000..6003c53 --- /dev/null +++ b/Assets/Packages/MimeMapping.2.0.0/lib/netstandard2.0/MimeMapping.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a70842d57b741b9449bffe458a6c59c6 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3.meta b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3.meta new file mode 100644 index 0000000..de357ab --- /dev/null +++ b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e3e9c47556888b64cb2dcf7182b652e1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/.signature.p7s b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..d88fcec9037320a4d0cabdc6d97fc68cfe4c1b4e GIT binary patch literal 24206 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 literal 0 HcmV?d00001 diff --git a/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/System.IdentityModel.Tokens.Jwt.nuspec b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/System.IdentityModel.Tokens.Jwt.nuspec new file mode 100644 index 0000000..01a80d6 --- /dev/null +++ b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/System.IdentityModel.Tokens.Jwt.nuspec @@ -0,0 +1,42 @@ + + + + System.IdentityModel.Tokens.Jwt + 7.0.3 + Microsoft + MIT + https://licenses.nuget.org/MIT + https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet + Includes types that provide support for creating, serializing and validating JSON Web Tokens. + © Microsoft Corporation. All rights reserved. + .NET Windows Authentication Identity Json Web Token + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/System.IdentityModel.Tokens.Jwt.nuspec.meta b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/System.IdentityModel.Tokens.Jwt.nuspec.meta new file mode 100644 index 0000000..fc12a7f --- /dev/null +++ b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/System.IdentityModel.Tokens.Jwt.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7daf1560664c0a14abfe643d6ad46219 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib.meta b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib.meta new file mode 100644 index 0000000..5829d51 --- /dev/null +++ b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d4002a00ea3720c47ba92a55eff6c6e5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0.meta b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0.meta new file mode 100644 index 0000000..5119b18 --- /dev/null +++ b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 740611cd094f851478af8179d71d9c8d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll new file mode 100644 index 0000000000000000000000000000000000000000..02a31e6de17e575fad0f80d138d9acddff00c3dc GIT binary patch literal 81328 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 literal 0 HcmV?d00001 diff --git a/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll.meta b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll.meta new file mode 100644 index 0000000..f522f40 --- /dev/null +++ b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.dll.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: b7e5b124b59c7e54481355d6a92ead92 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 3 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml new file mode 100644 index 0000000..ad73385 --- /dev/null +++ b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml @@ -0,0 +1,1548 @@ + + + + System.IdentityModel.Tokens.Jwt + + + +

+ Constants that indicate how the should be evaluated. + + + + + A value that indicates the is a Json object. + + When creating a from Json if the value was not a simple type {String, Null, True, False, Number} + then will contain the Json value. If the Json was a JsonObject, the will be set to "JSON". + + + + A value that indicates the is a Json object. + + When creating a from Json if the value was not a simple type {String, Null, True, False, Number} + then will contain the Json value. If the Json was a JsonArray, the will be set to "JSON_ARRAY". + + + + A value that indicates the is Json null. + + When creating a the cannot be null. If the Json value was null, then the + will be set to and the will be set to "JSON_NULL". + + + + Constants for Json Web tokens. + + + + + Short header type. + + + + + Long header type. + + + + + Short token type. + + + + + Long token type. + + + + + JWS - Token format: 'header.payload.signature'. Signature is optional, but '.' is required. + + + + + JWE - Token format: 'protectedheader.encryptedkey.iv.cyphertext.authenticationtag'. + + + + + The number of parts in a JWE token. + + + + + The number of parts in a JWS token. + + + + + The maximum number of parts in a JWT. + + + + + JWE header alg indicating a shared symmetric key is directly used as CEK. + + + + + Initializes a new instance of which contains JSON objects representing the cryptographic operations applied to the JWT and optionally any additional properties of the JWT. + The member names within the JWT Header are referred to as Header Parameter Names. + These names MUST be unique and the values must be (s). The corresponding values are referred to as Header Parameter Values. + + + + + Initializes a new instance of the class. Default string comparer . + + + + + Initializes a new instance of the class. Default string comparer . + + + + + Initializes a new instance of . + With the Header Parameters: + { { typ, JWT }, { alg, SigningCredentials.Algorithm } } + + used creating a JWS Compact JSON. + + + + Initializes a new instance of . + With the Header Parameters: + { { typ, JWT }, { alg, EncryptingCredentials.Alg }, { enc, EncryptingCredentials.Enc } } + + used creating a JWE Compact JSON. + If 'encryptingCredentials' is null. + + + + Initializes a new instance of . + With the Header Parameters: + { { typ, JWT }, { alg, SigningCredentials.Algorithm } } + + used when creating a JWS Compact JSON. + provides a mapping for the 'alg' value so that values are within the JWT namespace. + + + + Initializes a new instance of . + With the Header Parameters: + { { typ, JWT }, { alg, SigningCredentials.Algorithm } } + + used when creating a JWS Compact JSON. + provides a mapping for the 'alg' value so that values are within the JWT namespace. + will be added as the value for the 'typ' claim in the header. If it is null or empty will be used as token type + + + + Initializes a new instance of . + With the Header Parameters: + { { typ, JWT }, { alg, SigningCredentials.Algorithm } } + + used when creating a JWS Compact JSON. + provides a mapping for the 'alg' value so that values are within the JWT namespace. + will be added as the value for the 'typ' claim in the header. If it is null or empty will be used as token type + Defines the dictionary containing any custom header claims that need to be added to the inner JWT token header. + + + + Initializes a new instance of . + With the Header Parameters: + { { typ, JWT }, { alg, EncryptingCredentials.Algorithm } } + + used when creating a JWS Compact JSON. + provides a mapping for the 'alg' value so that values are within the JWT namespace. + If 'encryptingCredentials' is null. + + + + Initializes a new instance of . + With the Header Parameters: + { { typ, JWT }, { alg, EncryptingCredentials.Algorithm } } + + used when creating a JWS Compact JSON. + provides a mapping for the 'alg' value so that values are within the JWT namespace. + provides the token type + If 'encryptingCredentials' is null. + + + + Initializes a new instance of . + With the Header Parameters: + { { typ, JWT }, { alg, EncryptingCredentials.Algorithm } } + + used when creating a JWS Compact JSON. + provides a mapping for the 'alg' value so that values are within the JWT namespace. + provides the token type + Defines the dictionary containing any custom header claims that need to be added to the outer JWT token header. + If 'encryptingCredentials' is null. + + + + Gets the signature algorithm that was used to create the signature. + + If the signature algorithm is not found, null is returned. + + + + Gets the content mime type (Cty) of the token. + + If the content mime type is not found, null is returned. + + + + Gets the encryption algorithm (Enc) of the token. + + If the content mime type is not found, null is returned. + + + + Gets the passed in the constructor. + + This value may be null. + + + + Gets the iv of symmetric key wrap. + + + + + Gets the key identifier for the security key used to sign the token + + + + + Gets the passed in the constructor. + + This value may be null. + + + + Gets the mime type (Typ) of the token. + + If the mime type is not found, null is returned. + + + + Gets the thumbprint of the certificate used to sign the token + + + + + Gets the certificate used to sign the token + + If the 'x5c' claim is not found, null is returned. + + + + Gets the 'value' of the 'zip' claim { zip, 'value' }. + + If the 'zip' claim is not found, null is returned. + + + + Deserializes Base64UrlEncoded JSON into a instance. + + Base64url encoded JSON to deserialize. + An instance of . + + + + Encodes this instance as Base64UrlEncoded JSON. + + Base64UrlEncoded JSON. + + + + Gets a standard claim from the header. + A standard claim is either a string or a value of another type serialized in JSON format. + + The key of the claim. + The standard claim string; or null if not found. + + + + Serializes this instance to JSON. + + This instance as JSON. + + + + List of header parameter names see: https://datatracker.ietf.org/doc/html/rfc7519#section-5. + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.1 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.10 + Also: https://datatracker.ietf.org/doc/html/rfc7519#section-5.2 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.2 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7518#section-4.7.1.1 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.2 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.3 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.4 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.9 + Also: https://datatracker.ietf.org/doc/html/rfc7519#section-5.1 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.6 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#page-12 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7515#section-4.1.5 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7516#section-4.1.3 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7518#section-4.6.1.1 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7518#section-4.6.1.2 + + + + + See: https://datatracker.ietf.org/doc/html/rfc7518#section-4.6.1.3 + + + + + Initializes a new instance of which contains JSON objects representing the claims contained in the JWT. Each claim is a JSON object of the form { Name, Value }. + + + + + Initializes a new instance of the class with no claims. Default string comparer . + Creates a empty + + + + + Initializes a new instance of the class with . Default string comparer . + The claims to add. + + + + + Initializes a new instance of the class with claims added for each parameter specified. Default string comparer . + + If this value is not null, a { iss, 'issuer' } claim will be added, overwriting any 'iss' claim in 'claims' if present. + If this value is not null, a { aud, 'audience' } claim will be added, appending to any 'aud' claims in 'claims' if present. + If this value is not null then for each a { 'Claim.Type', 'Claim.Value' } is added. If duplicate claims are found then a { 'Claim.Type', List<object> } will be created to contain the duplicate values. + If notbefore.HasValue a { nbf, 'value' } claim is added, overwriting any 'nbf' claim in 'claims' if present. + If expires.HasValue a { exp, 'value' } claim is added, overwriting any 'exp' claim in 'claims' if present. + + + + Initializes a new instance of the class with claims added for each parameter specified. Default string comparer . + + If this value is not null, a { iss, 'issuer' } claim will be added, overwriting any 'iss' claim in 'claims' if present. + If this value is not null, a { aud, 'audience' } claim will be added, appending to any 'aud' claims in 'claims' if present. + If this value is not null then for each a { 'Claim.Type', 'Claim.Value' } is added. If duplicate claims are found then a { 'Claim.Type', List<object> } will be created to contain the duplicate values. + If notbefore.HasValue a { nbf, 'value' } claim is added, overwriting any 'nbf' claim in 'claims' if present. + If expires.HasValue a { exp, 'value' } claim is added, overwriting any 'exp' claim in 'claims' if present. + If issuedAt.HasValue is 'true' a { iat, 'value' } claim is added, overwriting any 'iat' claim in 'claims' if present. + Comparison is set to + The 4 parameters: 'issuer', 'audience', 'notBefore', 'expires' take precedence over (s) in 'claims'. The values will be overridden. + If 'expires' <= 'notbefore'. + + + + Initializes a new instance of the class with claims added for each parameter specified. Default string comparer . + + If this value is not null, a { iss, 'issuer' } claim will be added, overwriting any 'iss' claim in 'claims' and 'claimCollection' if present. + If this value is not null, a { aud, 'audience' } claim will be added, appending to any 'aud' claims in 'claims' or 'claimCollection' if present. + If this value is not null then for each a { 'Claim.Type', 'Claim.Value' } is added. If duplicate claims are found then a { 'Claim.Type', List<object> } will be created to contain the duplicate values. + If both and are not null then the values in claims will be combined with the values in claimsCollection. The values found in claimCollection take precedence over those found in claims, so any duplicate + values will be overridden. + If notbefore.HasValue a { nbf, 'value' } claim is added, overwriting any 'nbf' claim in 'claims' and 'claimcollection' if present. + If expires.HasValue a { exp, 'value' } claim is added, overwriting any 'exp' claim in 'claims' and 'claimcollection' if present. + If issuedAt.HasValue is 'true' a { iat, 'value' } claim is added, overwriting any 'iat' claim in 'claims' and 'claimcollection' if present. + Comparison is set to + The 4 parameters: 'issuer', 'audience', 'notBefore', 'expires' take precedence over (s) in 'claims' and 'claimcollection'. The values will be overridden. + If 'expires' <= 'notbefore'. + + + + Adds Nbf, Exp, Iat, Iss and Aud claims to payload + + If this value is not null, a { iss, 'issuer' } claim will be added, overwriting any 'iss' claim in instance. + If this value is not null, a { aud, 'audience' } claim will be added, appending to any 'aud' claims in instance. + If notbefore.HasValue a { nbf, 'value' } claim is added, overwriting any 'nbf' claim in instance. + If expires.HasValue a { exp, 'value' } claim is added, overwriting any 'exp' claim in instance. + If issuedAt.HasValue is 'true' a { iat, 'value' } claim is added, overwriting any 'iat' claim in instance. + + + + Gets the 'value' of the 'actor' claim { actort, 'value' }. + + If the 'actor' claim is not found, null is returned. + + + + Gets the 'value' of the 'acr' claim { acr, 'value' }. + + If the 'acr' claim is not found, null is returned. + + + + Gets the 'value' of the 'amr' claim { amr, 'value' } as list of strings. + + If the 'amr' claim is not found, an empty enumerable is returned. + + + + Gets the 'value' of the 'auth_time' claim { auth_time, 'value' }. + + If the 'auth_time' claim is not found OR could not be converted to , null is returned. + + + + Gets the 'value' of the 'audience' claim { aud, 'value' } as a list of strings. + + If the 'audience' claim is not found, an empty enumerable is returned. + + + + Gets the 'value' of the 'azp' claim { azp, 'value' }. + + If the 'azp' claim is not found, null is returned. + + + + Gets 'value' of the 'c_hash' claim { c_hash, 'value' }. + + If the 'c_hash' claim is not found, null is returned. + + + + Gets the 'value' of the 'expiration' claim { exp, 'value' }. + + If the 'expiration' claim is not found OR could not be converted to , null is returned. + + + + Gets the 'value' of the 'expiration' claim { exp, 'value' }. + + If the 'expiration' claim is not found OR could not be converted to , null is returned. + + + + Gets the 'value' of the 'JWT ID' claim { jti, 'value' }. + + If the 'JWT ID' claim is not found, null is returned. + + + + Gets the 'value' of the 'Issued At' claim { iat, 'value' }. + + If the 'Issued At' claim is not found OR cannot be converted to null is returned. + + + + Gets the 'value' of the 'issuer' claim { iss, 'value' }. + + If the 'issuer' claim is not found, null is returned. + + + + Gets the 'value' of the 'expiration' claim { nbf, 'value' }. + + If the 'notbefore' claim is not found OR could not be converted to , null is returned. + + + + Gets the 'value' of the 'nonce' claim { nonce, 'value' }. + + If the 'nonce' claim is not found, null is returned. + + + + Gets the 'value' of the 'notebefore' claim { nbf, 'value' }. + + If the 'notbefore' claim is not found OR could not be converted to , null is returned. + + + + Gets the 'value' of the 'subject' claim { sub, 'value' }. + + If the 'subject' claim is not found, null is returned. + + + + Gets the 'value' of the 'notbefore' claim { nbf, 'value' } converted to a assuming 'value' is seconds since UnixEpoch (UTC 1970-01-01T0:0:0Z). + + If the 'notbefore' claim is not found, then is returned. Time is returned as UTC. + + + + Gets the 'value' of the 'expiration' claim { exp, 'value' } converted to a assuming 'value' is seconds since UnixEpoch (UTC 1970-01-01T0:0:0Z). + + If the 'expiration' claim is not found, then is returned. + + + + Gets the 'value' of the 'issued at' claim { iat, 'value' } converted to a assuming 'value' is seconds since UnixEpoch (UTC 1970-01-01T0:0:0Z). + + If the 'issued at' claim is not found, then is returned. + + + + Gets a for each JSON { name, value }. + + Each (s) returned will have the translated according to the mapping found in . Adding and removing to will affect the value of the . + and will be set to the value of ( if null). + + + + Adds a JSON object representing the to the + + { 'Claim.Type', 'Claim.Value' } is added. If a JSON object is found with the name == then a { 'Claim.Type', List<object> } will be created to contain the duplicate values. + See For details on how is applied. + 'claim' is null. + + + + Adds a number of to the as JSON { name, value } pairs. + + For each a JSON pair { 'Claim.Type', 'Claim.Value' } is added. If duplicate claims are found then a { 'Claim.Type', List<object> } will be created to contain the duplicate values. + + Any in the that is null, will be ignored. + is null. + + + + Adds claims from dictionary. + + A dictionary of claims. + If a key is already present in target dictionary, its claimValue is overridden by the claimValue of the key in claimsCollection. + + + + Serializes this instance to JSON. + + This instance as JSON. + + + + Deserializes Base64UrlEncoded JSON into a . + + Base64url encoded JSON to deserialize. + An instance of . + + + + Encodes this instance as Base64UrlEncoded JSON. + + Base64UrlEncoded JSON. + + + + Deserialzes JSON into a instance. + + The JSON to deserialize. + An instance of . + + + + List of registered claims from different sources + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + http://openid.net/specs/openid-connect-core-1_0.html#IDToken + + + + + + + + + http://openid.net/specs/openid-connect-core-1_0.html#IDToken + + + + + http://openid.net/specs/openid-connect-core-1_0.html#IDToken + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + + + + + http://openid.net/specs/openid-connect-core-1_0.html#IDToken + + + + + http://openid.net/specs/openid-connect-core-1_0.html#IDToken + + + + + https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims + + + + + https://openid.net/specs/openid-connect-core-1_0.html#HybridIDToken + + + + + http://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken + + + + + https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + + + + + https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims + + + + + https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims + + + + + https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + + + + + https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims + + + + + + + + + https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + + + + + + + + + http://openid.net/specs/openid-connect-frontchannel-1_0.html#OPLogout + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-4 + + + + + https://datatracker.ietf.org/doc/html/rfc7519#section-5 + + + + + + + + + + + + + A designed for representing a JSON Web Token (JWT). + + + + + Initializes a new instance of from a string in JWS Compact serialized format. + + A JSON Web Token that has been serialized in JWS Compact serialized format. + 'jwtEncodedString' is null or contains only whitespace. + 'jwtEncodedString' contains only whitespace. + 'jwtEncodedString' is not in JWE format. + 'jwtEncodedString' is not in JWS or JWE format. + + The contents of this have not been validated, the JSON Web Token is simply decoded. Validation can be accomplished using + + + + + Initializes a new instance of the class where the contains the crypto algorithms applied to the encoded and . The jwtEncodedString is the result of those operations. + + Contains JSON objects representing the cryptographic operations applied to the JWT and optionally any additional properties of the JWT + Contains JSON objects representing the claims contained in the JWT. Each claim is a JSON object of the form { Name, Value } + base64urlencoded JwtHeader + base64urlencoded JwtPayload + base64urlencoded JwtSignature + 'header' is null. + 'payload' is null. + 'rawSignature' is null. + 'rawHeader' or 'rawPayload' is null or whitespace. + + + + Initializes an instance of where the contains the crypto algorithms applied to the innerToken . + + Defines cryptographic operations applied to the 'innerToken'. + + base64urlencoded key + base64urlencoded JwtHeader + base64urlencoded initialization vector. + base64urlencoded encrypted innerToken + base64urlencoded authentication tag. + 'header' is null. + 'innerToken' is null. + 'rawHeader' is null. + 'rawEncryptedKey' is null. + 'rawInitialVector' is null or empty. + 'rawCiphertext' is null or empty. + 'rawAuthenticationTag' is null or empty. + + + + Initializes a new instance of the class where the contains the crypto algorithms applied to the encoded and . The jwtEncodedString is the result of those operations. + + Contains JSON objects representing the cryptographic operations applied to the JWT and optionally any additional properties of the JWT + Contains JSON objects representing the claims contained in the JWT. Each claim is a JSON object of the form { Name, Value } + 'header' is null. + 'payload' is null. + + + + Initializes a new instance of the class specifying optional parameters. + + If this value is not null, a { iss, 'issuer' } claim will be added, overwriting any 'iss' claim in 'claims' if present. + If this value is not null, a { aud, 'audience' } claim will be added, appending to any 'aud' claims in 'claims' if present. + If this value is not null then for each a { 'Claim.Type', 'Claim.Value' } is added. If duplicate claims are found then a { 'Claim.Type', List<object> } will be created to contain the duplicate values. + If expires.HasValue a { exp, 'value' } claim is added, overwriting any 'exp' claim in 'claims' if present. + If notbefore.HasValue a { nbf, 'value' } claim is added, overwriting any 'nbf' claim in 'claims' if present. + The that will be used to sign the . See for details pertaining to the Header Parameter(s). + If 'expires' <= 'notbefore'. + + + + Gets the 'value' of the 'actor' claim { actort, 'value' }. + + If the 'actor' claim is not found, null is returned. + + + + Gets the list of 'audience' claim { aud, 'value' }. + + If the 'audience' claim is not found, enumeration will be empty. + + + + Gets the (s) for this token. + If this is a JWE token, this property only returns the encrypted claims; + the unencrypted claims should be read from the header seperately. + + (s) returned will NOT have the translated according to + + + + Gets the Base64UrlEncoded associated with this instance. + + + + + Gets the Base64UrlEncoded associated with this instance. + + + + + Gets the associated with this instance if the token is signed. + + + + + Gets the 'value' of the 'JWT ID' claim { jti, 'value' }. + + If the 'JWT ID' claim is not found, an empty string is returned. + + + + Gets the 'value' of the 'issuer' claim { iss, 'value' }. + + If the 'issuer' claim is not found, an empty string is returned. + + + + Gets the associated with this instance. + Note that if this JWT is nested ( != null, this property represents the payload of the most inner token. + This property can be null if the content type of the most inner token is unrecognized, in that case + the content of the token is the string returned by PlainText property. + + + + + Gets the associated with this instance. + + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the original raw data of this instance when it was created. + + The original JSON Compact serialized format passed to one of the two constructors + or + + + + Gets the s for this instance. + + + + + Gets the signature algorithm associated with this instance. + + If there is a associated with this instance, a value will be returned. Null otherwise. + + + + Gets the to use when writing this token. + + + + + Gets the to use when writing this token. + + + + + Gets or sets the that signed this instance. + + .ValidateSignature(...) sets this value when a is used to successfully validate a signature. + + + + Gets the "value" of the 'subject' claim { sub, 'value' }. + + If the 'subject' claim is not found, null is returned. + + + + Gets the 'value' of the 'notbefore' claim { nbf, 'value' } converted to a assuming 'value' is seconds since UnixEpoch (UTC 1970-01-01T0:0:0Z). + + If the 'notbefore' claim is not found, then is returned. + + + + Gets the 'value' of the 'expiration' claim { exp, 'value' } converted to a assuming 'value' is seconds since UnixEpoch (UTC 1970-01-01T0:0:0Z). + + If the 'expiration' claim is not found, then is returned. + + + + Gets the 'value' of the 'issued at' claim { iat, 'value' } converted to a assuming 'value' is seconds since UnixEpoch (UTC 1970-01-01T0:0:0Z). + + If the 'issued at' claim is not found, then is returned. + + + + Serializes the and + + A string containing the header and payload in JSON format. + + + + + + + Decodes the string into the header, payload and signature. + + the tokenized string. + the original token. + + + + Decodes the base64url encoded payload. + + the encoded payload. + + + + Decodes the payload and signature from the JWE parts. + + Parts of the JWE including the header. + Assumes Header has already been set. + + + + Static class to convert a to a + + + + + Initializes a new instance of a from a + + A JSON Web Token to convert from. + is null + doesn't have set. + + + + A designed for creating and validating Json Web Tokens. See: https://datatracker.ietf.org/doc/html/rfc7519 and http://www.rfc-editor.org/info/rfc7515 + + + + + Default claim type mapping for inbound claims. + + + + + Default value for the flag that determines whether or not the InboundClaimTypeMap is used. + + + + + Default claim type mapping for outbound claims. + + + + + Default claim type filter list. + + + + + Default JwtHeader algorithm mapping + + + + + Static initializer for a new object. Static initializers run before the first instance of the type is created. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the property which is used when determining whether or not to map claim types that are extracted when validating a . + If this is set to true, the is set to the JSON claim 'name' after translating using this mapping. Otherwise, no mapping occurs. + The default value is true. + + + + + Gets or sets the which is used when setting the for claims in the extracted when validating a . + The is set to the JSON claim 'name' after translating using this mapping. + The default value is ClaimTypeMapping.InboundClaimTypeMap. + + 'value' is null. + + + + Gets or sets the which is used when creating a from (s). + The JSON claim 'name' value is set to after translating using this mapping. + The default value is ClaimTypeMapping.OutboundClaimTypeMap + + This mapping is applied only when using or . Adding values directly will not result in translation. + 'value' is null. + + + + Gets the outbound algorithm map that is passed to the constructor. + + + + Gets or sets the used to filter claims when populating a claims form a . + When a is validated, claims with types found in this will not be added to the . + The default value is ClaimTypeMapping.InboundClaimFilter. + + 'value' is null. + + + + Gets or sets the property name of the will contain the original JSON claim 'name' if a mapping occurred when the (s) were created. + See for more information. + + If .IsNullOrWhiteSpace('value') is true. + + + + Gets or sets the property name of the will contain .Net type that was recognized when serialized the value to JSON. + See for more information. + + If .IsNullOrWhiteSpace('value') is true. + + + + Returns a value that indicates if this handler can validate a . + + 'true', indicating this instance can validate a . + + + + Gets the value that indicates if this instance can write a . + + 'true', indicating this instance can write a . + + + + Gets the type of the . + + The type of + + + + Determines if the string is a well formed Json Web Token (JWT). + See: https://datatracker.ietf.org/doc/html/rfc7519 + + String that should represent a valid JWT. + Uses matching one of: + JWS: @"^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$" + JWE: (dir): @"^[A-Za-z0-9-_]+\.\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$" + JWE: (wrappedkey): @"^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]$" + + + 'false' if the token is null or whitespace. + 'false' if token.Length is greater than . + 'true' if the token is in JSON compact serialization format. + + + + + Returns a Json Web Token (JWT). + + A that contains details of contents of the token. + A JWS and JWE can be returned. + If is provided, then a JWE will be created. + If is provided then a JWS will be created. + If both are provided then a JWE with an embedded JWS will be created. + + + + + Creates a JWT in 'Compact Serialization Format'. + + The issuer of the token. + The audience for this token. + The source of the (s) for this token. + The notbefore time for this token. + The expiration time for this token. + The issue time for this token. + Contains cryptographic material for generating a signature. + If is not null, then a claim { actort, 'value' } will be added to the payload. See for details on how the value is created. + See for details on how the HeaderParameters are added to the header. + See for details on how the values are added to the payload. + Each in the will map by applying . Modifying could change the outbound JWT. + If is provided, then a JWS will be created. + + A Base64UrlEncoded string in 'Compact Serialization Format'. + + + + Creates a JWT in 'Compact Serialization Format'. + + The issuer of the token. + The audience for this token. + The source of the (s) for this token. + Translated into 'epoch time' and assigned to 'nbf'. + Translated into 'epoch time' and assigned to 'exp'. + Translated into 'epoch time' and assigned to 'iat'. + Contains cryptographic material for signing. + Contains cryptographic material for encrypting. + If is not null, then a claim { actort, 'value' } will be added to the payload. for details on how the value is created. + See for details on how the HeaderParameters are added to the header. + See for details on how the values are added to the payload. + Each in the will map by applying . Modifying could change the outbound JWT. + + A Base64UrlEncoded string in 'Compact Serialization Format'. + If 'expires' <= 'notBefore'. + + + + Creates a JWT in 'Compact Serialization Format'. + + The issuer of the token. + The audience for this token. + The source of the (s) for this token. + Translated into 'epoch time' and assigned to 'nbf'. + Translated into 'epoch time' and assigned to 'exp'. + Translated into 'epoch time' and assigned to 'iat'. + Contains cryptographic material for signing. + Contains cryptographic material for encrypting. + A collection of (key,value) pairs representing (s) for this token. + If is not null, then a claim { actort, 'value' } will be added to the payload. for details on how the value is created. + See for details on how the HeaderParameters are added to the header. + See for details on how the values are added to the payload. + Each in the will map by applying . Modifying could change the outbound JWT. + + A Base64UrlEncoded string in 'Compact Serialization Format'. + If 'expires' <= 'notBefore'. + + + + Creates a Json Web Token (JWT). + + A that contains details of contents of the token. + is used to sign . + + + + Creates a + + The issuer of the token. + The audience for this token. + The source of the (s) for this token. + The notbefore time for this token. + The expiration time for this token. + The issue time for this token. + Contains cryptographic material for generating a signature. + Contains cryptographic material for encrypting the token. + If is not null, then a claim { actort, 'value' } will be added to the payload. for details on how the value is created. + See for details on how the HeaderParameters are added to the header. + See for details on how the values are added to the payload. + Each on the added will have translated according to the mapping found in + . Adding and removing to will affect the name component of the Json claim. + is used to sign . + is used to encrypt or . + + A . + If <= . + + + + Creates a + + The issuer of the token. + The audience for this token. + The source of the (s) for this token. + The notbefore time for this token. + The expiration time for this token. + The issue time for this token. + Contains cryptographic material for generating a signature. + Contains cryptographic material for encrypting the token. + A collection of (key,value) pairs representing (s) for this token. + If is not null, then a claim { actort, 'value' } will be added to the payload. for details on how the value is created. + See for details on how the HeaderParameters are added to the header. + See for details on how the values are added to the payload. + Each on the added will have translated according to the mapping found in + . Adding and removing to will affect the name component of the Json claim. + is used to sign . + is used to encrypt or . + + A . + If <= . + + + + Creates a + + The issuer of the token. + The audience for this token. + The source of the (s) for this token. + The notbefore time for this token. + The expiration time for this token. + The issue time for this token. + Contains cryptographic material for generating a signature. + If is not null, then a claim { actort, 'value' } will be added to the payload. for details on how the value is created. + See for details on how the HeaderParameters are added to the header. + See for details on how the values are added to the payload. + Each on the added will have translated according to the mapping found in + . Adding and removing to will affect the name component of the Json claim. + is used to sign . + + A . + If <= . + + + + Creates a Json Web Token (JWT). + + A that contains details of contents of the token. + is used to sign . + + + + Converts a string into an instance of . + + A 'JSON Web Token' (JWT) in JWS or JWE Compact Serialization Format. + A + is null or empty. + 'token.Length' is greater than . + + If the is in JWE Compact Serialization format, only the protected header will be deserialized. + This method is unable to decrypt the payload. Use to obtain the payload. + The token is NOT validated and no security decisions should be made about the contents. + Use to ensure the token is acceptable. + + + + Converts a string into an instance of . + + A 'JSON Web Token' (JWT) in JWS or JWE Compact Serialization Format. + A + is null or empty. + 'token.Length' is greater than . + + If the is in JWE Compact Serialization format, only the protected header will be deserialized. + This method is unable to decrypt the payload. Use to obtain the payload. + The token is NOT validated and no security decisions should be made about the contents. + Use to ensure the token is acceptable. + + + + Deserializes token with the provided . + + . + The current . + The + This method is not current supported. + + + + Reads and validates a 'JSON Web Token' (JWT) encoded as a JWS or JWE in Compact Serialized Format. + + the JWT encoded as JWE or JWS + Contains validation parameters for the . + The that was validated. + is null or whitespace. + is null. + .Length is greater than . + does not have 3 or 5 parts. + returns false. + was a JWE was not able to be decrypted. + 'kid' header claim is not null AND decryption fails. + 'enc' header claim is null or empty. + 'exp' claim is < DateTime.UtcNow. + is null or whitespace and is null. Audience is not validated if is set to false. + 'aud' claim did not match either or one of . + 'nbf' claim is > 'exp' claim. + .signature is not properly formatted. + 'exp' claim is missing and is true. + is not null and expirationTime.HasValue is false. When a TokenReplayCache is set, tokens require an expiration time. + 'nbf' claim is > DateTime.UtcNow. + could not be added to the . + is found in the cache. + A from the JWT. Does not include claims found in the JWT header. + + Many of the exceptions listed above are not thrown directly from this method. See to examine the call graph. + + + + + Private method for token validation, responsible for: + (1) Obtaining a configuration from the . + (2) Revalidating using the Last Known Good Configuration (if present), and obtaining a refreshed configuration (if necessary) and revalidating using it. + + The JWS string, or the decrypted token if the token is a JWE. + If the token being validated is a JWE, this is the that represents the outer token. + If the token is a JWS, the value of this parameter is . + + The to be used for validation. + The that was validated. + A from the JWT. Does not include claims found in the JWT header. + + + + Validates the JSON payload of a . + + The token to validate. + Contains validation parameters for the . + A from the jwt. Does not include the header claims. + + + + Serializes a into a JWT in Compact Serialization Format. + + to serialize. + + The JWT will be serialized as a JWE or JWS. + will be used to create the JWT. If there is an inner token, the inner token's payload will be used. + If either or .SigningCredentials are set, the JWT will be signed. + If is set, a JWE will be created using the JWT above as the plaintext. + + is null. + 'token' is not a not . + both and are set. + both and .EncryptingCredentials are set. + if is set and is not set. + A JWE or JWS in 'Compact Serialization Format'. + + + + Obtains a and validates the signature. + + Bytes to validate. + Signature to compare against. + to use. + Crypto algorithm to use. + The being validated. + Priority will be given to over . + 'true' if signature is valid. + + + + Validates that the signature, if found or required, is valid. + + A JWS token. + that contains signing keys. + If is null or whitespace. + If is null. + If a signature is not found and is true. + + If the has a key identifier and none of the (s) provided result in a validated signature. + This can indicate that a key refresh is required. + + If after trying all the (s), none result in a validated signature AND the does not have a key identifier. + A that has the signature validated if token was signed. + If the is signed, the signature is validated even if is false. + If the signature is validated, then the will be set to the key that signed the 'token'.It is the responsibility of to set the + + + + Creates a from a . + + The to use as a source. + The value to set + Contains parameters for validating the token. + A containing the . + + + + Creates the 'value' for the actor claim: { actort, 'value' } + + as actor. + representing the actor. + If is not null: +   If 'type' is 'string', return as string. +   if 'type' is 'BootstrapContext' and 'BootstrapContext.SecurityToken' is 'JwtSecurityToken' +     if 'JwtSecurityToken.RawData' != null, return RawData. +     else return . +   if 'BootstrapContext.Token' != null, return 'Token'. + default: new ( ( actor.Claims ). + + 'actor' is null. + + + + Determines if the audiences found in a are valid. + + The audiences found in the . + The being validated. + required for validation. + See for additional details. + + + + Validates the lifetime of a . + + The value of the 'nbf' claim if it exists in the 'jwtToken'. + The value of the 'exp' claim if it exists in the 'jwtToken'. + The being validated. + required for validation. + for additional details. + + + + Determines if the issuer found in a is valid. + + The issuer to validate + The that is being validated. + required for validation. + The issuer to use when creating the (s) in the . + for additional details. + + + + Determines if a is already validated. + + The value of the 'exp' claim if it exists in the '. + The that is being validated. + required for validation. + + + + Returns a to use when validating the signature of a token. + + The representation of the token that is being validated. + The that is being validated. + A required for validation. + Returns a to use for signature validation. + If key fails to resolve, then null is returned + + + + Returns a to use when decryption a JWE. + + The the token that is being decrypted. + The that is being decrypted. + A required for validation. + Returns a to use for signature validation. + If key fails to resolve, then null is returned + + + + Decrypts a JWE and returns the clear text + + the JWE that contains the cypher text. + contains crypto material. + the decoded / cleartext contents of the JWE. + if is null. + if is null. + if 'jwtToken.Header.enc' is null or empty. + if 'jwtToken.Header.kid' is not null AND decryption fails. + if the JWE was not able to be decrypted. + + + + Validates the is an expected value. + + The that signed the . + The to validate. + The current . + If the is a then the X509Certificate2 will be validated using the CertificateValidator. + + + + Serializes to XML a token of the type handled by this instance. + + The XML writer. + A token of type . + + + + + + + Log messages and codes + + + + diff --git a/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml.meta b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml.meta new file mode 100644 index 0000000..033fec2 --- /dev/null +++ b/Assets/Packages/System.IdentityModel.Tokens.Jwt.7.0.3/lib/netstandard2.0/System.IdentityModel.Tokens.Jwt.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e99ff04ff91aa034eab4fc05d31c6539 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Reactive.5.0.0.meta b/Assets/Packages/System.Reactive.5.0.0.meta new file mode 100644 index 0000000..e4f31ac --- /dev/null +++ b/Assets/Packages/System.Reactive.5.0.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8b222eaf6c677e54baeb346a7aa9e075 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Reactive.5.0.0/.signature.p7s b/Assets/Packages/System.Reactive.5.0.0/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..490e31d1c3cf3b9d7160d72c9a4733c5157eb738 GIT binary patch literal 18538 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 + + + System.Reactive + 5.0.0 + .NET Foundation and Contributors + false + MIT + https://licenses.nuget.org/MIT + https://github.com/dotnet/reactive + https://raw.githubusercontent.com/dotnet/reactive/0f837d11385cfaf575861ccc5a5fbcafb22d888f/Rx.NET/Resources/Artwork/Logo.png + Reactive Extensions (Rx) for .NET + Copyright (c) .NET Foundation and Contributors. + Rx Reactive Extensions Observable LINQ Events + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/System.Reactive.5.0.0/System.Reactive.nuspec.meta b/Assets/Packages/System.Reactive.5.0.0/System.Reactive.nuspec.meta new file mode 100644 index 0000000..e77f6bf --- /dev/null +++ b/Assets/Packages/System.Reactive.5.0.0/System.Reactive.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: de1681ebdc556ac45a01ac0f5097e582 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Reactive.5.0.0/buildTransitive.meta b/Assets/Packages/System.Reactive.5.0.0/buildTransitive.meta new file mode 100644 index 0000000..0f24478 --- /dev/null +++ b/Assets/Packages/System.Reactive.5.0.0/buildTransitive.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 97b6850cadec7704e94cac104a51ed28 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Reactive.5.0.0/buildTransitive/net5.0.meta b/Assets/Packages/System.Reactive.5.0.0/buildTransitive/net5.0.meta new file mode 100644 index 0000000..fe865f0 --- /dev/null +++ b/Assets/Packages/System.Reactive.5.0.0/buildTransitive/net5.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c5fcf209e1756d64c8e487fc94eff924 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Reactive.5.0.0/buildTransitive/net5.0/_._ b/Assets/Packages/System.Reactive.5.0.0/buildTransitive/net5.0/_._ new file mode 100644 index 0000000..e69de29 diff --git a/Assets/Packages/System.Reactive.5.0.0/buildTransitive/net5.0/_._.meta b/Assets/Packages/System.Reactive.5.0.0/buildTransitive/net5.0/_._.meta new file mode 100644 index 0000000..f93f8ba --- /dev/null +++ b/Assets/Packages/System.Reactive.5.0.0/buildTransitive/net5.0/_._.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e654eb966df14a349b98b935b18dee6e +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Reactive.5.0.0/buildTransitive/netcoreapp3.1.meta b/Assets/Packages/System.Reactive.5.0.0/buildTransitive/netcoreapp3.1.meta new file mode 100644 index 0000000..1cd471c --- /dev/null +++ b/Assets/Packages/System.Reactive.5.0.0/buildTransitive/netcoreapp3.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d1edaadfff658f841b90d5fb0cf562f2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Reactive.5.0.0/buildTransitive/netcoreapp3.1/System.Reactive.targets b/Assets/Packages/System.Reactive.5.0.0/buildTransitive/netcoreapp3.1/System.Reactive.targets new file mode 100644 index 0000000..2452a8e --- /dev/null +++ b/Assets/Packages/System.Reactive.5.0.0/buildTransitive/netcoreapp3.1/System.Reactive.targets @@ -0,0 +1,12 @@ + + + true + false + + + + + + + + diff --git a/Assets/Packages/System.Reactive.5.0.0/buildTransitive/netcoreapp3.1/System.Reactive.targets.meta b/Assets/Packages/System.Reactive.5.0.0/buildTransitive/netcoreapp3.1/System.Reactive.targets.meta new file mode 100644 index 0000000..82e015d --- /dev/null +++ b/Assets/Packages/System.Reactive.5.0.0/buildTransitive/netcoreapp3.1/System.Reactive.targets.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 065c28e5096b1b9418e342ccfe7ac452 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Reactive.5.0.0/lib.meta b/Assets/Packages/System.Reactive.5.0.0/lib.meta new file mode 100644 index 0000000..253c8b0 --- /dev/null +++ b/Assets/Packages/System.Reactive.5.0.0/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1e2f20f4bb14c884f809dd2c2f0b2263 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0.meta b/Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0.meta new file mode 100644 index 0000000..d56c47a --- /dev/null +++ b/Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e10326671f211524989679a3015fd3af +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0/System.Reactive.dll b/Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0/System.Reactive.dll new file mode 100644 index 0000000000000000000000000000000000000000..ec69a7f9bc5232f319d87e99e3f62d6409d786ef GIT binary patch literal 1456592 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

lx)7g?;dm{yRf0L*i`o@p zc%Enr^KtlnoK|HS9bfT0=+;^aF&^Km5U;h?m>BDOE9BcwYbF@pX9nCsYejrAf%EIA zwe$VcAbv+}6x&5UuW73Vb3R?QFNra}4e`2ZrvztaJOtcBJI{I%zo&ME81rik@q21z zmSg_1zUf*$!5qJz){PkBKMwH*Xnh4|W;_o(NE=Ly@m3_k@3XWqJ|{!`H??cbO6k>C zp+61Ls;>yP*AVR?V)V!MAEG@@jOD!w@rP+o3C_&u37nxl@9VKYkI-K6c@Wq~YJ-XK zd>8>dO4~1(&xg@k#g(!@jsg26dD6 z`1pKCj(&qd6x@+KmOZ&*z_Xhhq?U1h@4ZJ}+?(6Y=V;ePPgUo*_*x%RU z1!rbVg(u`})$$W#{x5@mo96iXm7w3LRrmF~fp=*&ef@YC&v$Fj`1*rj->bFs^)K{} zQ9jaAeLcRP?PKi?Uwa&pj2Yr7Rp9pr+EL;y z@chO2h44I3E%5`XuMGNYS{G)}w*dWb+O6Bsj{3Zy&lYJwjP2bO^w}c&m_dIC^l_1q zJEXn<=o2C*h*7@|^a+vFom3v^pQ{Sj^N}VWN_|n#=Z`ESMt#l?;rEY`CcC8m66gy? zn(mhRlAtdh*+Pu^#-J}A>9R-a$5vC6l94HUrM@)ilOu`y$PW4ipihn*WQKemtF9z1FokdC-zHy1<+THv_2r?zXJNok*1$Y{VC8_ zjhy;S>LZ}973qFZ>OTQ}tw`@oso#AcT+c-!ho#;IeWS=OV$A2h-SGT{$cZCTzxjT6 z{z7Eg7gApd^erMyza%^8mxI1VWZ+S$|KI^wPaWxgOzNwHzEdP}T zBn8$JNBW+W`V`RjkEDDf^$S7YKQiW&)Wt7@LzLWZgK|dxk=Cst~=k=J#RAPKy zDDv3I2h7SBFXHpS#zhVg%j?nckyFHJN*Q{8?D)u!g1@8Z?T?RSJA?7%e8%`l5y5=^ zj*r|cnCAy3MCuTyDF^9!2@@kv3x0Ak&d*MYye)XtYk{(;_8^@%Z8RG%Zq|7(c%rgZ7yoF$8C3JPSNCQp4Bd_3x}mBVYd# z*ylu=`}(fHb0ZymeSOGhUStrl%x6JltYH2;eK)e)*Y^PZyOHh8a6Vvt;n!5>Fn@X; z0o+e5iWDct{PF#qOClABG5@|${_@Dff-^HF0I!TZ;p_49ZdK$3U;i%H*F@5M{Wjor zkvE93JZzu!k+Hr%zHf6we0{D(@P4Yu*S@|i z@Q%p$z8>@28TsAUR{{I(NY3+Ee|#Ty9pF8Y(!{d z{gG#wAzq^$> zXZdsFDzR+etC6Hjn2$W4uSJ>?OZ~M-Yhma6-QOZ3L;Bw%D||iH_xH#KX6O(2yc9)0 z>)ZQ7`7yfkBbUe5GqHL-VtM@#r_UkA^6`AhuCEmK;r-@A`{vL$2+qt{2OO{O_VqZP zBYGkyfluO|~@J{Z4%Udh)h zi($R5Udz|#2QH#F^7VKN$G2AiyP+#rv3x9V-%R*@s_qe^e-*G-()$X2a&#@=%K9ndG^Il7 z15IO;D!O+K{nL~gjgYJAy@)a1RrvnDnm(Tx`)fV$e?VU@I5Xn~;0N{hef@1~Vg60O z;_KUiy|y0nE5^t1KOOiny)ZGxKM9`~b@fMteR#iNU~j0`_x00(8|$rn{RL>hCi*_& zZ4eL7r>FGz-!Q%$U!K-43FhmSrn>Sw+qwTdqqinbQ&Q>re_ReTJ}efBlzUBOB|vyyx}Wg1NjG^tf2G%ko~(Hxgrc3!%K` zx)+D`{!pJCz%BLh%wWF={GvYJw_|^LNk8w~ar}Ep|Cw0U|7HEEZ!hx+Ja0me%g*_6 zzOD6wf;qoe^<-kqrzz-P)dw;|KAnNv>Zg4>ws$-I7h>!Wi{SXQ*R$oo_;`Fb0e93B zi7_6IU#WUoVISUa7uY-NmaqRDxQl+jugCaZ^~ZhvDX_n;Kk4g#2JWuE=<6|l550%4 zk6V&W>7~Ev>k9*?>0^C8wqGB8EwOB`K6<&F+&+B#()BTdxqbTTaq(>LxZ>_Ia2==5 zA;$V)zWwx-#MmB5P+ot1gW$}J2=G9Cx39;12kFOsePyt}ssG^X9|azw|L*IjLi@j^ z$0u<4eEf#$MFexc!}RikIp5)WRbm_;cY^<@l)ftDKU$B=h2=^8 zXg!fww$~WFi(oE)tez&A%O9tY^8IPPPM_rawfKyO$i82?lKC1Q+^=g+5ls<89<^O=4iq(7*C>+A9SIjCRq^?3ed z>Q596#y_ODB*yr7{v6WV2|J%ZhxI)n{Sp0`uYVoRpCfu=F^faE{ z^W{tZ8ZnlK*PmbNg>DV{AJxkW=KlDVUQIB^JEqqY%%5k+^zp>)pCg#d|3)uVBG_K1^e%$A{8M^jNwi};ynp#t zFG(!peWyR>+wpqmwBCeR&Uc^DUlV#R?|Z$MV6N{ueSpyOeD^thI5C#D1di8veLgeP z7w;c0>Su+X=esZIakpW9X-fQ)hc3eXwBDXr`d`-HU#KzR!iaojVEu>w zi?4rq0{nhKFHs8P;rO;5%KueQ7Mz)}7x;I*A~DAA33|n7>gx}IJrVscFkbcb zFIRx)ksIm0{xaATjN!gM=Tf*oH75Id74A3k7|VTq0kG#Y-uLx)0w)?D`T8e8pWpc2 z*Q;PJWMsRY>yw#L9k_^*NR0W{1btEC9$_Ee?-8&UH}3QGPXm`U>JsDp<*Ea4|7Ua% zc5eS9Vn-*jcyO6_`d&oL5{xqL3q zH5v%!@;qY-F_!l^#P^IX!p`kk$tYBY$_G2HFR5%K6U+EjjlsUX0<7<=W=tc-^Q$HF zuNuZ8!I>Fdf$ulg`}$g-f56!9>-&TKLF1UO9}8U5IPdG-_u%^lBX3#E2jkBI`=dq? z!I>Frfa@5^#8{sepnuG`&)4q+`{TwVzWz(#`bHC9|JZ7HUzX9y*MAT8#zs$HAG-|R zhh+@*^*uoUl<|(QF97yuj3vJQF5u^kjlMn==6{@OH6ef^`rEsRUPek15x z8u{;%^?eHLFB!!JXJ)hoe#Iz9jP=F&<<>?uU*8k#ZH$_}e({hPrJd2x*N=quX>YU% z={p&(`SyZff6W-;+lNEEuEuD=nHlFHUN>Wguip*&?#8;1zPGW>x95cR>SG-7?K2== zU*l`RnHejA`x_U1{oSA+U?h~2_1^;aK}G?=nHiq}ziA{9WBuQU{xsNdeEkWqzhzYS z^*;d*GwS$y1KMl2@q(|9TMqBHGFtokqQIk!*L{7h0q~w7<85D`4EC|cOkcnJtr%sz z@vg6b5%d#`4}HA_`pHJ7uTKG8` zHex&&F1UYdq`gG5$g$)z?o4`(mSy zuU`hd)EMULaXrH_V-~Y=Z-?b@{8kuieE$ugUuo>{{r3UCXME=S#@9TMi*Zn zzXGoBjsCv=R^Shfp}ro+<6XuWW*CnPe+KIljLkyNpO<@#lf-g-+-t;E!2IQUfPF?W z!94zcWKG41Ak#u z^7VMX^ri6tF_w?_OGl0Rg1Nq5887;JykGjtXy@zke(9Kz7SbO#M*DiaUpj6~_Vswb zbi!B~(tmAy;Op^z>1$)3ug7|wG~(~!u8_Rt?-Y=at*86(AUpixa5z?PEuK0SqUpi~VsGKj~FMV$$ z3+DXK8C8iff4pBhXVmibc)xVs7#7n1V7%k&@qXzCW0|kV`GyO|wUGXzQCO4x0sG@c z<8ETv|1KFdi1B!rf$`->W0hdO-neXB6U_PkWHgA#crQYK{>f-ZEc@%v#xlX||BG=& zF#BIMJYD+Z`F_=Sj9H8~zZx$RV}ET5{qr}YliIBQ1K@a+HqQw?k7sw71x?If9-lkSa)SBzB%4(Q^YJNTK29vhuQFy+W{5un z;+HiS6U+W{m${u-UcZ(z_YuqT%9&pa=JM_~e-X^(l{fQQvVAu|{PJcgVmW_T(JU*N z{VSRg!F+vtkJ-id$MI1$-y+826T1@LS7S~P4ELwNhB?>Qwh z^zHuwu4#55mgUtlm-_l5u>Rs<^B^&{Z)IqoI_6h`Gc#%f*EP@idJFXR%tDngAJjJn zdjso;H&!2iv2mSz9o- z$1`Rsahh`93Y4qbY_I3ddws_Dg}h+a zCB}RgLw+sH=ZIxKFPdF^`+l&uG6#q3FPY;6bANc*oG+O3eZ@RTEa$6UF~1_l@~%L< zSIk0HxxU>0Uo~3^=6G$)E`m8;TXQn8jMvtjLyYmtWWx7T=31fWctNO(mhF*hjug!CI+-&BbG**xhr}{oXLCO>#>4Tgvw4&m z`oqG>a6e;KsgC8#^P{WTfLP8iy>2GgK)dwsW=5F7{|)f(ZjK~QQ!b1s2P=$vn(_Aq z^}WqP%%GnH^+_|k6U*}Ym?L~WjyLJ%e4)R$LlGFi`zPNG5n{}L3gkQ5 zyjO5$#&X~>W=&s@>yyWtt$qDQuun8Q`T7IElg*yK9zPGKnB#r@QLs-pr~7(qM2s@i zobT&#eex{xBVYd`=;xY;e0{D}aKB`p^7Xhrd4c(xuP+Stg=WqatS^3FQV_mjS!@<2 z#`@y=*(GKLVISVFBIuWyrmt@U`W0psUyti=SDMY4As+g_XHF7&9?#a8%YA(j_&#Q> z`LVDM@Am-2-(VgUoS88h;%_o9`TFF=@H}NR|AU+_te*n?R`YhjaJ>ZlfoT$B{&>D` zH=8g+KDfSjhj~WmIiH>8;D<1tT<`m#*`OvfpTE1!F@kx$?;f*IEwp2NT<^QrY|RYu zalP+HW|@aMKVI*<-)v5ddR*_j-`vFvdR*`Osk!zMsmJxchs;8c%J{h6_mDY^8T7c` z_lUWyw$$T#->=M)b)+8G`+jB4X9hj4_dRaL)s=c&@B6LUofz}M^}gSlN%hDd^tj&l zv^oEAsmJxc7fkC386VgCUNBEFgC5uWUNYx2ka}G2d(EuTQ0j5L?=>^N5i#g-z3*@4 zwZ>A9>wR-tGnz;}uJ_Gp^?p+73)X=3Qr4WOr5@M&7POi*m3mz7ThOZajMSe3ePL_S zb5f7%eUq#%&7>aJ`zBf4|0VUf-uDhGvANXadSBH#MU3r(>wQ&AX({!%-Zx_HY9;l! z-nXi?>?N{;9@qO;wT`|l^|;=*x^?tbsmJxcb*zJJq#oD%*0GAUlX_h5Ti2@BQR;EM z@3U5uRH?`HzRz0oJ4rpR_ibhs>nioQ-nX3mqgC0rzX6>@55x_deD(-;T$>pS6!TU8z!Z9O(O5ReH+y(Lg`IdV)Fr$Xgk3JO)`$2|mzy2?Th< zYVPaDf&C3@JF&dq8e%2(3igK~mQ5_%XNYwlF}BZa@E>CJB9{I`t-&Gxq1HxUkL@?q zD$*O{vLFF}zdy|CB6xHGBm~x`(S<2m6vZp{aC92 zu`F+#Rf<@)-#DwR(5rDPp}ym+h;MIn41S+r?IOnd;`ghQtk&tl{xI3-+M#OccIaqA%dWNUxOKE*mB?2C&uIIbvDthl}yf17foT^~4J)2!A$w*a1DO(0HF zj;unSZN>Hr9>2L(Zep3wT&w7H_S=cmmCK3SAfLHbSz^2&+eMthdiXvM@6YC2kPQ57 z$(|<_>%YJnLw0=s_NSnK*LqJdk7o<5ZR`*64nTbtT3-@xQP_W}b&*)+x6Jz8*JJ-! zX65Y9$FE?{&msOYtAyajdGL6yuk{Pk9C=J-)>7J>0`qt$@@6DF>@QXctV%rV>_Hd^g`#^b-)>g{tPjGtSr zVZ`$Odb>4O*!lSEuvQXdK1WZ%^{I7)I8AA^0@rJNXqkgV`xEc7Y7(bG`=EWdRgW0` z4}A;Iv$Rr$z0rzaepZxy)~=BM$JSBbAMKx5-}(Lrzk~U9E6*EP9+qDg)(3oMH78D2 z3R3x*Ru^GEpA+qetiHrp{_4|keQF(HRvuf9*Bf71PrQlo`#gIA$qB*gmrNoxmrofr5XTi~5t+V!^k~V?IPo?E(3mw3N5d zzrV=mJF6BkmTyA5@2pd7hy3yUI%CBTMg7TyTc2GA$NQ{Rh8W{v{Ik|Q#OcbRHYq%UGu3+ap44+;H*Y+X;n^UCd~Li%EM%aFd9 z-A3s9$6@?pcAt>Gxcyd0U)&xo^jC9W{Nnc9kiMk7BBU>AuNV5S<1v0o`{R(ll>J3W zU&=ly^eb~={8IKWA$^jaBLmw@woj6sk2qafl5Y}>ze#pY!Fz9O(j`W@(|#ZwmV&??;-T%3-yQbGTH7QvX`~r687Jd@cqVR?PMNl5S6hlPGfPK@u_$3yx`_PLP0lKqp=@63(YCzb5Dk=WkpN-YPuvYnq; z_SY(QNn!tno;O&zeLyw)17i8St{V1X z-@fpBcz%ujL&*Msoqd$wKfpi5E$gC>T6P^@{}I?9 zv7h$!$ABNTU-I=>er>y#uRja+$Lt}#{x{%y_IO_(cMhIEW3MHa^WF7rWi;k1*9$bT zQv~yTcSE}`v25>#_F&?4#iZ-ChW5Ja>|1?1wr4{-Gh}aUe~I4cVWw%n3YS@Vwp5*JnQu z-aweTd!Nx8Ion&ttMTh3rG^BfkArun)CMPr-Q7f4F@w zG1liC*oWJ7g`LOS5q49-{QboUd!u0fzH_9#$M?tnG0Ogw7~W@7?7mvazlQ9i?f9vD zydEot`qB0S|bz|&R#IpUz+8c#^Y6`|1YY&`( z`lx*vak`R^o|it>J{7W$v(F2Ay&_oNIJ?zMSw6-aZ`YfJERX+qyD71ZKi+OmoUU|8 zI0aAe9dAzy=_lClhV&Ec6+%BC_ph~MlnM5F!E;N_ssqo5vbXvAIrU~Vtm_|CN7@%8xpxtaFbkbbruH;2n( z{T#a>F~(m6&jXud*Jc*;Gjr{s#KVNcV#H}m?%6n>waA_!_*UY@cEx$9$N1+U z{t~+tvxvXU-bF0qFSC>82jefZJz|WXuM9jt*zPU(R^k=*`@|SueIiC#X`g2n@!zux zEWmg&{(H7cjK4oP4Ep!%8p6)UbB#StFrR;G?fD`9b@pez|26PmXP*!GZ?v1d%jL2E zCcBkjKAxNH5yY4;`fs+^5~nF^S7HC(Y9A4L&S$GVcwsQ!HhYR-j`xB6B{9{%evI;g zU1SmJasB>-z&q^v#PWFWv|AI)@;#!JN-tyWCPLAL@tS-|n?*F+)DhAfJ8qL}HoGNA@yedA;+o9lwm@bNxTI>j~!e z{KTFhn9JL5pCZQkcZ2x*?R?9rd~y6gwW|=z@;O^DU^TMUN7wYd-c!l3&gVgFYG+4&_7Liz7w|hm-b-6 z>qp`DZC~1n?*+?0YBv$g<$q<*5X|Ktv(FP_`Pkma>|0i&KOX<1kk4`ZUSe7P3A-M# zJf2_MV+3>jllBS09RC|TvWDV8{KgGny{i2Xvr>9=2jEk7UFP@>J;y$`(zLQwyd)}@n?0h};gKY`>n>|(} z!TW9Os>06sUa%h&cFy;LU5^;^Mg2uP&-!4#m+U5jIo}`c?ZlYxa>(yT`wL=ue15Vo z2>}U1&JAbae!*OR0Vib}+OfRvp*;#X2R}f@_U{kvS;#p- zyhXV)^Ccj9+p ze6+s`_KJ>8EU!QBaqc6=co_d4=V9V>$0RdqjFBre3a|f}kZ%s!fmi4Xa zc*N<-w|TEZyqeAt!OL%31O2g zoRYr%JFwSrBEB8(zv?z|#Z z{mAHl82lSM&6vUe9PpFQVq!V|J?(5KPE&qsg7bk*om~f{f3as^J+qVNQ)1!Y%z1`b z`akca5=;LVoGzb9|4s0Go)*q1V(gFI;QVdnOcc!H`Ag0+!Q4MzcA6ZN{#~AnQC@ah z5vM61cKj9U_lmQhSoZHW&fr6+m*Y=cC;2cl$7|=L5@UN{ymn4sVvJW3uBh8Pr-Yub z2Rb?_p9kZmI!6R^yiU#uVvKhR;&pN^5zBa;oxWeNKc636oTQ_{cwL>=f;ryn&KY7E z?{()Iv5eQv8T^%uho7H4oN~v5@p?L`f;nC<=Mpi-!}GP5^Q*9PKE0j1CxZTIPO@P3 z@8k3)Mt?ki`#8gdo&Ebdr$YYy9OY|{$Nv4Dro^)R{!R;FXa50C8^L`12ReO2{)3#w zzCV^f$k`I|f72;+GMN8hr=nmke~9xWF_w?N-x}gH7j`cHEoVYVKh#;|>oY(<)Y%x) z4|n3f3Dz&eDM^g+@p*a~PCa4g-#d+T)(YnOjdGMzLI2TCQ(}4kjCN9q)0CqxmT3m_ zJI+*M*?wc3jl!Sfk9E!q=J?|r>)T-b@y;+}8GpPpn^?x1;OrCnbt@;r^H?T26~9CO zG$o-w@+3z&&G9(?WG6*1x9=2ZB(aP?#hFJe$M31mN@6Sz$H%G82I6#OeeN_k|ED_J z1=qR-dAjpa$bY8udB}gJ^R>_)PZ$jPna=mV{Q-Es!)!-6gZbk1Czkh)vz=Jx_m0!_ zEZIdqbDicsc7F8z@p%+Wo#b;EKTRpz8^`ZuPF-Sbui0QK-By!B2OV)=Qo!C6g=_amQyeWSC3SUyi-lk=%yKK`4W6M}hs-0b|| z`~L*~?>ov5Sibb%;^Y;~{#%?9g4utoQ;t~nmu-$kEc?qgrwVbpaw2E>7h;rcPKs}D z2>gN5fLPwYZFi0c=JIwpT`-?7`<;Wt^7!p{&Jkli$<5(;sZO~c*`LR!&zvoS zxjqM-_{(hPc$rRfVi_;f=|+t4o`-mcoC!kD@s2pHev&i@;y*i~lE|CG~; z81pq+!2E$4i(?VX<8#efB$(UtSLc#o_W#YfMlAFD z%_)=(cfYW6`(<}W z#>xD1w~SG8xbul+{_$?_?9y(6J;9wvEc;h(cO9|JKaaa#*g1Y)cW@5$$Np6Vo~Mw{ zZJm?z~ubS>Dr7UZPupSe947tx7D*E9f>5b}p}wo0JeNudu7+3YJ&I zO%crH6?I1v)A5G#in?2war_0o)%}H7mRH=(pIheF3+yG_(!|4+HIolP{cdwBvK{>A zf&DgjFtPM6l!|daJy9DWtFH7QRL1i{;ZX=r6~U2i@+1xjqlMSBNn`Y~P36 z_(H7b<6p~lh-H6$*saYB?Q21KkGNBbHok|0mpy#PWLV3AbWV)XVFw`fev;jNcyOH*lvi zLw#ak{ZS)#1+grziMx+j=KrJ{SB%T&@}6?%5XUo?gnBk ze*~2OjC+V!#(&O@FCL8F%xyr7`emSR=C)-P`9AOV6?#5i&D~WY{}ygi3C@ShZ{fBj z#&{n=yq0cHVtKvzqB~45_wN_oWrDeXw{kxtmi_xB_c$@e!~Xq}dzu*UFRnrSm)wiK z9sBpoZl01{KhC$c+lm2@6K*tVp(2icNnp(UuSm=F+3EO z%;oiSKOn~Pra}CE?&rQgw(kJ<>yZCIH|CCD`wnu86Qe)=-hPlI`JGnjK`$FJxZc$>a&o{v1-EzXt`bn-6(oc3D^!1lOKgDgx zjOX(j_`Qug*yr59Gu%SSSe_hDXSr1bS6Ytux3k>1GHlP$50B?;H$`yU5rx5jwmX4X z_UCupImDPR>fdn}5##64Bd^2&zbCj)UgUZ1=8*pacTdQFf%~b@U&wwC^b6eYd^?`+ z3*BqPvVSdhYm~)&W%*0oTEywf{Y9RJ^?pm-SA08;2TR@V#L|DcyU(|eZ4JN2c9ZYI zc=CK(4ez;wg`LNn_gt?W>$!igcApo_{dBch0P)wjN0{OG8~|SD zHo2SIo7W$#cLxjR^#JSLF6G(I>jBog`-x@#8{OI!g5_^=_X+0mH@o#Jq8-aW59Muk z+c87=zXQMTo*|a~VT+q`50|%N6&}wmZZl$8-WGR`V6N|0_ljUHZ=0K<%JPc83itQ! z6k^$)+ubX~`2Byw5wJeOZJ-6q+v&Cwe5Nnjce*EtW%(bvT_UKL*B`sw?Si@d-EJXW zmY)LU?{=FJ%kuZS2Z_@ZuHQaaF}VCxS`V<#?JaoGDqIh+&y6>^JU-qZx%C8d{Xcf6 z27c*-{yx(!z=?eE7;e!*(bS^~c<6#CSiXkAmMLxpDVO|I1LH6K(@y>3`B4 zOf1{y8@F90)XVYbl-r#c+oM_=m~U`1h-H1hb7u+W`kZ!`3Fh`Z<9I;6kiriS!a+_aGXXLm?Q|Fb(v==bCu1oi#deb=`y0sh7Po>tW9T6To>5MGgL!F*%AJBVfcSg#^6Ue7(6 z3iBymFTp7#@cn<;y*EPsIlR#!{~X>Vp|6{3J^1JFwukgNz5OA5PVb1Xe+@>koL-LV z!TjRA0>m=Ec&|8dx>7fn)j39q_fkUo1g~C5pWrnS`VRR&1bu?n+_yj2HAczpEh3i3 zH=noBx4#7Td|tj9n2)sQ_ev0BKJ&ny->X0@$LE6HgT(UuFXS~9b{>BVd))-{`CP;s zC793WqTWK{H09^#u)i1e)(JjMT+I7Wa3=As-Y3MezZCbrB$n+}+&e`q&$r@Usr!QM zTf!?(EcGQkix~B|e!GPCT1bDJmmbpJ<_#A5Y`HMs+q@+qeJO8!NMFj^F7(F>VEj^E z-up41bS2mA?cw{=B(E&7tWRmrAeQ-+_9_WImsi@mU+`iYPwwy@3HjgYH46FP={+m- zJpSD2y&`x|-lea@`Vp_Muc!GUZv?UYd@1Wq5zNQ0toN?qbt~_J>&v^mMIrxk-Ueak z-}~O}?Gnt#`)+TKV2*dUcSP{ImH7Ex-usRi>yPB`Ci`(VAV>NOSob0Or2*Ftc$IAp_XBlvI* zWXpSvSjKm}bYdCb@!k~rZnxao6Xv75k%H$ZB75G%kbfobosfSeZ?Vv?$Z;pUVX2b0 zGo-KVeHzkN_P!AM^||r=u9dx$A$=9^LP%f5`$gzm6#fhW8M$Y>yh=6U4GTYIsi(rz_oV!T2@2=LJ7r82LW$WnYi) zgT3GDPAtD)dcZp&n9EP`E(qrGAM}1FmgPU_<$h4s2d@tv^a>KgdiZ=Vr^Nu5B$oP` zUb&FIrWX`C6aXQSec>{@M``7la2EL zdp_>{B$(qp;bpHGJiqFDcM9h7uf7){mhDyFt3oV~Z+$O?7?1BgePfjRULC<_Z|efw z&}$U(Z|prE@^9?DEcEvl#yi@^UQfZl$09%JWrX~n_9lh=pY~??{;w71&#M}EfJ z8ua!+;p2x%Ysu^Lm<=UgMDe zi(ZS6e=D!6?|%sVTX{o$e=PrHZ+gi86>o9KzqPm3_pdrIMrrLG_Wf}^PaE%C$iJ=k zYskNym;YgTKH&Re+IdOD@_N0!*IF>wzk|0*FxS7M*X0rEkMED^=nW*6{;A%6!R+73 zOL~;sll?n;Q;22%>FmuXmi?!*w~RPlxtbe)|J2#r9MX63_Js6Zyn{l2A-gdsM(N@W ztc~Tt^G-^<4eN=zde?|$d9Qo%b!7fH9=z@)665^GVDNw4yH)U-yvW_XJBX!!Pfrc` z_w*d0Kan#N^gX@mA$@P}(U88kS6}GY=PvU`jMCd{D!A4y$bGyPA^*N!`;dQMudC1> zPv`*pzFr^Seg(L{H-=b_7X!Uok8%6+@fhTd6wJrt4X;pL*&fy4`{Fk|i&**(@sxT& z|F^u_g4utlw~JV|&rt6mu{@qby`#kGO6P**2E%$D?@~xV+*2Nx<>T=f?!^=1d~V($ zFn{OW;oBDjkMJyFncqmSw_vW{C~ucw&Tq6=`w1BzpNBu%Yf3Er-}dGRX8$qXCBf`J z)=RCA{<3~!z23yKeq+6X#CX5i7QQbW>x~ZS$9vO4`tjaeq3>J}_2a!&z8#-WKhfJx zEboUWdCMAL`EvdKWKU_x%=u0677=4U=s(5VDC~UwJ=L4vDCj@UyCRtVr+af6qaFS6 zd-v(yN@Dr^k{RAw!Tfx*8Q$m22^mWlzyX`#eJ$+#yvZ5f8DZz=t7pe>T1zr!q3zFUdUg-4~d^`qu zu{V@h##`!*CzkP+deep8&SngU`A%;|NWaY69MUiIb_)Ia-1vOmW!}dj{c`V%kbb#$ zQs^&a$NBW--uHq}MRJh(>=@k^bJ~z&Pzvq<@ys;$O zS9{5V_ZC3=TCbwu%cbrG`#P@%v22eGUTtF89vi#{Lcb!%-i#P!gZFAkztQU&(r@(A zgnoT)d|v2AZ%|0T$r}~YZ}KJzy`60m=r?(bd^B@`QkhghxiBXTw7yZC1Ni46=wtE8w zbNM^G(So`Bo!)fcADX=k zF7Fhv9DjCu%bv!3<@mG5Q<^e!`Fp)~g8BMzuh)YZ>x231^(HYxKF5Lgd9#@zp9W*$ zeP`Z6!JN-W-b!Mb&qv-yV%Z)adxM_|=JSbnP%!7S->da3+c}^8UPEHc2gkSlUUOnO zz8&yd3Fh(bfH#Oaq0v(Oefa@zxUlp1cEB4W>^#05@MaRrA2$@$FM@EpfWS z_wS#2$3ptgyzfK$&%Db*|6BG6qhY?-OMVXPBjaa!5n>rX)ANXN{-OlTCuDl?%zUNo zOY%QFk!xjmJ61`VeEpugpSyk!YT}gO{(E7zGgiqrII0Y8V<}-P@8LLEl^8iL6fLMn zYxa;eYw5U$|KKXL17^kl^De^e)5Gz9j&X_t&%`8aaGR}Of3(I8#mt|14fFZ%O)U3~ zx#)Xi>mTixUMW4%m;WcV$L$wrPwSDmy^kWJHJieFc$@eC^df4oUNBBTduF2}6)TPc z?g{Rf+kA|6P$}KusLB1<^3peG9XARif7J_>ayuJs!_%w8{tBbf+PN?OuebvB=`F9{ z#y$q`wddHaVpa+`bUjUr@K2IB{}W2Ry>Y_V)gr_Q*|RzAMm zlCRRa5Zqs;4=Uf8h+aG3KU@{Qi`(bne>ei}j}iMh8pq*w#yzqJ@);M*trf-GND+eD zomya7z23vfoaf%Lxc#rSxSzMz^uz5(-@qfdX9V_4E|K@6?~V4OGFB+>g70=;A=57F&b4 zaWp;(e{_~LnkDlLpAn7V8Dj9373xbECu|M250}V&0Q&~_f4Bpu-W&Z7=PZqN!9H_8 z_1Jc#jP{}!g~zer*&W>G@r~=t|8G3%hR0!SXL)3!Edw)K<8eR7={*Fu|L8y0l&!&S z_Qlap#<}^JpEcWHU839Blv;HD;vP9p^7b_v;dz_u#oN7BMRN#Rf1Zc?x&4DZirayE z6mJJL*KfmH^#O}*R(%fb>M$ly93nI@W0%{ zR^A`omNnwO#N`Ha<1sUsPjEY^#BKOQpmq*!bGFg{G9TO{x3k9NtFOHiuw}Rh;#n!L zyP|zEmagdJ6?Jg`X84?nBWreXrI*$EIGm^1Nt5Hh&>Vwnn;fLf`KOdGL*$&KkN*q$ z+rTTHyb}JhSMhXs%K`c3`fvKWPy%42jUcjtnyH_y#KLizroSW zOEL5Phhq+cy62VrZ1;+>Z8FyoAoPy)SpV4GjaD4dl z${Y%g4}VpkQ^E1!zvmUN;P~+G_$DYgKK%O;aw#}I{HNmNR&ady&qm9m;P~)&#LTPU z`0)2d&Zpq`@OQ_*MZxjmf2Nc~1;+<@UQeEj*9>@d5v#POD>vSQR~>Tx4X^*RiE$vS z{vT_w_5T0b8uA`6IJWbB-~T&%_%n-ZJ--#6Bfk%f{^uDayvB}I<}Abg(LM4mn0@(k zb{)(z#VR9VCPB_0M)$-i^XXHSl|jutG&hL*rPuX)f^+77ep{ZuTq4)>e`cHSgSaf* zjukV9H?AYk0m{2z_Tm|p>-9lRa66lF;}+xnL1l0|tJjV8@T_ArlRw}7L1ors5p0vJ zR`&h-_n!^)N!$)*C3EpKqiEOr#wypxhq-$A9x$6yjlLC%Zp(B3fB&98 zYJuSX|E;YNqf8%){SE)inX!vc;-2XL;C{L7kQe@!d%hvB=>On;xgCuOPg4!(aeq)F zw^4JW?W{RpzegUgo9z#3xRl_Y;PyY(|H;;XmGxPA*MGf7W_Z0axIefZKBnmPk2Tl= z!R>#)t%9Ff^3#pK>EJ8a;5N_O^ZxPlnHc>%mA=tE@LpZGW)AL;4eSZ-=WV&?$a_&Q z+>TYc!)gj?ZA0IVaSpg0s|5AYJ#hgq>C4}bux~I=+?L;cu$8|Vi7I22;2zu#>p24M zm*4NOFMhXjBPH(7s+4(hG}OpF94DAVR1+7n+H~)Wn4Qk$cD*B&G zbYW&JoANb`qOr<0I6CtF{l@!cuV@IXBeE&{eP482_GG><#{V)~-u{Z_7NXmKtmhef z{4XOMg8Z{7T#K$yi)^AUEk@&ZZ}<<-RrR-JzqE$2;Il3)OavkH*YsS zr+D>6bUT*T2g-BjkE}SFWm9lHOssMrjZVQm-1DP*WHdYrD6__!LRnE}7 zS#%FP*Dqk@n7jwG4X?K1{INt>9X%)dKX`x5t9ST6>u1x-I^KSGHs%oA(*|lMv*qe}eD>Ap%)Rlp>`}pJ(QRqvXxK`8T*C3W^`c%utE?l>)^Z$f z6W+tyr8-AjV|}3Anozq1_w=TEMazO!b97v|cF}E_!;O{F8q9~sJte=%~n5s~ns?4z?SwtKtP)QdmZEy`I1pW_cq1#e zt<0Rqc5dz9c5sXe?hkHvf)eE@#1XRYiJrybbM}w+2jd5~vqsLkCwLY_uYSYV=Rr-@ z^XQMf{%C(N!#}hA6^!uV7W?n*d4|@CaGT?HaKz50@SX{9RVI&ebdS9L3Hk=xgq64_ ztQ(s|H%4B*ZE`VGxTQG9O4e~W||n~W>y)YEv>G> z|MF^|+lN=BMz_OlwVkf{+4?%Iii~cDl{dHU2^B^f@U;*=urU-qJ# zd%YIO2e-rd{Lyjbx_=KxE%@0K+zz+x&EudoR;=9S$k9E2wLky4I98x<<967q$_m^Q z)I|5hi9ESR(f`>L?pL@cyv?8Zyg#^&dfD1hFWwVu$>4UlRq?EsN0~=};MGNR^ayKk zgbBB5bo2--gX2lMiS_DS6?5iKtKgnq_hZaI+W*Ew_{n&4Yr#kGllRYP3e~~&tAAeE zwl1z*{j2(W9>+DS|2?nIpTO0s|Bf&G3>Ma@{`(P>;$5p9+ zN6h>c)TJGjEct+IuqF|+Q0C&<9eyu5PD zIdi@H?aJ1-p$p07C2g*;S8`nD60>SO9UjIAx+S=1*&6?>mXxjizh@06e?kTS zXA7-Y`M+VcWN=3M&##u0UWtkDeA{`6iLhEM%W6QW!FlPd*L6W_)|HCEJ-99J-T3nz zqwyNc@H{!MW(-DVCGO9vl-CbYjocGm6)E>bHUIwlNg4D1->W5ME$}{6p1F8*g4@CG zh^0PwbfT*wY}{_*#o9D#kKD<|Q}MgEFP z+4Fg&4gQyH#oPbARg_#}a7ATw8=hlEwfkp{W!4p#(Up^beHG=+eXn0p`Og~5zh{kQ zbY__6Lgk!W*8Tr{E6U#{^Y>QV8vHHr&A++$qi??ce1w0#75z`OVetE-;5R0Jcl_u# zGXEcYUjpY?QLTTIPS3(L)7{gV?g0WakYO1!D*;5KEJkD?qBE~Wfv~s0U<76i_|U+> z5C@ScIz$u*$P)Hu5yBo2wO!EQ8uX2}DAM{wg9`R@ZT0`1I^TV_x^JiH*?8)I`u9tp zs&l?Nbxu{?s=9US*0op0#@i)p?_pkctIX?c&g6GBduws-{)boI!8_U>-Mc&f|Df~F zw&&U2X>9K*-29!-n^KZ)nfrUuiCfyl(rtTA>}TcM_MB|&NYw19@nl-v#A94D&9DBR z6TM^7y8|!m-Zcovy@#^*qe^(&y9RE_cu!zmj{WS_E;sva0y`}CaiiZm@N;ZETK;RO^m@4W;2{@TTC?z;xAp0Q8&CjVTM_pzgq%{18jS95Q$_At5^+6#}ie`0CMYA4&?HQ4s9fwY#< z?PuG&26_d_|IzOk$a@3Kw-Z-@Zm%sh!JC7rJSKO-`_MXGh*Wg1cg@R_U1T`GRjAeM))&&BYFTc8;Dc zG`n}xw34a?&sb#^J@y%^>yf8)BAs-;}UB=Mk&ie02>&X4yoYaEb#&pEgdXccZ>q9xZ14MHid-jXYUTpn#*qz&`9?{^AGRo0?tzOuzcaP&* zD9F)L-8ZYqv0*=QG{-*IOEq{LccdQ6cP(j#lsy|Q=A5w*PYhEHWBKkmX&bBG%lDNm zk)0~??L4o3JEKE>e38=^@>|NPEl4KNlF=i~3Kx zcHiUh>zvH91HXR%Qvmx!AkU)~bH-7~d=+%OXA{kyGI-AvMwf}lZ#6n6mcG)H2=!~? z6NJBuH9Iq+j^xm+*G=*rAT}IN-+~#q8Ke(nX%X-h#huE6A$l} zlDC$woX!95e(6=M+EVwto2$qFW|Lb2_B_P9r?c-gM~{Fy%GF=+SFgc8z;w?&{GR)O`JS z4PL$Y*MjU*mtCpqmp#cXJmqyPXLRlB)v6c?yQeOX<@i(SN|)<}rq#7CJ-6A`;PFS# zE7V^_O1Q<*J&_d~-Em)AslIpVh23_j9DUo-3y+q*`uCf9b;#BFN;`t=9Yl7xS)cFKrq9wAyVUx;kfjJ~>d!LCe_-xA0WJu^iVgo3Aa?CXOnO)2-hUP(?q?RL&jFWwRwW;k72#1hrh=KOu_ma|H=ZSP#V1wFNO&UEhG zs+!xKQ(guA9nLf3=F+TXHsk+0y-6|o>uBQAnE3kLb`4IxoVBd%UP7!B{oaTD#B=P(ZjZ=YGwiLMy19(yD1T%BZ#$jaUt<0zXrtH6|F7D>L{A6Y zRx$ol0KbnDbNzVOf2>0`IFo2?BORa!)8){*(!2t^W9u@FPZ&(NAEQ} z{%EAvqU^o#qcP32jZN#{;c1^iZHL`)-#f+n-<4x~-7Ng?>$|Qr%76EHsQ<)l;Y?1d ztMT&R#rx0J7S80Po+SZitPOq*dP2C(cf)=k$8y~IorrH^RI|;o!`q~}Y?rU$_pO(8@0nQrcE?BIyJ34Lus4esJ?`5(hh?5= z@6mPjc=Jz}^MrXDNXKyryX%e0k=?T{Qo=2cjrTb24wkc4ZaeE+N@?s4Tdk=UN6#1^ zyLZ^~n95do_t3JM5pS2Av_CVdbVB`=+7t?f-ralh^O&;HS-dO_ou_?rz^@=i-H3spchfGq)G@a(Cx8Hb-;u^o(br_VD^PgqPMu+ENYMZ;>?H zZLUb&m+s~6mbRZG`MTxox51C!)<19SpSShTuV(+OSG3-#d11F-8lU6d`A+n{jD0^l z`rLzwo+r9*2H8(={Ik$aJHP0F>qf6s=&47e&o~-;5|Qia#+HwbAOHPsSF``UX)SYa zSAdJO_XF4^Z@yG&zbi> z=^OnF-QV__JwsH!{{$G}jCb0+AL(fr?<|+eNaehj=4qRqDq~+e`gGNg)ZA6SSpG_9 zzxchAw6AnhjXzbhd?!B3W$Q_$Rl9A^Ti+hNHg3O9+6=R?{K=d`u(5CP>lNxx)y%fZ z*dTrHc>QEE{^sO08GG#h#M_DFzRU0RQEr`1++Q`*(2PHs6R_>xa`NZIdPsM@NPSVh z?X|~gh8)e;_mNebzBO!HI6lWMz44`^=LRYC11^43&g~zqZSvNRzk=QB=;>q=N!?S< zHW$wPDF9b)_*#RpJShwVuvR_XFyLXuv^8(;wL_TL!_f? zd1LiY1|P-DC**YFzguGJ*ZBO=n6bW(wszuk7(_Z6KlwJSwfxH8HLzz&qg%*i^0LP- zy`qKV?ROhU>Z#;gQvtapnshZ{6jQ_9e`>Dp7~SFD9BJ>qu=DcnfW}L!E31mP!>3;={{9rZgVe9lYs+$mv-T(B>C`gUT{`+z z2-Poqe<}TQbEM^{?=9v_3eEf-k1ypp9$(8xzNFAx>fdSOwNG6$A1|%e%ZJeF0*;3B zxI=f(^!7_-|4Gof08gu1h}YF8)gbok3jBC^dHu8ft?J1ky{}hq3|`l_WrcI&Q|T8o zHz%$1>eI~gpiRwPHAp`{eT(V&@e0S;ZVPMkzU8_lJXH%-r}v$Rt)p4Lp0N3~taaqK z-2OVltCPziNylm5D)s9>V@LDyPOaIRb@a{y9cQLv=jc889WUQzeW^WWX}>Bxn6BK8 zr$;feRy>|m_PmY9*HqpNxj9BxO=TT*^DweIrMU*_$v0jq_K%m!8=ZrWJjECfqa%Wj z4*vgIKFzKOZ$FYd?`pQwNuSqfIcr$IH>4K&_1Iq{vPUkpN9$tjYWaBH`SD}dx5rE6 z&8%9SX&9A4&Mx?`r{#}_AG-%>Jd9YfG5n3SLG-`U%x$99`_DaFQ}493*z@qoT$TTS zdhP9qw$J?@uLXL&MDzC3te4h$aj(!ITHyY;Zwffd`HDG{#J>mFuE&X`qCe=^eTAQM z`lXWN*nVvE%88w$+U9v3bYxw0ypqwpyfxM4n91DnO?=NN>toIJ+v}wgZif6vW83j=2OY{NqWzz39!PZmns1Yc`szR97{h zHlxzSZDt}p<5{Bm?Xh*Do^$gxG`~V8E(dQv|9CcdyMM=%s%BZ+8U1#4vl)*6&U$0- zyXUR-`a|#Tdpz5=-FMr)w7)cTZK2s-xMnrDv3j=MciVUL+wQw3Zgmr{B-nSsTef}r z>uBTdyWRfh`CFxTk`Ze3f1M-w|6gssGW^^c!P{X!QaGb?QH-5R?+5L)XJVYi`-Aw8 zxu}^v+R_`(5&m)bidoRn@E?v7PNZM{>&~Lbv9=j-MJh(adZOUpR|lctSo403q{7MP=38?5 zELAyLU!FAJEPGJwv^ie5g{S>bKCR~UuJc8w`lz!q(cp6IuwSarTLt6R=HFLKT5X5w z^<`z36Lcgzxia~NIc;8Rs+nzG?rLqod5w9ZB>&yrurK8#ytip%5(d&d;q@b%MznI)b!yR_}FTWcQDy+XAvvX@8+=rybThW1xl+RgH9X0zntmb1*9 zN538Bt+#AE|6H7lsIADoF2shAY2of(P4!4@)+G4a zbF`E+FFUMA$uTsl$7se^+iVSfPP4Sl_P(3*(O4 zulhMsw(j-YYt`n&Ha~Ip*n0Ql{T^+4D))L6YbO&P-J+yV7_V&oe7pD1lF_!OW$VZL zy`GrUtcCc?%3qsm$>wWN3-!O&h*vLex!L23j>5k{jk{-ec;Oaj5#}VAX<)Z)!143% z__*+O&huTf0;d1%vegk>{GEJX?VcesR*%~@bj0+}3glYQ^+R`$liq84XCpM@yQ%Cm z6TGmSuYGT*I(5$WM|>a99Y?g})nB_d|A0AOkY}NM*pzAyo}Rx_D!(3oN!qR2FSTv( zOYOAwwV+<;Tw*eFgNbJy6WidI+MM0Y?8yEvdD(vfN7{q_X;^19I?lR$e@QmG;_TeD z9JH1t++t>Z0dv}h-JS!^_Som(-oMykZ8LhMtTAoiK63{lZ6N3zYR zVH>&TI??lPT-||DtDtu7S^~DUCz!P_Eq@ua0*;PcuQh(%X5DkCcaOhYF#2E0&<(3j zwMTQ&|MGM%=p<1xEsnmE<>%=A=BB0Hv{dS^?1ypJTCXv+X8%7Lz6YKAOh0Ca<=lyY z<8fM?_uVR-3qL0RUuV|$^#7x#AJ*`nak`P)PPA>P*ShoSb?YQAvC6f_&w2hP!TiRw zQo9DV#hz=mUOO!9R(rO9qbEU0y|`E6pqZ&^&8kjq;Wo!h6)-!9f{vUe<@%yXyIt9} zuVFcrC}_?sa-R!(932M(=Hw!`1myf8JM5N;TIkP9zj>VyT|`J{gRj3_p3Ko*}=ncs+A|(^Bc_&6|@} zPk!Ef4SIh2meQkVP;XgndZP8#(5dIiZ#~U=lDy8`^uK$peFrO4&B8(F3s||brOh}k z&fSNMhn$!na&AAgd8)}sTb-rW?s4%&E!2Ef!{jkjoPFN*O7^I>jYUp%KK}NN(Y$H+ zY0ja`H$IomNj2U1!-`GKar4t|=iD9Gyxg~xh8a#|$1P#WmetedT)yv?vubN-+um7q z;Fh*<>*<{79G~1e)^2Uh?asWzwx;E;j{Xkk#3Q!87j`agZbAdjwy{#i>rER0wIsC+ zn~l*rs&3lYx3T&+XVlxYyf%Nl+njv2)JV7aHf-53ZcEv-HAc5BYunZv*S3b8TYE&? zdN#j0W7*cW-yX##-|K3xs6CbT7<#qp)uAm=YgS9ipNrowKWFpr3b)=p-KLE`n=_hh z{{Yk zoS@@8E_RO3Z*hXJC=EG3H_yK&(x8}D=T94joZ{Szv*;(b&DN~=sgAx=Gg*7=RMYr0 zbJNpKcXqmPQ*GAVRl|19>&;WM&9y}J%y7;$PqntBwl*ibm2__J{O4BHJkxmto-Jy- z+Is)pD{p+N&mY}uQ=h5H9srvYbS^$s>>Qu(K5Lsu>OOaSWsLg_Zn8-CdECa~-Dh)~ zl4_dsg4q?Y>1o|(cAKlgeSWuP^tjLRwxl-qx!#u7=|1DzTAJPGeOp(*`|R)4$i;mQ zD0#WN4x~2@a>t1Mrhx9JH?KFo%asJoel3?TI|kjb*Y9l} zN9VfsJ(2E{RF3X3d*&ADCFH-Gm$!>g_hki4S-JmZ4`H)E7h~r**|43v8z#OJzUm zc&X&XztMbcZ}vM%A2#-@2Ky~_)i15x^-I&*r>2a5qM(Zx4R%=9d9>$jaXN6`L-d_nLmXEG+zx}t~ zFp-`!t?|xIt6_WZw^uu^RZ>3g-e4U;WbAgYL6z#2uF_uvk1rLPwt6i7d%L5(GjQaM zZ&!nN#-rO~*is#XFI~k0gnmc)6$a#HRR$H4R=QeB&o!dKd&cN2wtS1L$_JI_tmeAaYy`T(fc*GS-%P~F~-ZwEj@b<(@d%*;CbhsGvMbaQcK2P z=6;T9khhtd`z1P?OC_!S<&^P|YSs96WP0|mTZ3x3jvBTv8rGVXQy*Qt*zb-$5*{yi z^>O_9q1Noir<&L!^+Nw^`{n(EbTfv%_C+-%cwx4qN0Dkr45*OwjE9Q_$?6$TL$j+=&mw3hedUsAe&3`zwa6i3d9=0Xg6K<`VYB66-8?P=jN3Y)X+iJ~`uYSGTV}x86?wX#~=H|2tyZ^WA=$;e3 zT$*9jDw$)ub49&s?AB{rsQ0#V(#0#Sh)xD+TP0!l9#C^s+YZFqW5ALBL7tExXZHmS z$33w@&Z}`xX%PEeU;I~!>a_E<^YXXkiIG}sT4MI>NcGs#C0HL0IyyVD%T`l)wI6UM z>N8)dXJ~eBuKK0TztS4}|JC~W6BDkVU)W@xZ?8Xlqm|o=JWlhk7flAE^`$G}T3_4N z!`B=lJ-|dK&~E-3=H_eIwjREv%21yL=<2<$wEz3AhwG`lx)QFVlJ@WupK$vJ%rgVd zN}PQZbXJ%XkaQ%{RXEv&=$;Jb=iBG4wO%Ml-L)wDXEf~2WIT?$daNAL;GU0nyvbev zXRR}7?Obeo8o0v^IQn006KRV%<=8zzQLGB^jRVDe1}Bi{PB7Om)v4pY?)>p{G_7FV zv0FHLN|<{Nq2?|aH+RKo$>_?e?t)PLwqKgBBJDFUHD5iaR8uvxaD1Cx+q_ijyZc}D zds6J^SnZaNTT06DBab%wB_v-LsT@TL->!>R=V|kvi=G$f?cH)uz1F>~mv-e1g z(zJqc>r~$*Y4%^sQ(AZnPyO0@9I+wjh<>%LSy=bc1=%L0J&YGtZTdco+N`H6Zcg~a z?~=Skk6Rkr8l}Aj`4-Y6=BzfG^OCtLJ&t=tt37JJ*S3SsriK4}t6OgF>3Q0&?765t zJJs_lZH~4I<=E?W&G@3h^~FxrZ04+GpWq?`ghjv#f2p*Slxuc&$rMv{Ns%oTKLSPRI1dPkmJM=$Uw*Ftx8I>1oYghV!Og zNvgG}t=Bs{F5t);YVJKwv#``f(E02gl8Zh=(L0@kE)$MkU-rH-y)#mb`eN^;Jl(8< zO8K-ny1&cDYrSh)xqoqOQ;yvdv_p z&6X-(&!tqp|G!$kame5}Uv5h1_|FBJDEQD_XByf88DO8Sze@AiJ$y$7t<~ zY(0}f{^n8Xsdl?swAn33>r1Y#G@N%S!Fi);jXni1IfL>DRUd&%efN z8`@%bGQRusQmM_Ck;}cVRl1LEh*Si)*u{^>ggDsu-<^ch&4i%F_)ut>P7_VJ&~92Qf=W2=F=WAZ7M{3Yrv2TX|3+^lej^7fy9Be(Bqo&%NGSN{_treXu&OI0}Mvo(2 z|KQe$-6p+f7Nb+iOw7frg|_c@N&4r6av$WDn3kc=qMPx(`U>)UM(UB^1BQcL4Y*Gk z{mzlCvzb)*win~+*ZT{tJ00uoF~SZ@Y2#a&IH^OQeYl#nHuWB)S-bVx(&%zlPrVWd zIFp&NYmRm;*!txpaJ;!@{!fgYc$Pjktvj+PUt5KJEl>Q6V`8bNbG#Y*iDn&1?r`1l zTCP_2{#t5T*WcWEsrD**N38AN{;&7Zf^pXa<-Sp}f{?~it51V^r zeJ}e+GY_=?OJ43hxOdgNHqzvuK)O&;$@j^@}cR_)jIoMv@rm%zjr zdu2n*&@M^!MK~?v+=HuCYL6Y3RHNyT z4$f}Q4$dBU>1Lr5aSn0jI)~%;jI+CQBz`OKTjfNZqnvpN?_++eoVc?ZzjN_>#@P?N z*E!oc2RI+c4<`_Tz8*Az^a;okNdHD>J$@_jTjd-GdLZbVo$K&hpbD~I=>6{f_D_SMGUCfs`Eqqp2dRbcFyU}&+uD;-*(PQ(3Rl77xugt;rBwvna*GE`x$;K@Y@c*RnCR@ z;pQ)R5$MCtVDJ&=(7+=|_b7gk!G_0x`!e`nasCwisxuP&4sdnniNG`9|IB$)@CE1k zmcKYZ4E`1Ie}F$V@WbHDzzU};aAnJmfujOD1~xc523Fy>!r3M8MBtFXcF5rZ{GM^% z3f@}-PlVnI%v*s;LH0KMjs!msJ(mUcnsRNRIOVf}|D19?es>10pK@2AJmsFiAbzWy zdqM97{T%4$K<@*+5A^=PZ>HQIcp1NE5FP|w$c8QQ%tV$H4p;^5-Fc9`Yg3A<&;g{tL){0ogC0>&q>tf^Gm^<$SB<#+Gk^_pO%eKsSJ{a=zWN!s!mdPW(;{ozZe?=o!#cK{tRR zuh1W+tU-7U!WZGU7Qc^%4w`ydC^_}x2w#rhC-5uc_bKqN0=+Ku_bJzb-hf{jznepe zskeaMfnR^IAuNPHTaeAE4LmVxViO6 z{8l-)w5|x;0(v*_74uu=)R69J{JzCYp* zi1bp@Pm*3mdIPA~^9bm!pkDwLJx`H8H*n|;dmw%=sNhzSrkxWX!s8zFf!7#%d*J2k zzmNELARhwlcOHMJ3kmw2H+*&nL#Ll0>0g3e{M#XT=nWTv@tkwjIl}*3;M@nVMj#Y; z@&3C&KNonT`2fV{5Wf%cCBPdTsHA@+_{3uigGv*IelzzL(j!4TTNJ-HsO0lhNYnKP zRe#ZW`TAR09H%x#p$i=SI z%yjmvi1*Gs^oH+)rf2^2wBLbt2ELyb|2hMYpCGhvX6cIADCo@0=UNsTx@`HrhW@(c zO`ut%Uk2J4c*E6i2hGhqY2_)Pg_)N;dZ*Se_ zo)3T?9hiIZ`Jh8H&u_ig&}GX%Z|JS9Uk7b4-7wRQ%$$31FoO2de)CkphuW7d-`< zo+@~eFGM`bdTML`)oCjb54Znq!2^rcK%4~k5=A+cmnCf|L-t;ygkzQ zsNmY4?0dq{%ReR8LA?Ep)S~+89p~c(U zL3^QpHfS35irwk& zJL3bOgOm@npSS&8hJVxckAe=7-(WtC_TQcPJoshyt1-5xGW*xEqy4M!Wt~JU&$T{$(OmE!X+6Qn2a!I8_`q~cm+Gj$`#{7uv>y4`;h-tx^G*|g zaZR6z|FL=|mq+oA3K z1^D-Qq)T_4yYlOxFSLH~iXVYykY45onU3LG|77GZU*EDD#?RKLD`C)V$Lb4Y9LaS& zbcx2byz)r559GOyPhW8msKmv-JnbrUXgkh#Tz>4aM(*5t3g`>1iywWTiN9-&T(?Eq zU+j4DbZJK=+EeP7{=g@ID|Os?+ck#%c#YJ1x#PF%Z#MCdRv!Z`cRX={^k=1xTh9Ha z;s5nf@u$?0`>@n&spI$k5-)fB&oQDe+M?rH+|hBdANkGP9qpy#{MKC!UAFu{LzhfB z473WlT(8lV4eMomEjil%B&a9R^2rb10^9&_a(&jI=V`=i9m|$KZ|IUKzX7dNPXcF-Aoq9g# z(ZF47;vJ_+ymQJ4cYe(9``%xaIOJD@t_;4P@pDbQGx(;{%0|BCqj!Re-upl!?RT#n z03C##avjAT?FVE$k?VX2d=#e>3!HfVv%tjyFPtO&U@UO`Xa3v7^*W6O&b_FC_<5K= zNx8=Y$5&oLyn*z8H@N-JX`LthU%y*v@7kG&53_t?f#03EGven3|6t~2LvU|zgYP^} z`q^0EgP&b&;{S1i#+R;XMLy>R-+GSJe=IQlO11Nahm~r75esZse*n^rFrT50m#WgP zvom$P9qL$pzUe10A9)vWq0S$#mwqr7I5eyLrE65*>$B32#{$23zs9wE;z%du*4C-z z(blQu)YjR4yx6(-l&^i@9OxaGuK2dj{nv^AZJj3wNkO zY4>fNA3AzHaC=Yr(=qoL{M}bP3OX=d`=5d7+W&+*mo0w={BY;*+n)uEbh7=zE~%F& z?TU7;Jx%H_+Nt?QnQxT&MmtYAUGkOuq@Rm+&RZwt5$*i-g;Oz6kHRjwo}{1K4e_U1 z)91)I8>PR}KMG&ct9TFH{|V^19O;tKUpDmbQ>Fe=ojPAmcD`e$2f*)TeyPsS z^?n8MgE1b+b^b}T+wUNr?tGIO=hL0quKR$O{437S^DjYOaejM!=bo6?bm}~#;=HAx z@_$^S^s?1beii3`OuOyt)cHqWr}oFdub2Ao>(qX#;v_mxg}#dOy-UtDbg#Q|hJItU z=*x7z`I5U4&(e-u=k0fW1@Zj<#*gg(zKLu9U+C0%d!bXu>s)8Xncw>@|{m! z`U{ip#Wf8>kA2`}L$%+`cRqEg#!oJa9r@0$+$Q5nzVpxP|7>tNkIHwxe0^Xqj0d1{ zzf`sD~L8X5BLFKxtbUu0d8Q?cCZ;

    U`t0 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

    (0M&0plRazi0cDx<;QV-0(XU>^LjoDnjtPr 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

    !D&EHbqF1o))QZoW{as45E5Yu}yD)!6 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

    ?y) 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 literal 0 HcmV?d00001 diff --git a/Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0/System.Reactive.dll.meta b/Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0/System.Reactive.dll.meta new file mode 100644 index 0000000..5c979c5 --- /dev/null +++ b/Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0/System.Reactive.dll.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: 67770b6ff6ea2364cab4a5870da71e33 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 3 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0/System.Reactive.xml b/Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0/System.Reactive.xml new file mode 100644 index 0000000..206290f --- /dev/null +++ b/Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0/System.Reactive.xml @@ -0,0 +1,27828 @@ + + + + System.Reactive + + + +

    + Class to create an instance from a delegate-based implementation of the method. + + The type of the elements in the sequence. + + + + Creates an observable sequence object from the specified subscription function. + + method implementation. + is null. + + + + Calls the subscription function that was supplied to the constructor. + + Observer to send notifications to. + Disposable object representing an observer's subscription to the observable sequence. + + + + Class to create an instance from delegate-based implementations of the On* methods. + + The type of the elements in the sequence. + + + + Creates an observer from the specified , , and actions. + + Observer's action implementation. + Observer's action implementation. + Observer's action implementation. + or or is null. + + + + Creates an observer from the specified action. + + Observer's action implementation. + is null. + + + + Creates an observer from the specified and actions. + + Observer's action implementation. + Observer's action implementation. + or is null. + + + + Creates an observer from the specified and actions. + + Observer's action implementation. + Observer's action implementation. + or is null. + + + + Calls the action implementing . + + Next element in the sequence. + + + + Calls the action implementing . + + The error that has occurred. + + + + Calls the action implementing . + + + + + This class fuses logic from ObserverBase, AnonymousObserver, and SafeObserver into one class. When an observer + needs to be safeguarded, an instance of this type can be created by SafeObserver.Create when it detects its + input is an AnonymousObserver, which is commonly used by end users when using the Subscribe extension methods + that accept delegates for the On* handlers. By doing the fusion, we make the call stack depth shorter which + helps debugging and some performance. + + + + + Asynchronous lock. + + + + + Queues the action for execution. If the caller acquires the lock and becomes the owner, + the queue is processed. If the lock is already owned, the action is queued and will get + processed by the owner. + + Action to queue for execution. + is null. + + + + Queues the action for execution. If the caller acquires the lock and becomes the owner, + the queue is processed. If the lock is already owned, the action is queued and will get + processed by the owner. + + Action to queue for execution. + The state to pass to the action when it gets invoked under the lock. + is null. + In case TState is a value type, this operation will involve boxing of . + However, this is often an improvement over the allocation of a closure object and a delegate. + + + + Clears the work items in the queue and drops further work being queued. + + + + + (Infrastructure) Concurrency abstraction layer. + + + + + Gets the current CAL. If no CAL has been set yet, it will be initialized to the default. + + + + + (Infrastructure) Concurrency abstraction layer interface. + + + This type is used by the Rx infrastructure and not meant for public consumption or implementation. + No guarantees are made about forward compatibility of the type's functionality and its usage. + + + + + Queues a method for execution at the specified relative time. + + Method to execute. + State to pass to the method. + Time to execute the method on. + Disposable object that can be used to stop the timer. + + + + Queues a method for periodic execution based on the specified period. + + Method to execute; should be safe for reentrancy. + Period for running the method periodically. + Disposable object that can be used to stop the timer. + + + + Queues a method for execution. + + Method to execute. + State to pass to the method. + Disposable object that can be used to cancel the queued method. + + + + Blocking sleep operation. + + Time to sleep. + + + + Starts a new stopwatch object. + + New stopwatch object; started at the time of the request. + + + + Gets whether long-running scheduling is supported. + + + + + Starts a new long-running thread. + + Method to execute. + State to pass to the method. + + + + Represents an object that schedules units of work on the current thread. + + Singleton instance of this type exposed through this static property. + + + + Gets the singleton instance of the current thread scheduler. + + + + + Gets a value that indicates whether the caller must call a Schedule method. + + + + + Gets a value that indicates whether the caller must call a Schedule method. + + + + + Schedules an action to be executed after dueTime. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + Relative time after which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Represents an object that schedules units of work on the platform's default scheduler. + + Singleton instance of this type exposed through this static property. + + + + Gets the singleton instance of the default scheduler. + + + + + Schedules an action to be executed. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Schedules an action to be executed after dueTime, using a System.Threading.Timer object. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + Relative time after which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Schedules a periodic piece of work, using a System.Threading.Timer object. + + The type of the state passed to the scheduled action. + Initial state passed to the action upon the first iteration. + Period for running the work periodically. + Action to be executed, potentially updating the state. + The disposable object used to cancel the scheduled recurring action (best effort). + is less than . + is null. + + + + Discovers scheduler services by interface type. + + Scheduler service interface type to discover. + Object implementing the requested service, if available; null otherwise. + + + + Represents an object that schedules units of work on a designated thread. + + + + + Counter for diagnostic purposes, to name the threads. + + + + + Thread factory function. + + + + + Stopwatch for timing free of absolute time dependencies. + + + + + Thread used by the event loop to run work items on. No work should be run on any other thread. + If ExitIfEmpty is set, the thread can quit and a new thread will be created when new work is scheduled. + + + + + Gate to protect data structures, including the work queue and the ready list. + + + + + Semaphore to count requests to re-evaluate the queue, from either Schedule requests or when a timer + expires and moves on to the next item in the queue. + + + + + Queue holding work items. Protected by the gate. + + + + + Queue holding items that are ready to be run as soon as possible. Protected by the gate. + + + + + Work item that will be scheduled next. Used upon reevaluation of the queue to check whether the next + item is still the same. If not, a new timer needs to be started (see below). + + + + + Disposable that always holds the timer to dispatch the first element in the queue. + + + + + Flag indicating whether the event loop should quit. When set, the event should be signaled as well to + wake up the event loop thread, which will subsequently abandon all work. + + + + + Creates an object that schedules units of work on a designated thread. + + + + + Creates an object that schedules units of work on a designated thread, using the specified factory to control thread creation options. + + Factory function for thread creation. + is null. + + + + Indicates whether the event loop thread is allowed to quit when no work is left. If new work + is scheduled afterwards, a new event loop thread is created. This property is used by the + NewThreadScheduler which uses an event loop for its recursive invocations. + + + + + Schedules an action to be executed after dueTime. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + Relative time after which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + is null. + The scheduler has been disposed and doesn't accept new work. + + + + Schedules a periodic piece of work on the designated thread. + + The type of the state passed to the scheduled action. + Initial state passed to the action upon the first iteration. + Period for running the work periodically. + Action to be executed, potentially updating the state. + The disposable object used to cancel the scheduled recurring action (best effort). + is null. + is less than . + The scheduler has been disposed and doesn't accept new work. + + + + Starts a new stopwatch object. + + New stopwatch object; started at the time of the request. + + + + Ends the thread associated with this scheduler. All remaining work in the scheduler queue is abandoned. + + + + + Ensures there is an event loop thread running. Should be called under the gate. + + + + + Event loop scheduled on the designated event loop thread. The loop is suspended/resumed using the event + which gets set by calls to Schedule, the next item timer, or calls to Dispose. + + + + + Base class for historical schedulers, which are virtual time schedulers that use for absolute time and for relative time. + + + + + Creates a new historical scheduler with the minimum value of as the initial clock value. + + + + + Creates a new historical scheduler with the specified initial clock value. + + Initial clock value. + + + + Creates a new historical scheduler with the specified initial clock value and absolute time comparer. + + Initial value for the clock. + Comparer to determine causality of events based on absolute time. + + + + Adds a relative time value to an absolute time value. + + Absolute time value. + Relative time value to add. + The resulting absolute time sum value. + + + + Converts the absolute time value to a value. + + Absolute time value to convert. + The corresponding value. + + + + Converts the value to a relative time value. + + value to convert. + The corresponding relative time value. + + + + Provides a virtual time scheduler that uses for absolute time and for relative time. + + + + + Creates a new historical scheduler with the minimum value of as the initial clock value. + + + + + Creates a new historical scheduler with the specified initial clock value. + + Initial value for the clock. + + + + Creates a new historical scheduler with the specified initial clock value. + + Initial value for the clock. + Comparer to determine causality of events based on absolute time. + is null. + + + + Gets the next scheduled item to be executed. + + The next scheduled item. + + + + Schedules an action to be executed at . + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + Absolute time at which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Represents an object that schedules units of work to run immediately on the current thread. + + Singleton instance of this type exposed through this static property. + + + + Gets the singleton instance of the immediate scheduler. + + + + + Schedules an action to be executed. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Schedules an action to be executed after dueTime. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + Relative time after which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Represents a work item that has been scheduled. + + Absolute time representation type. + + + + Gets the absolute time at which the item is due for invocation. + + + + + Invokes the work item. + + + + + Represents an object that schedules units of work. + + + + + Gets the scheduler's notion of current time. + + + + + Schedules an action to be executed. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + + + + Schedules an action to be executed after dueTime. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + Relative time after which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + + + + Schedules an action to be executed at dueTime. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + Absolute time at which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + + + + Scheduler with support for starting long-running tasks. + This type of scheduler can be used to run loops more efficiently instead of using recursive scheduling. + + + + + Schedules a long-running piece of work. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + + Notes to implementers + The returned disposable object should not prevent the work from starting, but only set the cancellation flag passed to the specified action. + + + + + Scheduler with support for running periodic tasks. + This type of scheduler can be used to run timers more efficiently instead of using recursive scheduling. + + + + + Schedules a periodic piece of work. + + The type of the state passed to the scheduled action. + Initial state passed to the action upon the first iteration. + Period for running the work periodically. + Action to be executed, potentially updating the state. + The disposable object used to cancel the scheduled recurring action (best effort). + + + + Abstraction for a stopwatch to compute time relative to a starting point. + + + + + Gets the time elapsed since the stopwatch object was obtained. + + + + + Provider for objects. + + + + + Starts a new stopwatch object. + + New stopwatch object; started at the time of the request. + + + + Abstract base class for machine-local schedulers, using the local system clock for time-based operations. + + + + + Gets the scheduler's notion of current time. + + + + + Schedules an action to be executed. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Schedules an action to be executed after dueTime. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + Relative time after which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + + + + Schedules an action to be executed at dueTime. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + Absolute time at which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Starts a new stopwatch object. + + New stopwatch object; started at the time of the request. + + Platform-specific scheduler implementations should reimplement + to provide a more efficient implementation (if available). + + + + + Discovers scheduler services by interface type. The base class implementation returns + requested services for each scheduler interface implemented by the derived class. For + more control over service discovery, derived types can override this method. + + Scheduler service interface type to discover. + Object implementing the requested service, if available; null otherwise. + + + + Gate to protect local scheduler queues. + + + + + Gate to protect queues and to synchronize scheduling decisions and system clock + change management. + + + + + Long term work queue. Contains work that's due beyond SHORTTERM, computed at the + time of enqueueing. + + + + + Disposable resource for the long term timer that will reevaluate and dispatch the + first item in the long term queue. A serial disposable is used to make "dispose + current and assign new" logic easier. The disposable itself is never disposed. + + + + + Item at the head of the long term queue for which the current long term timer is + running. Used to detect changes in the queue and decide whether we should replace + or can continue using the current timer (because no earlier long term work was + added to the queue). + + + + + Short term work queue. Contains work that's due soon, computed at the time of + enqueueing or upon reevaluation of the long term queue causing migration of work + items. This queue is kept in order to be able to relocate short term items back + to the long term queue in case a system clock change occurs. + + + + + Set of disposable handles to all of the current short term work Schedule calls, + allowing those to be cancelled upon a system clock change. + + + + + Threshold where an item is considered to be short term work or gets moved from + long term to short term. + + + + + Maximum error ratio for timer drift. We've seen machines with 10s drift on a + daily basis, which is in the order 10E-4, so we allow for extra margin here. + This value is used to calculate early arrival for the long term queue timer + that will reevaluate work for the short term queue. + + Example: -------------------------------...---------------------*-----$ + ^ ^ + | | + early due + 0.999 1.0 + + We also make the gap between early and due at least LONGTOSHORT so we have + enough time to transition work to short term and as a courtesy to the + destination scheduler to manage its queues etc. + + + + + Minimum threshold for the long term timer to fire before the queue is reevaluated + for short term work. This value is chosen to be less than SHORTTERM in order to + ensure the timer fires and has work to transition to the short term queue. + + + + + Threshold used to determine when a short term timer has fired too early compared + to the absolute due time. This provides a last chance protection against early + completion of scheduled work, which can happen in case of time adjustment in the + operating system (cf. GetSystemTimeAdjustment). + + + + + Longest interval supported by timers in the BCL. + + + + + Creates a new local scheduler. + + + + + Enqueues absolute time scheduled work in the timer queue or the short term work list. + + State to pass to the action. + Absolute time to run the work on. The timer queue is responsible to execute the work close to the specified time, also accounting for system clock changes. + Action to run, potentially recursing into the scheduler. + Disposable object to prevent the work from running. + + + + Schedule work that's due in the short term. This leads to relative scheduling calls to the + underlying scheduler for short TimeSpan values. If the system clock changes in the meantime, + the short term work is attempted to be cancelled and reevaluated. + + Work item to schedule in the short term. The caller is responsible to determine the work is indeed short term. + + + + Callback to process the next short term work item. + + Recursive scheduler supplied by the underlying scheduler. + Disposable used to identify the work the timer was triggered for (see code for usage). + Empty disposable. Recursive work cancellation is wired through the original WorkItem. + + + + Schedule work that's due on the long term. This leads to the work being queued up for + eventual transitioning to the short term work list. + + Work item to schedule on the long term. The caller is responsible to determine the work is indeed long term. + + + + Updates the long term timer which is responsible to transition work from the head of the + long term queue to the short term work list. + + Should be called under the scheduler lock. + + + + Evaluates the long term queue, transitioning short term work to the short term list, + and adjusting the new long term processing timer accordingly. + + + + + Callback invoked when a system clock change is observed in order to adjust and reevaluate + the internal scheduling queues. + + Currently not used. + Currently not used. + + + + Represents a work item in the absolute time scheduler. + + + This type is very similar to ScheduledItem, but we need a different Invoke signature to allow customization + of the target scheduler (e.g. when called in a recursive scheduling context, see ExecuteNextShortTermWorkItem). + + + + + Represents a work item that closes over scheduler invocation state. Subtyping is + used to have a common type for the scheduler queues. + + + + + Represents an object that schedules each unit of work on a separate thread. + + + + + Creates an object that schedules each unit of work on a separate thread. + + + + + Gets an instance of this scheduler that uses the default Thread constructor. + + + + + Creates an object that schedules each unit of work on a separate thread. + + Factory function for thread creation. + is null. + + + + Schedules an action to be executed after dueTime. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + Relative time after which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Schedules a long-running task by creating a new thread. Cancellation happens through polling. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Schedules a periodic piece of work by creating a new thread that goes to sleep when work has been dispatched and wakes up again at the next periodic due time. + + The type of the state passed to the scheduled action. + Initial state passed to the action upon the first iteration. + Period for running the work periodically. + Action to be executed, potentially updating the state. + The disposable object used to cancel the scheduled recurring action (best effort). + is null. + is less than . + + + + Starts a new stopwatch object. + + New stopwatch object; started at the time of the request. + + + + Abstract base class for scheduled work items. + + Absolute time representation type. + + + + Creates a new scheduled work item to run at the specified time. + + Absolute time at which the work item has to be executed. + Comparer used to compare work items based on their scheduled time. + is null. + + + + Gets the absolute time at which the item is due for invocation. + + + + + Invokes the work item. + + + + + Implement this method to perform the work item invocation, returning a disposable object for deep cancellation. + + Disposable object used to cancel the work item and/or derived work items. + + + + Compares the work item with another work item based on absolute time values. + + Work item to compare the current work item to. + Relative ordering between this and the specified work item. + The inequality operators are overloaded to provide results consistent with the implementation. Equality operators implement traditional reference equality semantics. + + + + Determines whether one specified object is due before a second specified object. + + The first object to compare. + The second object to compare. + true if the value of left is earlier than the value of right; otherwise, false. + This operator provides results consistent with the implementation. + + + + Determines whether one specified object is due before or at the same of a second specified object. + + The first object to compare. + The second object to compare. + true if the value of left is earlier than or simultaneous with the value of right; otherwise, false. + This operator provides results consistent with the implementation. + + + + Determines whether one specified object is due after a second specified object. + + The first object to compare. + The second object to compare. + true if the value of left is later than the value of right; otherwise, false. + This operator provides results consistent with the implementation. + + + + Determines whether one specified object is due after or at the same time of a second specified object. + + The first object to compare. + The second object to compare. + true if the value of left is later than or simultaneous with the value of right; otherwise, false. + This operator provides results consistent with the implementation. + + + + Determines whether two specified objects are equal. + + The first object to compare. + The second object to compare. + true if both are equal; otherwise, false. + This operator does not provide results consistent with the IComparable implementation. Instead, it implements reference equality. + + + + Determines whether two specified objects are inequal. + + The first object to compare. + The second object to compare. + true if both are inequal; otherwise, false. + This operator does not provide results consistent with the IComparable implementation. Instead, it implements reference equality. + + + + Determines whether a object is equal to the specified object. + + The object to compare to the current object. + true if the obj parameter is a object and is equal to the current object; otherwise, false. + + + + Returns the hash code for the current object. + + A 32-bit signed integer hash code. + + + + Cancels the work item by disposing the resource returned by as soon as possible. + + + + + Gets whether the work item has received a cancellation request. + + + + + Represents a scheduled work item based on the materialization of an IScheduler.Schedule method call. + + Absolute time representation type. + Type of the state passed to the scheduled action. + + + + Creates a materialized work item. + + Recursive scheduler to invoke the scheduled action with. + State to pass to the scheduled action. + Scheduled action. + Time at which to run the scheduled action. + Comparer used to compare work items based on their scheduled time. + or or is null. + + + + Creates a materialized work item. + + Recursive scheduler to invoke the scheduled action with. + State to pass to the scheduled action. + Scheduled action. + Time at which to run the scheduled action. + or is null. + + + + Invokes the scheduled action with the supplied recursive scheduler and state. + + Cancellation resource returned by the scheduled action. + + + + Provides a set of static properties to access commonly used schedulers. + + + + + Yields execution of the current work item on the scheduler to another work item on the scheduler. + The caller should await the result of calling Yield to schedule the remainder of the current work item (known as the continuation). + + Scheduler to yield work on. + Scheduler operation object to await in order to schedule the continuation. + is null. + + + + Yields execution of the current work item on the scheduler to another work item on the scheduler. + The caller should await the result of calling Yield to schedule the remainder of the current work item (known as the continuation). + + Scheduler to yield work on. + Cancellation token to cancel the continuation to run. + Scheduler operation object to await in order to schedule the continuation. + is null. + + + + Suspends execution of the current work item on the scheduler for the specified duration. + The caller should await the result of calling Sleep to schedule the remainder of the current work item (known as the continuation) after the specified duration. + + Scheduler to yield work on. + Time when the continuation should run. + Scheduler operation object to await in order to schedule the continuation. + is null. + + + + Suspends execution of the current work item on the scheduler for the specified duration. + The caller should await the result of calling Sleep to schedule the remainder of the current work item (known as the continuation) after the specified duration. + + Scheduler to yield work on. + Time when the continuation should run. + Cancellation token to cancel the continuation to run. + Scheduler operation object to await in order to schedule the continuation. + is null. + + + + Suspends execution of the current work item on the scheduler until the specified due time. + The caller should await the result of calling Sleep to schedule the remainder of the current work item (known as the continuation) at the specified due time. + + Scheduler to yield work on. + Time when the continuation should run. + Scheduler operation object to await in order to schedule the continuation. + is null. + + + + Suspends execution of the current work item on the scheduler until the specified due time. + The caller should await the result of calling Sleep to schedule the remainder of the current work item (known as the continuation) at the specified due time. + + Scheduler to yield work on. + Time when the continuation should run. + Cancellation token to cancel the continuation to run. + Scheduler operation object to await in order to schedule the continuation. + is null. + + + + Schedules work using an asynchronous method, allowing for cooperative scheduling in an imperative coding style. + + The type of the state passed to the scheduled action. + Scheduler to schedule work on. + State to pass to the asynchronous method. + Asynchronous method to run the work, using Yield and Sleep operations for cooperative scheduling and injection of cancellation points. + Disposable object that allows to cancel outstanding work on cooperative cancellation points or through the cancellation token passed to the asynchronous method. + or is null. + + + + Schedules work using an asynchronous method, allowing for cooperative scheduling in an imperative coding style. + + The type of the state passed to the scheduled action. + Scheduler to schedule work on. + State to pass to the asynchronous method. + Asynchronous method to run the work, using Yield and Sleep operations for cooperative scheduling and injection of cancellation points. + Disposable object that allows to cancel outstanding work on cooperative cancellation points or through the cancellation token passed to the asynchronous method. + or is null. + + + + Schedules work using an asynchronous method, allowing for cooperative scheduling in an imperative coding style. + + Scheduler to schedule work on. + Asynchronous method to run the work, using Yield and Sleep operations for cooperative scheduling and injection of cancellation points. + Disposable object that allows to cancel outstanding work on cooperative cancellation points or through the cancellation token passed to the asynchronous method. + or is null. + + + + Schedules work using an asynchronous method, allowing for cooperative scheduling in an imperative coding style. + + Scheduler to schedule work on. + Asynchronous method to run the work, using Yield and Sleep operations for cooperative scheduling and injection of cancellation points. + Disposable object that allows to cancel outstanding work on cooperative cancellation points or through the cancellation token passed to the asynchronous method. + or is null. + + + + Schedules work using an asynchronous method, allowing for cooperative scheduling in an imperative coding style. + + The type of the state passed to the scheduled action. + Scheduler to schedule work on. + State to pass to the asynchronous method. + Relative time after which to execute the action. + Asynchronous method to run the work, using Yield and Sleep operations for cooperative scheduling and injection of cancellation points. + Disposable object that allows to cancel outstanding work on cooperative cancellation points or through the cancellation token passed to the asynchronous method. + or is null. + + + + Schedules work using an asynchronous method, allowing for cooperative scheduling in an imperative coding style. + + The type of the state passed to the scheduled action. + Scheduler to schedule work on. + State to pass to the asynchronous method. + Relative time after which to execute the action. + Asynchronous method to run the work, using Yield and Sleep operations for cooperative scheduling and injection of cancellation points. + Disposable object that allows to cancel outstanding work on cooperative cancellation points or through the cancellation token passed to the asynchronous method. + or is null. + + + + Schedules work using an asynchronous method, allowing for cooperative scheduling in an imperative coding style. + + Scheduler to schedule work on. + Relative time after which to execute the action. + Asynchronous method to run the work, using Yield and Sleep operations for cooperative scheduling and injection of cancellation points. + Disposable object that allows to cancel outstanding work on cooperative cancellation points or through the cancellation token passed to the asynchronous method. + or is null. + + + + Schedules work using an asynchronous method, allowing for cooperative scheduling in an imperative coding style. + + Scheduler to schedule work on. + Relative time after which to execute the action. + Asynchronous method to run the work, using Yield and Sleep operations for cooperative scheduling and injection of cancellation points. + Disposable object that allows to cancel outstanding work on cooperative cancellation points or through the cancellation token passed to the asynchronous method. + or is null. + + + + Schedules work using an asynchronous method, allowing for cooperative scheduling in an imperative coding style. + + The type of the state passed to the scheduled action. + Scheduler to schedule work on. + State to pass to the asynchronous method. + Absolute time at which to execute the action. + Asynchronous method to run the work, using Yield and Sleep operations for cooperative scheduling and injection of cancellation points. + Disposable object that allows to cancel outstanding work on cooperative cancellation points or through the cancellation token passed to the asynchronous method. + or is null. + + + + Schedules work using an asynchronous method, allowing for cooperative scheduling in an imperative coding style. + + The type of the state passed to the scheduled action. + Scheduler to schedule work on. + State to pass to the asynchronous method. + Absolute time at which to execute the action. + Asynchronous method to run the work, using Yield and Sleep operations for cooperative scheduling and injection of cancellation points. + Disposable object that allows to cancel outstanding work on cooperative cancellation points or through the cancellation token passed to the asynchronous method. + or is null. + + + + Schedules work using an asynchronous method, allowing for cooperative scheduling in an imperative coding style. + + Scheduler to schedule work on. + Absolute time at which to execute the action. + Asynchronous method to run the work, using Yield and Sleep operations for cooperative scheduling and injection of cancellation points. + Disposable object that allows to cancel outstanding work on cooperative cancellation points or through the cancellation token passed to the asynchronous method. + or is null. + + + + Schedules work using an asynchronous method, allowing for cooperative scheduling in an imperative coding style. + + Scheduler to schedule work on. + Absolute time at which to execute the action. + Asynchronous method to run the work, using Yield and Sleep operations for cooperative scheduling and injection of cancellation points. + Disposable object that allows to cancel outstanding work on cooperative cancellation points or through the cancellation token passed to the asynchronous method. + or is null. + + + + Gets the current time according to the local machine's system clock. + + + + + Normalizes the specified value to a positive value. + + The value to normalize. + The specified TimeSpan value if it is zero or positive; otherwise, . + + + + Gets a scheduler that schedules work immediately on the current thread. + + + + + Gets a scheduler that schedules work as soon as possible on the current thread. + + + + + Gets a scheduler that schedules work on the platform's default scheduler. + + + + + Gets a scheduler that schedules work on the thread pool. + + + + + Gets a scheduler that schedules work on a new thread using default thread creation options. + + + + + Gets a scheduler that schedules work on Task Parallel Library (TPL) task pool using the default TaskScheduler. + + + + + Schedules an action to be executed recursively. + + Scheduler to execute the recursive action on. + Action to execute recursively. The parameter passed to the action is used to trigger recursive scheduling of the action. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Schedules an action to be executed recursively. + + The type of the state passed to the scheduled action. + Scheduler to execute the recursive action on. + State passed to the action to be executed. + Action to execute recursively. The last parameter passed to the action is used to trigger recursive scheduling of the action, passing in recursive invocation state. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Schedules an action to be executed recursively after a specified relative due time. + + Scheduler to execute the recursive action on. + Action to execute recursively. The parameter passed to the action is used to trigger recursive scheduling of the action at the specified relative time. + Relative time after which to execute the action for the first time. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Schedules an action to be executed recursively after a specified relative due time. + + The type of the state passed to the scheduled action. + Scheduler to execute the recursive action on. + State passed to the action to be executed. + Action to execute recursively. The last parameter passed to the action is used to trigger recursive scheduling of the action, passing in the recursive due time and invocation state. + Relative time after which to execute the action for the first time. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Schedules an action to be executed recursively at a specified absolute due time. + + Scheduler to execute the recursive action on. + Action to execute recursively. The parameter passed to the action is used to trigger recursive scheduling of the action at the specified absolute time. + Absolute time at which to execute the action for the first time. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Schedules an action to be executed recursively at a specified absolute due time. + + The type of the state passed to the scheduled action. + Scheduler to execute the recursive action on. + State passed to the action to be executed. + Action to execute recursively. The last parameter passed to the action is used to trigger recursive scheduling of the action, passing in the recursive due time and invocation state. + Absolute time at which to execute the action for the first time. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Returns the implementation of the specified scheduler, or null if no such implementation is available. + + Scheduler to get the implementation for. + The scheduler's implementation if available; null otherwise. + + This helper method is made available for query operator authors in order to discover scheduler services by using the required + IServiceProvider pattern, which allows for interception or redefinition of scheduler services. + + + + + Returns the implementation of the specified scheduler, or null if no such implementation is available. + + Scheduler to get the implementation for. + The scheduler's implementation if available; null otherwise. + + + This helper method is made available for query operator authors in order to discover scheduler services by using the required + IServiceProvider pattern, which allows for interception or redefinition of scheduler services. + + + Consider using in case a stopwatch is required, but use of emulation stopwatch based + on the scheduler's clock is acceptable. Use of this method is recommended for best-effort use of the stopwatch provider + scheduler service, where the caller falls back to not using stopwatches if this facility wasn't found. + + + + + + Returns the implementation of the specified scheduler, or null if no such implementation is available. + + Scheduler to get the implementation for. + The scheduler's implementation if available; null otherwise. + + + This helper method is made available for query operator authors in order to discover scheduler services by using the required + IServiceProvider pattern, which allows for interception or redefinition of scheduler services. + + + Consider using the extension methods for in case periodic scheduling + is required and emulation of periodic behavior using other scheduler services is desirable. Use of this method is recommended + for best-effort use of the periodic scheduling service, where the caller falls back to not using periodic scheduling if this + facility wasn't found. + + + + + + Schedules a periodic piece of work by dynamically discovering the scheduler's capabilities. + If the scheduler supports periodic scheduling, the request will be forwarded to the periodic scheduling implementation. + If the scheduler provides stopwatch functionality, the periodic task will be emulated using recursive scheduling with a stopwatch to correct for time slippage. + Otherwise, the periodic task will be emulated using recursive scheduling. + + The type of the state passed to the scheduled action. + The scheduler to run periodic work on. + Initial state passed to the action upon the first iteration. + Period for running the work periodically. + Action to be executed, potentially updating the state. + The disposable object used to cancel the scheduled recurring action (best effort). + or is null. + is less than . + + + + Schedules a periodic piece of work by dynamically discovering the scheduler's capabilities. + If the scheduler supports periodic scheduling, the request will be forwarded to the periodic scheduling implementation. + If the scheduler provides stopwatch functionality, the periodic task will be emulated using recursive scheduling with a stopwatch to correct for time slippage. + Otherwise, the periodic task will be emulated using recursive scheduling. + + The type of the state passed to the scheduled action. + Scheduler to execute the action on. + State passed to the action to be executed. + Period for running the work periodically. + Action to be executed. + The disposable object used to cancel the scheduled recurring action (best effort). + or is null. + is less than . + + + + Schedules a periodic piece of work by dynamically discovering the scheduler's capabilities. + If the scheduler supports periodic scheduling, the request will be forwarded to the periodic scheduling implementation. + If the scheduler provides stopwatch functionality, the periodic task will be emulated using recursive scheduling with a stopwatch to correct for time slippage. + Otherwise, the periodic task will be emulated using recursive scheduling. + + Scheduler to execute the action on. + Period for running the work periodically. + Action to be executed. + The disposable object used to cancel the scheduled recurring action (best effort). + or is null. + is less than . + + + + Starts a new stopwatch object by dynamically discovering the scheduler's capabilities. + If the scheduler provides stopwatch functionality, the request will be forwarded to the stopwatch provider implementation. + Otherwise, the stopwatch will be emulated using the scheduler's notion of absolute time. + + Scheduler to obtain a stopwatch for. + New stopwatch object; started at the time of the request. + is null. + The resulting stopwatch object can have non-monotonic behavior. + + + + Schedules an action to be executed. + + Scheduler to execute the action on. + Action to execute. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Schedules an action to be executed. + + Scheduler to execute the action on. + A state object to be passed to . + Action to execute. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Schedules an action to be executed. + + Scheduler to execute the action on. + A state object to be passed to . + Action to execute. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Schedules an action to be executed after the specified relative due time. + + Scheduler to execute the action on. + Action to execute. + Relative time after which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Schedules an action to be executed after the specified relative due time. + + Scheduler to execute the action on. + Action to execute. + A state object to be passed to . + Relative time after which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Schedules an action to be executed after the specified relative due time. + + Scheduler to execute the action on. + Action to execute. + A state object to be passed to . + Relative time after which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Schedules an action to be executed at the specified absolute due time. + + Scheduler to execute the action on. + Action to execute. + Absolute time at which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Schedules an action to be executed after the specified relative due time. + + Scheduler to execute the action on. + Action to execute. + A state object to be passed to . + Relative time after which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Schedules an action to be executed after the specified relative due time. + + Scheduler to execute the action on. + Action to execute. + A state object to be passed to . + Relative time after which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Schedules an action to be executed. + + Scheduler to execute the action on. + Action to execute. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Returns a scheduler that represents the original scheduler, without any of its interface-based optimizations (e.g. long running scheduling). + + Scheduler to disable all optimizations for. + Proxy to the original scheduler but without any optimizations enabled. + is null. + + + + Returns a scheduler that represents the original scheduler, without the specified set of interface-based optimizations (e.g. long running scheduling). + + Scheduler to disable the specified optimizations for. + Types of the optimization interfaces that have to be disabled. + Proxy to the original scheduler but without the specified optimizations enabled. + or is null. + + + + Returns a scheduler that wraps the original scheduler, adding exception handling for scheduled actions. + + Type of the exception to check for. + Scheduler to apply an exception filter for. + Handler that's run if an exception is caught. The exception will be rethrown if the handler returns false. + Wrapper around the original scheduler, enforcing exception handling. + or is null. + + + + Represents an awaitable scheduler operation. Awaiting the object causes the continuation to be posted back to the originating scheduler's work queue. + + + + + Controls whether the continuation is run on the originating synchronization context (false by default). + + true to run the continuation on the captured synchronization context; false otherwise (default). + Scheduler operation object with configured await behavior. + + + + Gets an awaiter for the scheduler operation, used to post back the continuation. + + Awaiter for the scheduler operation. + + + + (Infrastructure) Scheduler operation awaiter type used by the code generated for C# await and Visual Basic Await expressions. + + + + + Indicates whether the scheduler operation has completed. Returns false unless cancellation was already requested. + + + + + Completes the scheduler operation, throwing an OperationCanceledException in case cancellation was requested. + + + + + Registers the continuation with the scheduler operation. + + Continuation to be run on the originating scheduler. + + + + Efficient scheduler queue that maintains scheduled items sorted by absolute time. + + Absolute time representation type. + This type is not thread safe; users should ensure proper synchronization. + + + + Creates a new scheduler queue with a default initial capacity. + + + + + Creates a new scheduler queue with the specified initial capacity. + + Initial capacity of the scheduler queue. + is less than zero. + + + + Gets the number of scheduled items in the scheduler queue. + + + + + Enqueues the specified work item to be scheduled. + + Work item to be scheduled. + + + + Removes the specified work item from the scheduler queue. + + Work item to be removed from the scheduler queue. + true if the item was found; false otherwise. + + + + Dequeues the next work item from the scheduler queue. + + Next work item in the scheduler queue (removed). + + + + Peeks the next work item in the scheduler queue. + + Next work item in the scheduler queue (not removed). + + + + Provides basic synchronization and scheduling services for observable sequences. + + + + + Wraps the source sequence in order to run its subscription and unsubscription logic on the specified scheduler. + + The type of the elements in the source sequence. + Source sequence. + Scheduler to perform subscription and unsubscription actions on. + The source sequence whose subscriptions and unsubscriptions happen on the specified scheduler. + or is null. + + Only the side-effects of subscribing to the source sequence and disposing subscriptions to the source sequence are run on the specified scheduler. + In order to invoke observer callbacks on the specified scheduler, e.g. to offload callback processing to a dedicated thread, use . + + + + + Wraps the source sequence in order to run its subscription and unsubscription logic on the specified synchronization context. + + The type of the elements in the source sequence. + Source sequence. + Synchronization context to perform subscription and unsubscription actions on. + The source sequence whose subscriptions and unsubscriptions happen on the specified synchronization context. + or is null. + + Only the side-effects of subscribing to the source sequence and disposing subscriptions to the source sequence are run on the specified synchronization context. + In order to invoke observer callbacks on the specified synchronization context, e.g. to post callbacks to a UI thread represented by the synchronization context, use . + + + + + Wraps the source sequence in order to run its observer callbacks on the specified scheduler. + + The type of the elements in the source sequence. + Source sequence. + Scheduler to notify observers on. + The source sequence whose observations happen on the specified scheduler. + or is null. + + + + Wraps the source sequence in order to run its observer callbacks on the specified synchronization context. + + The type of the elements in the source sequence. + Source sequence. + Synchronization context to notify observers on. + The source sequence whose observations happen on the specified synchronization context. + or is null. + + + + Wraps the source sequence in order to ensure observer callbacks are properly serialized. + + The type of the elements in the source sequence. + Source sequence. + The source sequence whose outgoing calls to observers are synchronized. + is null. + + + + Wraps the source sequence in order to ensure observer callbacks are synchronized using the specified gate object. + + The type of the elements in the source sequence. + Source sequence. + Gate object to synchronize each observer call on. + The source sequence whose outgoing calls to observers are synchronized on the given gate object. + or is null. + + + + The new ObserveOn operator run with an IScheduler in a lock-free manner. + + + + + The new ObserveOn operator run with an ISchedulerLongRunning in a mostly lock-free manner. + + + + + Represents an object that schedules units of work on a provided . + + + + + Creates an object that schedules units of work on the provided . + + Synchronization context to schedule units of work on. + is null. + + + + Creates an object that schedules units of work on the provided . + + Synchronization context to schedule units of work on. + Configures whether scheduling always posts to the synchronization context, regardless whether the caller is on the same synchronization context. + is null. + + + + Schedules an action to be executed. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Schedules an action to be executed after dueTime. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + Relative time after which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Represents an object that schedules units of work on the Task Parallel Library (TPL) task pool. + + Instance of this type using the default TaskScheduler to schedule work on the TPL task pool. + + + + Creates an object that schedules units of work using the provided . + + Task factory used to create tasks to run units of work. + is null. + + + + Gets an instance of this scheduler that uses the default . + + + + + Schedules an action to be executed. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Schedules an action to be executed after dueTime. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + Relative time after which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Schedules a long-running task by creating a new task using TaskCreationOptions.LongRunning. Cancellation happens through polling. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Gets a new stopwatch object. + + New stopwatch object; started at the time of the request. + + + + Schedules a periodic piece of work by running a platform-specific timer to create tasks periodically. + + The type of the state passed to the scheduled action. + Initial state passed to the action upon the first iteration. + Period for running the work periodically. + Action to be executed, potentially updating the state. + The disposable object used to cancel the scheduled recurring action (best effort). + is null. + is less than . + + + + Represents an object that schedules units of work on the CLR thread pool. + + Singleton instance of this type exposed through this static property. + + + + Gets the singleton instance of the CLR thread pool scheduler. + + + + + Schedules an action to be executed. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Schedules an action to be executed after dueTime, using a System.Threading.Timer object. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + Relative time after which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Schedules a long-running task by creating a new thread. Cancellation happens through polling. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Starts a new stopwatch object. + + New stopwatch object; started at the time of the request. + + + + Schedules a periodic piece of work, using a System.Threading.Timer object. + + The type of the state passed to the scheduled action. + Initial state passed to the action upon the first iteration. + Period for running the work periodically. + Action to be executed, potentially updating the state. + The disposable object used to cancel the scheduled recurring action (best effort). + is null. + is less than zero. + + + + Base class for virtual time schedulers. + + Absolute time representation type. + Relative time representation type. + + + + Creates a new virtual time scheduler with the default value of TAbsolute as the initial clock value. + + + + + Creates a new virtual time scheduler with the specified initial clock value and absolute time comparer. + + Initial value for the clock. + Comparer to determine causality of events based on absolute time. + is null. + + + + Adds a relative time value to an absolute time value. + + Absolute time value. + Relative time value to add. + The resulting absolute time sum value. + + + + Converts the absolute time value to a DateTimeOffset value. + + Absolute time value to convert. + The corresponding DateTimeOffset value. + + + + Converts the TimeSpan value to a relative time value. + + TimeSpan value to convert. + The corresponding relative time value. + + + + Gets whether the scheduler is enabled to run work. + + + + + Gets the comparer used to compare absolute time values. + + + + + Schedules an action to be executed at dueTime. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Absolute time at which to execute the action. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + + + + Schedules an action to be executed at dueTime. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Relative time after which to execute the action. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + + + + Schedules an action to be executed. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Schedules an action to be executed after dueTime. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Relative time after which to execute the action. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Schedules an action to be executed at dueTime. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Absolute time at which to execute the action. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Starts the virtual time scheduler. + + + + + Stops the virtual time scheduler. + + + + + Advances the scheduler's clock to the specified time, running all work till that point. + + Absolute time to advance the scheduler's clock to. + is in the past. + The scheduler is already running. VirtualTimeScheduler doesn't support running nested work dispatch loops. To simulate time slippage while running work on the scheduler, use . + + + + Advances the scheduler's clock by the specified relative time, running all work scheduled for that timespan. + + Relative time to advance the scheduler's clock by. + is negative. + The scheduler is already running. VirtualTimeScheduler doesn't support running nested work dispatch loops. To simulate time slippage while running work on the scheduler, use . + + + + Advances the scheduler's clock by the specified relative time. + + Relative time to advance the scheduler's clock by. + is negative. + + + + Gets the scheduler's absolute time clock value. + + + + + Gets the scheduler's notion of current time. + + + + + Gets the next scheduled item to be executed. + + The next scheduled item. + + + + Discovers scheduler services by interface type. The base class implementation supports + only the IStopwatchProvider service. To influence service discovery - such as adding + support for other scheduler services - derived types can override this method. + + Scheduler service interface type to discover. + Object implementing the requested service, if available; null otherwise. + + + + Starts a new stopwatch object. + + New stopwatch object; started at the time of the request. + + + + Base class for virtual time schedulers using a priority queue for scheduled items. + + Absolute time representation type. + Relative time representation type. + + + + Creates a new virtual time scheduler with the default value of TAbsolute as the initial clock value. + + + + + Creates a new virtual time scheduler. + + Initial value for the clock. + Comparer to determine causality of events based on absolute time. + is null. + + + + Gets the next scheduled item to be executed. + + The next scheduled item. + + + + Schedules an action to be executed at dueTime. + + The type of the state passed to the scheduled action. + State passed to the action to be executed. + Action to be executed. + Absolute time at which to execute the action. + The disposable object used to cancel the scheduled action (best effort). + is null. + + + + Provides a set of extension methods for virtual time scheduling. + + + + + Schedules an action to be executed at . + + Absolute time representation type. + Relative time representation type. + Scheduler to execute the action on. + Relative time after which to execute the action. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + Schedules an action to be executed at . + + Absolute time representation type. + Relative time representation type. + Scheduler to execute the action on. + Absolute time at which to execute the action. + Action to be executed. + The disposable object used to cancel the scheduled action (best effort). + or is null. + + + + The System.Reactive.Concurrency namespace contains interfaces and classes that provide the scheduler infrastructure used by Reactive Extensions to construct and + process event streams. Schedulers are used to parameterize the concurrency introduced by query operators, provide means to virtualize time, to process historical data, + and to write unit tests for functionality built using Reactive Extensions constructs. + + + + + Represents an Action-based disposable. + + + + + Constructs a new disposable with the given action used for disposal. + + Disposal action which will be run upon calling Dispose. + + + + Gets a value that indicates whether the object is disposed. + + + + + Calls the disposal action if and only if the current instance hasn't been disposed yet. + + + + + Represents a Action-based disposable that can hold onto some state. + + + + + Constructs a new disposable with the given action used for disposal. + + The state to be passed to the disposal action. + Disposal action which will be run upon calling Dispose. + + + + Gets a value that indicates whether the object is disposed. + + + + + Calls the disposal action if and only if the current instance hasn't been disposed yet. + + + + + Represents a disposable resource that can be checked for disposal status. + + + + + Initializes a new instance of the class. + + + + + Gets a value that indicates whether the object is disposed. + + + + + Sets the status to disposed, which can be observer through the property. + + + + + Represents a disposable resource that has an associated that will be set to the cancellation requested state upon disposal. + + + + + Initializes a new instance of the class that uses an existing . + + used for cancellation. + is null. + + + + Initializes a new instance of the class that uses a new . + + + + + Gets the used by this . + + + + + Cancels the underlying . + + + + + Gets a value that indicates whether the object is disposed. + + + + + Represents a group of disposable resources that are disposed together. + + + + + Initializes a new instance of the class with no disposables contained by it initially. + + + + + Initializes a new instance of the class with the specified number of disposables. + + The number of disposables that the new CompositeDisposable can initially store. + is less than zero. + + + + Initializes a new instance of the class from a group of disposables. + + Disposables that will be disposed together. + is null. + Any of the disposables in the collection is null. + + + + Initializes a new instance of the class from a group of disposables. + + Disposables that will be disposed together. + is null. + Any of the disposables in the collection is null. + + + + Gets the number of disposables contained in the . + + + + + Adds a disposable to the or disposes the disposable if the is disposed. + + Disposable to add. + is null. + + + + Removes and disposes the first occurrence of a disposable from the . + + Disposable to remove. + true if found; false otherwise. + is null. + + + + Disposes all disposables in the group and removes them from the group. + + + + + Removes and disposes all disposables from the , but does not dispose the . + + + + + Determines whether the contains a specific disposable. + + Disposable to search for. + true if the disposable was found; otherwise, false. + is null. + + + + Copies the disposables contained in the to an array, starting at a particular array index. + + Array to copy the contained disposables to. + Target index at which to copy the first disposable of the group. + is null. + is less than zero. -or - is larger than or equal to the array length. + + + + Always returns false. + + + + + Returns an enumerator that iterates through the . + + An enumerator to iterate over the disposables. + + + + Returns an enumerator that iterates through the . + + An enumerator to iterate over the disposables. + + + + Gets a value that indicates whether the object is disposed. + + + + + An empty enumerator for the + method to avoid allocation on disposed or empty composites. + + + + + An enumerator for an array of disposables. + + + + + Represents a disposable resource whose disposal invocation will be posted to the specified . + + + + + Initializes a new instance of the class that uses the specified on which to dispose the specified disposable resource. + + Context to perform disposal on. + Disposable whose Dispose operation to run on the given synchronization context. + or is null. + + + + Gets the provided . + + + + + Gets a value that indicates whether the object is disposed. + + + + + Disposes the underlying disposable on the provided . + + + + + Provides a set of static methods for creating objects. + + + + + Represents a disposable that does nothing on disposal. + + + + + Singleton default disposable. + + + + + Does nothing. + + + + + Gets the disposable that does nothing when disposed. + + + + + Creates a disposable object that invokes the specified action when disposed. + + Action to run during the first call to . The action is guaranteed to be run at most once. + The disposable object that runs the given action upon disposal. + is null. + + + + Creates a disposable object that invokes the specified action when disposed. + + The state to be passed to the action. + Action to run during the first call to . The action is guaranteed to be run at most once. + The disposable object that runs the given action upon disposal. + is null. + + + + Gets the value stored in or a null if + was already disposed. + + + + + Gets the value stored in or a no-op-Disposable if + was already disposed. + + + + + Tries to assign to . + + A value indicating the outcome of the operation. + + + + Tries to assign to . If + is not disposed and is assigned a different value, it will not be disposed. + + true if was successfully assigned to . + false has been disposed. + + + + Tries to assign to . If + is not disposed and is assigned a different value, it will be disposed. + + true if was successfully assigned to . + false has been disposed. + + + + Disposes . + + + + + Disposable resource with disposal state tracking. + + + + + Gets a value that indicates whether the object is disposed. + + + + + Represents a disposable resource whose underlying disposable resource can be swapped for another disposable resource. + + + + + Initializes a new instance of the class with no current underlying disposable. + + + + + Gets a value that indicates whether the object is disposed. + + + + + Gets or sets the underlying disposable. After disposal, the result of getting this property is undefined. + + If the has already been disposed, assignment to this property causes immediate disposal of the given disposable object. + + + + Disposes the underlying disposable as well as all future replacements. + + + + + Represents a disposable resource whose underlying disposable resource can be swapped for another disposable resource. + + + + + Gets a value that indicates whether the object is disposed. + + + + + Gets or sets the underlying disposable. After disposal, the result of getting this property is undefined. + + If the has already been disposed, assignment to this property causes immediate disposal of the given disposable object. + + + + Disposes the underlying disposable as well as all future replacements. + + + + + Represents a disposable resource that only disposes its underlying disposable resource when all dependent disposable objects have been disposed. + + + + + Holds the number of active child disposables and the + indicator bit (31) if the main _disposable has been marked + for disposition. + + + + + Initializes a new instance of the class with the specified disposable. + + Underlying disposable. + is null. + + + + Initializes a new instance of the class with the specified disposable. + + Underlying disposable. + Indicates whether subsequent calls to should throw when this instance is disposed. + is null. + + + + Gets a value that indicates whether the object is disposed. + + + + + Returns a dependent disposable that when disposed decreases the refcount on the underlying disposable. + + A dependent disposable contributing to the reference count that manages the underlying disposable's lifetime. + This instance has been disposed and is configured to throw in this case by . + + + + Disposes the underlying disposable only when all dependent disposables have been disposed. + + + + + Represents a disposable resource whose disposal invocation will be scheduled on the specified . + + + + + Initializes a new instance of the class that uses an on which to dispose the disposable. + + Scheduler where the disposable resource will be disposed on. + Disposable resource to dispose on the given scheduler. + or is null. + + + + Gets the scheduler where the disposable resource will be disposed on. + + + + + Gets the underlying disposable. After disposal, the result is undefined. + + + + + Gets a value that indicates whether the object is disposed. + + + + + Disposes the wrapped disposable on the provided scheduler. + + + + + Represents a disposable resource whose underlying disposable resource can be replaced by another disposable resource, causing automatic disposal of the previous underlying disposable resource. + + + + + Initializes a new instance of the class. + + + + + Gets a value that indicates whether the object is disposed. + + + + + Gets or sets the underlying disposable. + + If the SerialDisposable has already been disposed, assignment to this property causes immediate disposal of the given disposable object. Assigning this property disposes the previous disposable object. + + + + Disposes the underlying disposable as well as all future replacements. + + + + + Represents a disposable resource whose underlying disposable resource can be replaced by another disposable resource, causing automatic disposal of the previous underlying disposable resource. + + + + + Gets a value that indicates whether the object is disposed. + + + + + Gets or sets the underlying disposable. + + If the SerialDisposable has already been disposed, assignment to this property causes immediate disposal of the given disposable object. Assigning this property disposes the previous disposable object. + + + + Disposes the underlying disposable as well as all future replacements. + + + + + Represents a disposable resource which only allows a single assignment of its underlying disposable resource. + If an underlying disposable resource has already been set, future attempts to set the underlying disposable resource will throw an . + + + + + Initializes a new instance of the class. + + + + + Gets a value that indicates whether the object is disposed. + + + + + Gets or sets the underlying disposable. After disposal, the result of getting this property is undefined. + + Thrown if the has already been assigned to. + + + + Disposes the underlying disposable. + + + + + Represents a disposable resource which only allows a single assignment of its underlying disposable resource. + If an underlying disposable resource has already been set, future attempts to set the underlying disposable resource will throw an . + + + + + Gets a value that indicates whether the object is disposed. + + + + + Gets or sets the underlying disposable. After disposal, the result of getting this property is undefined. + + Thrown if the has already been assigned to. + + + + Disposes the underlying disposable. + + + + + Represents a group of disposable resources that are disposed together. + + + + + Creates a new group containing two disposable resources that are disposed together. + + The first disposable resource to add to the group. + The second disposable resource to add to the group. + Group of disposable resources that are disposed together. + + + + Creates a new group of disposable resources that are disposed together. + + Disposable resources to add to the group. + Group of disposable resources that are disposed together. + + + + Creates a group of disposable resources that are disposed together + and without copying or checking for nulls inside the group. + + The array of disposables that is trusted + to not contain nulls and gives no need to defensively copy it. + Group of disposable resources that are disposed together. + + + + Creates a new group of disposable resources that are disposed together. + + Disposable resources to add to the group. + Group of disposable resources that are disposed together. + + + + Disposes all disposables in the group. + + + + + Gets a value that indicates whether the object is disposed. + + + + + A stable composite that doesn't do defensive copy of + the input disposable array nor checks it for null. + + + + + The System.Reactive.Disposables namespace contains interfaces and classes that provide a compositional set of constructs used to deal with resource and subscription + management in Reactive Extensions. Those types are used extensively within the implementation of Reactive Extensions and are useful when writing custom query operators or + schedulers. + + + + + Provides access to the platform enlightenments used by other Rx libraries to improve system performance and + runtime efficiency. While Rx can run without platform enlightenments loaded, it's recommended to deploy the + System.Reactive.PlatformServices assembly with your application and call during + application startup to ensure enlightenments are properly loaded. + + + + + Ensures that the calling assembly has a reference to the System.Reactive.PlatformServices assembly with + platform enlightenments. If no reference is made from the user code, it's possible for the build process + to drop the deployment of System.Reactive.PlatformServices, preventing its runtime discovery. + + + true if the loaded enlightenment provider matches the provided defined in the current assembly; false + otherwise. When a custom enlightenment provider is installed by the host, false will be returned. + + + + + (Infrastructure) Provider for platform-specific framework enlightenments. + + + + + (Infrastructure) Tries to gets the specified service. + + Service type. + Optional set of arguments. + Service instance or null if not found. + + + + (Infrastructure) Services to rethrow exceptions. + + + This type is used by the Rx infrastructure and not meant for public consumption or implementation. + No guarantees are made about forward compatibility of the type's functionality and its usage. + + + + + Rethrows the specified exception. + + Exception to rethrow. + + + + (Infrastructure) Provides access to the host's lifecycle management services. + + + + + Event that gets raised when the host suspends the application. + + + + + Event that gets raised when the host resumes the application. + + + + + Adds a reference to the host lifecycle manager, causing it to be sending notifications. + + + + + Removes a reference to the host lifecycle manager, causing it to stop sending notifications + if the removed reference was the last one. + + + + + (Infrastructure) Provides notifications about the host's lifecycle events. + + + + + Event that gets raised when the host suspends. + + + + + Event that gets raised when the host resumes. + + + + + (Infrastructure) Event arguments for host suspension events. + + + + + (Infrastructure) Event arguments for host resumption events. + + + + + (Infrastructure) Interface for enlightenment providers. + + + This type is used by the Rx infrastructure and not meant for public consumption or implementation. + No guarantees are made about forward compatibility of the type's functionality and its usage. + + + + + (Infrastructure) Tries to gets the specified service. + + Service type. + Optional set of arguments. + Service instance or null if not found. + + + + (Infrastructure) Provider for platform-specific framework enlightenments. + + + This type is used by the Rx infrastructure and not meant for public consumption or implementation. + + + + + (Infrastructure) Gets the current enlightenment provider. If none is loaded yet, accessing this property triggers provider resolution. + + + This member is used by the Rx infrastructure and not meant for public consumption or implementation. + + + + + (Infrastructure) Provides access to local system clock services. + + + This type is used by the Rx infrastructure and not meant for public consumption or implementation. + No guarantees are made about forward compatibility of the type's functionality and its usage. + + + + + Gets the local system clock time. + + + + + Adds a reference to the system clock monitor, causing it to be sending notifications. + + Thrown when the system doesn't support sending clock change notifications. + + + + Removes a reference to the system clock monitor, causing it to stop sending notifications + if the removed reference was the last one. + + + + + (Infrastructure) Provides access to the local system clock. + + + This type is used by the Rx infrastructure and not meant for public consumption or implementation. + No guarantees are made about forward compatibility of the type's functionality and its usage. + + + + + Gets the current time. + + + + + (Infrastructure) Provides a mechanism to notify local schedulers about system clock changes. + + + This type is used by the Rx infrastructure and not meant for public consumption or implementation. + No guarantees are made about forward compatibility of the type's functionality and its usage. + + + + + Event that gets raised when a system clock change is detected. + + + + + (Infrastructure) Event arguments for system clock change notifications. + + + This type is used by the Rx infrastructure and not meant for public consumption or implementation. + No guarantees are made about forward compatibility of the type's functionality and its usage. + + + + + Creates a new system clock notification object with unknown old and new times. + + + + + Creates a new system clock notification object with the specified old and new times. + + Time before the system clock changed, or DateTimeOffset.MinValue if not known. + Time after the system clock changed, or DateTimeOffset.MaxValue if not known. + + + + Gets the time before the system clock changed, or DateTimeOffset.MinValue if not known. + + + + + Gets the time after the system clock changed, or DateTimeOffset.MaxValue if not known. + + + + + (Infrastructure) Provides access to the local system clock. + + + + + Gets the current time. + + + + + (Infrastructure) Monitors for system clock changes based on a periodic timer. + + + + + Use the Unix milliseconds for the current time + so it can be atomically read/written without locking. + + + + + Creates a new monitor for system clock changes with the specified polling frequency. + + Polling frequency for system clock changes. + + + + Event that gets raised when a system clock change is detected. + + + + + The System.Reactive.PlatformServices namespace contains interfaces and classes used by the runtime infrastructure of Reactive Extensions. + Those are not intended to be used directly from user code and are subject to change in future releases of the product. + + + + + Represents a .NET event invocation consisting of the weakly typed object that raised the event and the data that was generated by the event. + + The type of the event data generated by the event. + + + + Creates a new data representation instance of a .NET event invocation with the given sender and event data. + + The sender object that raised the event. + The event data that was generated by the event. + + + + Represents a .NET event invocation consisting of the strongly typed object that raised the event and the data that was generated by the event. + + The type of the sender that raised the event. + The type of the event data generated by the event. + + + + Creates a new data representation instance of a .NET event invocation with the given sender and event data. + + The sender object that raised the event. + The event data that was generated by the event. + + + + Gets the sender object that raised the event. + + + + + Gets the event data that was generated by the event. + + + + + Deconstructs the event pattern value into a sender and event data. + + The sender object that raised the event. + The event data that was generated by the event. + + + + Determines whether the current object represents the same event as a specified object. + + An object to compare to the current object. + true if both objects represent the same event; otherwise, false. + + + + Determines whether the specified System.Object is equal to the current . + + The System.Object to compare with the current . + true if the specified System.Object is equal to the current ; otherwise, false. + + + + Returns the hash code for the current instance. + + A hash code for the current instance. + + + + Determines whether two specified objects represent the same event. + + The first to compare, or null. + The second to compare, or null. + true if both objects represent the same event; otherwise, false. + + + + Determines whether two specified objects represent a different event. + + The first to compare, or null. + The second to compare, or null. + true if both objects don't represent the same event; otherwise, false. + + + + Base class for classes that expose an observable sequence as a well-known event pattern (sender, event arguments). + Contains functionality to maintain a map of event handler delegates to observable sequence subscriptions. Subclasses + should only add an event with custom add and remove methods calling into the base class's operations. + + The type of the sender that raises the event. + The type of the event data generated by the event. + + + + Creates a new event pattern source. + + Source sequence to expose as an event. + Delegate used to invoke the event for each element of the sequence. + or is null. + + + + Adds the specified event handler, causing a subscription to the underlying source. + + Event handler to add. The same delegate should be passed to the operation in order to remove the event handler. + Invocation delegate to raise the event in the derived class. + or is null. + + + + Removes the specified event handler, causing a disposal of the corresponding subscription to the underlying source that was created during the operation. + + Event handler to remove. This should be the same delegate as one that was passed to the operation. + is null. + + + + Marks the program elements that are experimental. This class cannot be inherited. + + + + + Represents a .NET event invocation consisting of the strongly typed object that raised the event and the data that was generated by the event. + + + The type of the sender that raised the event. + This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. + + + The type of the event data generated by the event. + This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. + + + + + Gets the sender object that raised the event. + + + + + Gets the event data that was generated by the event. + + + + + Represents a data stream signaling its elements by means of an event. + + The type of the event data generated by the event. + + + + Event signaling the next element in the data stream. + + + + + Represents a data stream signaling its elements by means of an event. + + + The type of the event data generated by the event. + This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. + + + + + Event signaling the next element in the data stream. + + + + + Utility methods to handle lock-free combining of Exceptions + as well as hosting a terminal-exception indicator for + lock-free termination support. + + + + + The singleton instance of the exception indicating a terminal state, + DO NOT LEAK or signal this via OnError! + + + + + Tries to atomically set the Exception on the given field if it is + still null. + + The target field to try to set atomically. + The exception to set, not null (not verified). + True if the operation succeeded, false if the target was not null. + + + + Utility methods for dealing with serializing OnXXX signals + for an IObserver where concurrent OnNext is still not allowed + but concurrent OnError/OnCompleted may happen. + This serialization case is generally lower overhead than + a full SerializedObserver wrapper and doesn't need + allocation. + + + + + Signals the given item to the observer in a serialized fashion + allowing a concurrent OnError or OnCompleted emission to be delayed until + the observer.OnNext returns. + Do not call OnNext from multiple threads as it may lead to ignored items. + Use a full SerializedObserver wrapper for merging multiple sequences. + + The element type of the observer. + The observer to signal events in a serialized fashion. + The item to signal. + Indicates there is an emission going on currently. + The field containing an error or terminal indicator. + + + + Signals the given exception to the observer. If there is a concurrent + OnNext emission is happening, saves the exception into the given field + otherwise to be picked up by . + This method can be called concurrently with itself and the other methods of this + helper class but only one terminal signal may actually win. + + The element type of the observer. + The observer to signal events in a serialized fashion. + The exception to signal sooner or later. + Indicates there is an emission going on currently. + The field containing an error or terminal indicator. + + + + Signals OnCompleted on the observer. If there is a concurrent + OnNext emission happening, the error field will host a special + terminal exception signal to be picked up by once it finishes with OnNext and signal the + OnCompleted as well. + This method can be called concurrently with itself and the other methods of this + helper class but only one terminal signal may actually win. + + The element type of the observer. + The observer to signal events in a serialized fashion. + Indicates there is an emission going on currently. + The field containing an error or terminal indicator. + + + + Base interface for observers that can dispose of a resource on a terminal notification + or when disposed itself. + + + + + + Interface with variance annotation; allows for better type checking when detecting capabilities in SubscribeSafe. + + Type of the resulting sequence's elements. + + + + Base class for implementation of query operators, providing performance benefits over the use of Observable.Create. + + Type of the resulting sequence's elements. + + + + Publicly visible Subscribe method. + + Observer to send notifications on. The implementation of a producer must ensure the correct message grammar on the observer. + IDisposable to cancel the subscription. This causes the underlying sink to be notified of unsubscription, causing it to prevent further messages from being sent to the observer. + + + + Core implementation of the query operator, called upon a new subscription to the producer object. + + Observer to send notifications on. The implementation of a producer must ensure the correct message grammar on the observer. + Disposable representing all the resources and/or subscriptions the operator uses to process events. + The observer passed in to this method is not protected using auto-detach behavior upon an OnError or OnCompleted call. The implementation must ensure proper resource disposal and enforce the message grammar. + + + + Publicly visible Subscribe method. + + Observer to send notifications on. The implementation of a producer must ensure the correct message grammar on the observer. + IDisposable to cancel the subscription. This causes the underlying sink to be notified of unsubscription, causing it to prevent further messages from being sent to the observer. + + + + Core implementation of the query operator, called upon a new subscription to the producer object. + + The sink object. + + + + Represents an observable sequence of elements that have a common key. + + + The type of the key shared by all elements in the group. + This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. + + + The type of the elements in the group. + This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. + + + + + Gets the common key. + + + + + Provides functionality to evaluate queries against a specific data source wherein the type of the data is known. + + + The type of the data in the data source. + This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. + + + + + Provides functionality to evaluate queries against a specific data source wherein the type of the data is not specified. + + + + + Gets the type of the element(s) that are returned when the expression tree associated with this instance of IQbservable is executed. + + + + + Gets the expression tree that is associated with the instance of IQbservable. + + + + + Gets the query provider that is associated with this data source. + + + + + Defines methods to create and execute queries that are described by an IQbservable object. + + + + + Constructs an object that can evaluate the query represented by a specified expression tree. + + The type of the elements of the that is returned. + Expression tree representing the query. + IQbservable object that can evaluate the given query expression. + + + + Internal interface describing the LINQ to Events query language. + + + + + Internal interface describing the LINQ to Events query language. + + + + + Attribute applied to static classes providing expression tree forms of query methods, + mapping those to the corresponding methods for local query execution on the specified + target class type. + + + + + Creates a new mapping to the specified local execution query method implementation type. + + Type with query methods for local execution. + + + + Gets the type with the implementation of local query methods. + + + + + Provides a set of static methods for writing in-memory queries over observable sequences. + + + + + Applies an accumulator function over an observable sequence, returning the result of the aggregation as a single element in the result sequence. The specified seed value is used as the initial accumulator value. + For aggregation behavior with incremental intermediate results, see . + + The type of the elements in the source sequence. + The type of the result of the aggregation. + An observable sequence to aggregate over. + The initial accumulator value. + An accumulator function to be invoked on each element. + An observable sequence containing a single element with the final accumulator value. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Applies an accumulator function over an observable sequence, returning the result of the aggregation as a single element in the result sequence. The specified seed value is used as the initial accumulator value, + and the specified result selector function is used to select the result value. + + The type of the elements in the source sequence. + The type of the accumulator value. + The type of the resulting value. + An observable sequence to aggregate over. + The initial accumulator value. + An accumulator function to be invoked on each element. + A function to transform the final accumulator value into the result value. + An observable sequence containing a single element with the final accumulator value. + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Applies an accumulator function over an observable sequence, returning the result of the aggregation as a single element in the result sequence. + For aggregation behavior with incremental intermediate results, see . + + The type of the elements in the source sequence and the result of the aggregation. + An observable sequence to aggregate over. + An accumulator function to be invoked on each element. + An observable sequence containing a single element with the final accumulator value. + or is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Determines whether all elements of an observable sequence satisfy a condition. + + The type of the elements in the source sequence. + An observable sequence whose elements to apply the predicate to. + A function to test each element for a condition. + An observable sequence containing a single element determining whether all elements in the source sequence pass the test in the specified predicate. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Determines whether an observable sequence contains any elements. + + The type of the elements in the source sequence. + An observable sequence to check for non-emptiness. + An observable sequence containing a single element determining whether the source sequence contains any elements. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Determines whether any element of an observable sequence satisfies a condition. + + The type of the elements in the source sequence. + An observable sequence whose elements to apply the predicate to. + A function to test each element for a condition. + An observable sequence containing a single element determining whether any elements in the source sequence pass the test in the specified predicate. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values. + + A sequence of values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values. + is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values. + + A sequence of values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values. + is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values. + + A sequence of values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values. + is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values. + + A sequence of values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values. + is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values. + + A sequence of values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values. + is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values. + + A sequence of nullable values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values. + + A sequence of nullable values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values. + + A sequence of nullable values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values. + + A sequence of nullable values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + (Asynchronous) The sum of the elements in the source sequence is larger than . + + + + Computes the average of an observable sequence of nullable values. + + A sequence of nullable values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values. + or is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values. + or is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values. + or is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values. + or is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values. + or is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + or is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + or is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + or is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + or is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + or is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Determines whether an observable sequence contains a specified element by using the default equality comparer. + + The type of the elements in the source sequence. + An observable sequence in which to locate a value. + The value to locate in the source sequence. + An observable sequence containing a single element determining whether the source sequence contains an element that has the specified value. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Determines whether an observable sequence contains a specified element by using a specified System.Collections.Generic.IEqualityComparer{T}. + + The type of the elements in the source sequence. + An observable sequence in which to locate a value. + The value to locate in the source sequence. + An equality comparer to compare elements. + An observable sequence containing a single element determining whether the source sequence contains an element that has the specified value. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns an observable sequence containing an that represents the total number of elements in an observable sequence. + + The type of the elements in the source sequence. + An observable sequence that contains elements to be counted. + An observable sequence containing a single element with the number of elements in the input sequence. + is null. + (Asynchronous) The number of elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns an observable sequence containing an that represents how many elements in the specified observable sequence satisfy a condition. + + The type of the elements in the source sequence. + An observable sequence that contains elements to be counted. + A function to test each element for a condition. + An observable sequence containing a single element with a number that represents how many elements in the input sequence satisfy the condition in the predicate function. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the element at a specified index in a sequence. + + The type of the elements in the source sequence. + Observable sequence to return the element from. + The zero-based index of the element to retrieve. + An observable sequence that produces the element at the specified position in the source sequence. + is null. + is less than zero. + (Asynchronous) is greater than or equal to the number of elements in the source sequence. + + + + Returns the element at a specified index in a sequence or a default value if the index is out of range. + + The type of the elements in the source sequence. + Observable sequence to return the element from. + The zero-based index of the element to retrieve. + An observable sequence that produces the element at the specified position in the source sequence, or a default value if the index is outside the bounds of the source sequence. + is null. + is less than zero. + + + + Returns the first element of an observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + Sequence containing the first element in the observable sequence. + is null. + (Asynchronous) The source sequence is empty. + + + + Returns the first element of an observable sequence that satisfies the condition in the predicate. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + Sequence containing the first element in the observable sequence that satisfies the condition in the predicate. + or is null. + (Asynchronous) No element satisfies the condition in the predicate. -or- The source sequence is empty. + + + + Returns the first element of an observable sequence, or a default value if no such element exists. + + The type of the elements in the source sequence. + Source observable sequence. + Sequence containing the first element in the observable sequence, or a default value if no such element exists. + is null. + + + + Returns the first element of an observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + Sequence containing the first element in the observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. + or is null. + + + + Determines whether an observable sequence is empty. + + The type of the elements in the source sequence. + An observable sequence to check for emptiness. + An observable sequence containing a single element determining whether the source sequence is empty. + is null. + + + + Returns the last element of an observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + Sequence containing the last element in the observable sequence. + is null. + (Asynchronous) The source sequence is empty. + + + + Returns the last element of an observable sequence that satisfies the condition in the predicate. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + Sequence containing the last element in the observable sequence that satisfies the condition in the predicate. + or is null. + (Asynchronous) No element satisfies the condition in the predicate. -or- The source sequence is empty. + + + + Returns the last element of an observable sequence, or a default value if no such element exists. + + The type of the elements in the source sequence. + Source observable sequence. + Sequence containing the last element in the observable sequence, or a default value if no such element exists. + is null. + + + + Returns the last element of an observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + Sequence containing the last element in the observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. + or is null. + + + + Returns an observable sequence containing an that represents the total number of elements in an observable sequence. + + The type of the elements in the source sequence. + An observable sequence that contains elements to be counted. + An observable sequence containing a single element with the number of elements in the input sequence. + is null. + (Asynchronous) The number of elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns an observable sequence containing an that represents how many elements in the specified observable sequence satisfy a condition. + + The type of the elements in the source sequence. + An observable sequence that contains elements to be counted. + A function to test each element for a condition. + An observable sequence containing a single element with a number that represents how many elements in the input sequence satisfy the condition in the predicate function. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum element in an observable sequence. + + The type of the elements in the source sequence. + An observable sequence to determine the maximum element of. + An observable sequence containing a single element with the maximum element in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence according to the specified comparer. + + The type of the elements in the source sequence. + An observable sequence to determine the maximum element of. + Comparer used to compare elements. + An observable sequence containing a single element with the maximum element in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of values. + + A sequence of values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of values. + + A sequence of values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of values. + + A sequence of values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of values. + + A sequence of values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of values. + + A sequence of values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum value. + + The type of the elements in the source sequence. + The type of the objects derived from the elements in the source sequence to determine the maximum of. + An observable sequence to determine the minimum element of. + A transform function to apply to each element. + An observable sequence containing a single element with the value that corresponds to the maximum element in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum value according to the specified comparer. + + The type of the elements in the source sequence. + The type of the objects derived from the elements in the source sequence to determine the maximum of. + An observable sequence to determine the minimum element of. + A transform function to apply to each element. + Comparer used to compare elements. + An observable sequence containing a single element with the value that corresponds to the maximum element in the source sequence. + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the elements in an observable sequence with the maximum key value. + + The type of the elements in the source sequence. + The type of the key computed for each element in the source sequence. + An observable sequence to get the maximum elements for. + Key selector function. + An observable sequence containing a list of zero or more elements that have a maximum key value. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the elements in an observable sequence with the maximum key value according to the specified comparer. + + The type of the elements in the source sequence. + The type of the key computed for each element in the source sequence. + An observable sequence to get the maximum elements for. + Key selector function. + Comparer used to compare key values. + An observable sequence containing a list of zero or more elements that have a maximum key value. + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum element in an observable sequence. + + The type of the elements in the source sequence. + An observable sequence to determine the minimum element of. + An observable sequence containing a single element with the minimum element in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum element in an observable sequence according to the specified comparer. + + The type of the elements in the source sequence. + An observable sequence to determine the minimum element of. + Comparer used to compare elements. + An observable sequence containing a single element with the minimum element in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of values. + + A sequence of values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of values. + + A sequence of values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of values. + + A sequence of values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of values. + + A sequence of values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of values. + + A sequence of values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum value. + + The type of the elements in the source sequence. + The type of the objects derived from the elements in the source sequence to determine the minimum of. + An observable sequence to determine the minimum element of. + A transform function to apply to each element. + An observable sequence containing a single element with the value that corresponds to the minimum element in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum value according to the specified comparer. + + The type of the elements in the source sequence. + The type of the objects derived from the elements in the source sequence to determine the minimum of. + An observable sequence to determine the minimum element of. + A transform function to apply to each element. + Comparer used to compare elements. + An observable sequence containing a single element with the value that corresponds to the minimum element in the source sequence. + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the elements in an observable sequence with the minimum key value. + + The type of the elements in the source sequence. + The type of the key computed for each element in the source sequence. + An observable sequence to get the minimum elements for. + Key selector function. + An observable sequence containing a list of zero or more elements that have a minimum key value. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the elements in an observable sequence with the minimum key value according to the specified comparer. + + The type of the elements in the source sequence. + The type of the key computed for each element in the source sequence. + An observable sequence to get the minimum elements for. + Key selector function. + Comparer used to compare key values. + An observable sequence containing a list of zero or more elements that have a minimum key value. + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Determines whether two sequences are equal by comparing the elements pairwise. + + The type of the elements in the source sequence. + First observable sequence to compare. + Second observable sequence to compare. + An observable sequence that contains a single element which indicates whether both sequences are of equal length and their corresponding elements are equal according to the default equality comparer for their type. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Determines whether two sequences are equal by comparing the elements pairwise using a specified equality comparer. + + The type of the elements in the source sequence. + First observable sequence to compare. + Second observable sequence to compare. + Comparer used to compare elements of both sequences. + An observable sequence that contains a single element which indicates whether both sequences are of equal length and their corresponding elements are equal according to the specified equality comparer. + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Determines whether an observable and enumerable sequence are equal by comparing the elements pairwise. + + The type of the elements in the source sequence. + First observable sequence to compare. + Second observable sequence to compare. + An observable sequence that contains a single element which indicates whether both sequences are of equal length and their corresponding elements are equal according to the default equality comparer for their type. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Determines whether an observable and enumerable sequence are equal by comparing the elements pairwise using a specified equality comparer. + + The type of the elements in the source sequence. + First observable sequence to compare. + Second observable sequence to compare. + Comparer used to compare elements of both sequences. + An observable sequence that contains a single element which indicates whether both sequences are of equal length and their corresponding elements are equal according to the specified equality comparer. + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the only element of an observable sequence, and reports an exception if there is not exactly one element in the observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + Sequence containing the single element in the observable sequence. + is null. + (Asynchronous) The source sequence contains more than one element. -or- The source sequence is empty. + + + + Returns the only element of an observable sequence that satisfies the condition in the predicate, and reports an exception if there is not exactly one element in the observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + Sequence containing the single element in the observable sequence that satisfies the condition in the predicate. + or is null. + (Asynchronous) No element satisfies the condition in the predicate. -or- More than one element satisfies the condition in the predicate. -or- The source sequence is empty. + + + + Returns the only element of an observable sequence, or a default value if the observable sequence is empty; this method reports an exception if there is more than one element in the observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + Sequence containing the single element in the observable sequence, or a default value if no such element exists. + is null. + (Asynchronous) The source sequence contains more than one element. + + + + Returns the only element of an observable sequence that matches the predicate, or a default value if no such element exists; this method reports an exception if there is more than one element in the observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + Sequence containing the single element in the observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. + or is null. + (Asynchronous) The sequence contains more than one element that satisfies the condition in the predicate. + + + + Computes the sum of a sequence of values. + + A sequence of values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values. + + A sequence of values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values. + + A sequence of values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + is null. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values. + + A sequence of values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + is null. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values. + + A sequence of values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + is null. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values. + + A sequence of nullable values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values. + + A sequence of nullable values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values. + + A sequence of nullable values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + is null. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values. + + A sequence of nullable values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + is null. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values. + + A sequence of nullable values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + is null. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + or is null. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + or is null. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + or is null. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + or is null. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + or is null. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + or is null. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates an array from an observable sequence. + + The type of the elements in the source sequence. + The source observable sequence to get an array of elements for. + An observable sequence containing a single element with an array containing all the elements of the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a dictionary from an observable sequence according to a specified key selector function. + + The type of the elements in the source sequence. + The type of the dictionary key computed for each element in the source sequence. + An observable sequence to create a dictionary for. + A function to extract a key from each element. + An observable sequence containing a single element with a dictionary mapping unique key values onto the corresponding source sequence's element. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a dictionary from an observable sequence according to a specified key selector function, and a comparer. + + The type of the elements in the source sequence. + The type of the dictionary key computed for each element in the source sequence. + An observable sequence to create a dictionary for. + A function to extract a key from each element. + An equality comparer to compare keys. + An observable sequence containing a single element with a dictionary mapping unique key values onto the corresponding source sequence's element. + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a dictionary from an observable sequence according to a specified key selector function, and an element selector function. + + The type of the elements in the source sequence. + The type of the dictionary key computed for each element in the source sequence. + The type of the dictionary value computed for each element in the source sequence. + An observable sequence to create a dictionary for. + A function to extract a key from each element. + A transform function to produce a result element value from each element. + An observable sequence containing a single element with a dictionary mapping unique key values onto the corresponding source sequence's element. + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a dictionary from an observable sequence according to a specified key selector function, a comparer, and an element selector function. + + The type of the elements in the source sequence. + The type of the dictionary key computed for each element in the source sequence. + The type of the dictionary value computed for each element in the source sequence. + An observable sequence to create a dictionary for. + A function to extract a key from each element. + A transform function to produce a result element value from each element. + An equality comparer to compare keys. + An observable sequence containing a single element with a dictionary mapping unique key values onto the corresponding source sequence's element. + or or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a list from an observable sequence. + + The type of the elements in the source sequence. + The source observable sequence to get a list of elements for. + An observable sequence containing a single element with a list containing all the elements of the source sequence. + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a lookup from an observable sequence according to a specified key selector function. + + The type of the elements in the source sequence. + The type of the lookup key computed for each element in the source sequence. + An observable sequence to create a lookup for. + A function to extract a key from each element. + An observable sequence containing a single element with a lookup mapping unique key values onto the corresponding source sequence's elements. + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a lookup from an observable sequence according to a specified key selector function, and a comparer. + + The type of the elements in the source sequence. + The type of the lookup key computed for each element in the source sequence. + An observable sequence to create a lookup for. + A function to extract a key from each element. + An equality comparer to compare keys. + An observable sequence containing a single element with a lookup mapping unique key values onto the corresponding source sequence's elements. + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a lookup from an observable sequence according to a specified key selector function, and an element selector function. + + The type of the elements in the source sequence. + The type of the lookup key computed for each element in the source sequence. + The type of the lookup value computed for each element in the source sequence. + An observable sequence to create a lookup for. + A function to extract a key from each element. + A transform function to produce a result element value from each element. + An observable sequence containing a single element with a lookup mapping unique key values onto the corresponding source sequence's elements. + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a lookup from an observable sequence according to a specified key selector function, a comparer, and an element selector function. + + The type of the elements in the source sequence. + The type of the lookup key computed for each element in the source sequence. + The type of the lookup value computed for each element in the source sequence. + An observable sequence to create a lookup for. + A function to extract a key from each element. + A transform function to produce a result element value from each element. + An equality comparer to compare keys. + An observable sequence containing a single element with a lookup mapping unique key values onto the corresponding source sequence's elements. + or or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The type of the twelfth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The type of the twelfth argument passed to the begin delegate. + The type of the thirteenth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The type of the twelfth argument passed to the begin delegate. + The type of the thirteenth argument passed to the begin delegate. + The type of the fourteenth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The type of the twelfth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The type of the twelfth argument passed to the begin delegate. + The type of the thirteenth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The type of the twelfth argument passed to the begin delegate. + The type of the thirteenth argument passed to the begin delegate. + The type of the fourteenth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Invokes the specified function asynchronously, surfacing the result through an observable sequence. + + The type of the result returned by the function. + Function to run asynchronously. + An observable sequence exposing the function's result value, or an exception. + is null. + + + The function is called immediately, not during the subscription of the resulting sequence. + Multiple subscriptions to the resulting sequence can observe the function's result. + + + + + + Invokes the specified function asynchronously on the specified scheduler, surfacing the result through an observable sequence + + The type of the result returned by the function. + Function to run asynchronously. + Scheduler to run the function on. + An observable sequence exposing the function's result value, or an exception. + or is null. + + + The function is called immediately, not during the subscription of the resulting sequence. + Multiple subscriptions to the resulting sequence can observe the function's result. + + + + + + Invokes the asynchronous function, surfacing the result through an observable sequence. + + The type of the result returned by the asynchronous function. + Asynchronous function to run. + An observable sequence exposing the function's result value, or an exception. + is null. + + + The function is started immediately, not during the subscription of the resulting sequence. + Multiple subscriptions to the resulting sequence can observe the function's result. + + + + + + Invokes the asynchronous function, surfacing the result through an observable sequence. + + The type of the result returned by the asynchronous function. + Asynchronous function to run. + Scheduler on which to notify observers. + An observable sequence exposing the function's result value, or an exception. + is null or is null. + + + The function is started immediately, not during the subscription of the resulting sequence. + Multiple subscriptions to the resulting sequence can observe the function's result. + + + + + + Invokes the asynchronous function, surfacing the result through an observable sequence. + The CancellationToken is shared by all subscriptions on the resulting observable sequence. See the remarks section for more information. + + The type of the result returned by the asynchronous function. + Asynchronous function to run. + An observable sequence exposing the function's result value, or an exception. + is null. + + + The function is started immediately, not during the subscription of the resulting sequence. + Multiple subscriptions to the resulting sequence can observe the function's result. + + If any subscription to the resulting sequence is disposed, the CancellationToken is set. The observer associated to the disposed + subscription won't see the TaskCanceledException, but other observers will. You can protect against this using the Catch operator. + Be careful when handing out the resulting sequence because of this behavior. The most common use is to have a single subscription + to the resulting sequence, which controls the CancellationToken state. Alternatively, you can control subscription behavior using + multicast operators. + + + + + + + Invokes the asynchronous function, surfacing the result through an observable sequence. + The CancellationToken is shared by all subscriptions on the resulting observable sequence. See the remarks section for more information. + + The type of the result returned by the asynchronous function. + Asynchronous function to run. + Scheduler on which to notify observers. + An observable sequence exposing the function's result value, or an exception. + is null or is null. + + + The function is started immediately, not during the subscription of the resulting sequence. + Multiple subscriptions to the resulting sequence can observe the function's result. + + If any subscription to the resulting sequence is disposed, the CancellationToken is set. The observer associated to the disposed + subscription won't see the TaskCanceledException, but other observers will. You can protect against this using the Catch operator. + Be careful when handing out the resulting sequence because of this behavior. The most common use is to have a single subscription + to the resulting sequence, which controls the CancellationToken state. Alternatively, you can control subscription behavior using + multicast operators. + + + + + + + Invokes the action asynchronously, surfacing the result through an observable sequence. + + Action to run asynchronously. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + is null. + + + The action is called immediately, not during the subscription of the resulting sequence. + Multiple subscriptions to the resulting sequence can observe the action's outcome. + + + + + + Invokes the action asynchronously on the specified scheduler, surfacing the result through an observable sequence. + + Action to run asynchronously. + Scheduler to run the action on. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + or is null. + + + The action is called immediately, not during the subscription of the resulting sequence. + Multiple subscriptions to the resulting sequence can observe the action's outcome. + + + + + + Invokes the asynchronous action, surfacing the result through an observable sequence. + + Asynchronous action to run. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + is null. + + + The action is started immediately, not during the subscription of the resulting sequence. + Multiple subscriptions to the resulting sequence can observe the action's outcome. + + + + + + Invokes the asynchronous action, surfacing the result through an observable sequence. + + Asynchronous action to run. + Scheduler on which to notify observers. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + is null or is null. + + + The action is started immediately, not during the subscription of the resulting sequence. + Multiple subscriptions to the resulting sequence can observe the action's outcome. + + + + + + Invokes the asynchronous action, surfacing the result through an observable sequence. + The CancellationToken is shared by all subscriptions on the resulting observable sequence. See the remarks section for more information. + + Asynchronous action to run. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + is null. + + + The action is started immediately, not during the subscription of the resulting sequence. + Multiple subscriptions to the resulting sequence can observe the action's outcome. + + If any subscription to the resulting sequence is disposed, the CancellationToken is set. The observer associated to the disposed + subscription won't see the TaskCanceledException, but other observers will. You can protect against this using the Catch operator. + Be careful when handing out the resulting sequence because of this behavior. The most common use is to have a single subscription + to the resulting sequence, which controls the CancellationToken state. Alternatively, you can control subscription behavior using + multicast operators. + + + + + + + Invokes the asynchronous action, surfacing the result through an observable sequence. + The CancellationToken is shared by all subscriptions on the resulting observable sequence. See the remarks section for more information. + + Asynchronous action to run. + Scheduler on which to notify observers. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + is null or is null. + + + The action is started immediately, not during the subscription of the resulting sequence. + Multiple subscriptions to the resulting sequence can observe the action's outcome. + + If any subscription to the resulting sequence is disposed, the CancellationToken is set. The observer associated to the disposed + subscription won't see the TaskCanceledException, but other observers will. You can protect against this using the Catch operator. + Be careful when handing out the resulting sequence because of this behavior. The most common use is to have a single subscription + to the resulting sequence, which controls the CancellationToken state. Alternatively, you can control subscription behavior using + multicast operators. + + + + + + + Converts an asynchronous function into an observable sequence. Each subscription to the resulting sequence causes the function to be started. + + The type of the result returned by the asynchronous function. + Asynchronous function to convert. + An observable sequence exposing the result of invoking the function, or an exception. + is null. + + + + Converts an asynchronous function into an observable sequence. Each subscription to the resulting sequence causes the function to be started. + + The type of the result returned by the asynchronous function. + Asynchronous function to convert. + Scheduler on which to notify observers. + An observable sequence exposing the result of invoking the function, or an exception. + is null or is null. + + + + Converts an asynchronous function into an observable sequence. Each subscription to the resulting sequence causes the function to be started. + The CancellationToken passed to the asynchronous function is tied to the observable sequence's subscription that triggered the function's invocation and can be used for best-effort cancellation. + + The type of the result returned by the asynchronous function. + Asynchronous function to convert. + An observable sequence exposing the result of invoking the function, or an exception. + is null. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous function will be signaled. + + + + Converts an asynchronous function into an observable sequence. Each subscription to the resulting sequence causes the function to be started. + The CancellationToken passed to the asynchronous function is tied to the observable sequence's subscription that triggered the function's invocation and can be used for best-effort cancellation. + + The type of the result returned by the asynchronous function. + Asynchronous function to convert. + Scheduler on which to notify observers. + An observable sequence exposing the result of invoking the function, or an exception. + is null or is null. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous function will be signaled. + + + + Converts an asynchronous action into an observable sequence. Each subscription to the resulting sequence causes the action to be started. + + Asynchronous action to convert. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + is null. + + + + Converts an asynchronous action into an observable sequence. Each subscription to the resulting sequence causes the action to be started. + + Asynchronous action to convert. + Scheduler on which to notify observers. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + is null or is null. + + + + Converts an asynchronous action into an observable sequence. Each subscription to the resulting sequence causes the action to be started. + The CancellationToken passed to the asynchronous action is tied to the observable sequence's subscription that triggered the action's invocation and can be used for best-effort cancellation. + + Asynchronous action to convert. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous function will be signaled. + is null. + + + + Converts an asynchronous action into an observable sequence. Each subscription to the resulting sequence causes the action to be started. + The CancellationToken passed to the asynchronous action is tied to the observable sequence's subscription that triggered the action's invocation and can be used for best-effort cancellation. + + Asynchronous action to convert. + Scheduler on which to notify observers. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous function will be signaled. + is null or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the fourteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the fourteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the fourteenth argument passed to the function. + The type of the fifteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the fourteenth argument passed to the function. + The type of the fifteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the fourteenth argument passed to the function. + The type of the fifteenth argument passed to the function. + The type of the sixteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the fourteenth argument passed to the function. + The type of the fifteenth argument passed to the function. + The type of the sixteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + The type of the fourteenth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + The type of the fourteenth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + The type of the fourteenth argument passed to the action. + The type of the fifteenth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + The type of the fourteenth argument passed to the action. + The type of the fifteenth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + The type of the fourteenth argument passed to the action. + The type of the fifteenth argument passed to the action. + The type of the sixteenth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + The type of the fourteenth argument passed to the action. + The type of the fifteenth argument passed to the action. + The type of the sixteenth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + or is null. + + + + Gets an awaiter that returns the last value of the observable sequence or throws an exception if the sequence is empty. + This operation subscribes to the observable sequence, making it hot. + + The type of the elements in the source sequence. + Source sequence to await. + Object that can be awaited. + is null. + + + + Gets an awaiter that returns the last value of the observable sequence or throws an exception if the sequence is empty. + This operation subscribes and connects to the observable sequence, making it hot. + + The type of the elements in the source sequence. + Source sequence to await. + Object that can be awaited. + is null. + + + + Gets an awaiter that returns the last value of the observable sequence or throws an exception if the sequence is empty. + This operation subscribes to the observable sequence, making it hot. The supplied CancellationToken can be used to cancel the subscription. + + The type of the elements in the source sequence. + Source sequence to await. + Cancellation token. + Object that can be awaited. + is null. + + + + Gets an awaiter that returns the last value of the observable sequence or throws an exception if the sequence is empty. + This operation subscribes and connects to the observable sequence, making it hot. The supplied CancellationToken can be used to cancel the subscription and connection. + + The type of the elements in the source sequence. + Source sequence to await. + Cancellation token. + Object that can be awaited. + is null. + + + + Multicasts the source sequence notifications through the specified subject to the resulting connectable observable. Upon connection of the + connectable observable, the subject is subscribed to the source exactly one, and messages are forwarded to the observers registered with + the connectable observable. For specializations with fixed subject types, see Publish, PublishLast, and Replay. + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be pushed into the specified subject. + Subject to push source elements into. + A connectable observable sequence that upon connection causes the source sequence to push results into the specified subject. + or is null. + + + + Multicasts the source sequence notifications through an instantiated subject into all uses of the sequence within a selector function. Each + subscription to the resulting sequence causes a separate multicast invocation, exposing the sequence resulting from the selector function's + invocation. For specializations with fixed subject types, see Publish, PublishLast, and Replay. + + The type of the elements in the source sequence. + The type of the elements produced by the intermediate subject. + The type of the elements in the result sequence. + Source sequence which will be multicasted in the specified selector function. + Factory function to create an intermediate subject through which the source sequence's elements will be multicast to the selector function. + Selector function which can use the multicasted source sequence subject to the policies enforced by the created subject. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + or or is null. + + + + Returns a connectable observable sequence that shares a single subscription to the underlying sequence. + This operator is a specialization of Multicast using a regular . + + The type of the elements in the source sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + A connectable observable sequence that shares a single subscription to the underlying sequence. + is null. + Subscribers will receive all notifications of the source from the time of the subscription on. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence. + This operator is a specialization of Multicast using a regular . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all notifications of the source from the time of the subscription on. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + or is null. + + + + + Returns a connectable observable sequence that shares a single subscription to the underlying sequence and starts with initialValue. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Initial value received by observers upon subscription. + A connectable observable sequence that shares a single subscription to the underlying sequence. + is null. + Subscribers will receive immediately receive the initial value, followed by all notifications of the source from the time of the subscription on. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence and starts with initialValue. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive immediately receive the initial value, followed by all notifications of the source from the time of the subscription on. + Initial value received by observers upon subscription. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + or is null. + + + + + Returns a connectable observable sequence that shares a single subscription to the underlying sequence containing only the last notification. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + A connectable observable sequence that shares a single subscription to the underlying sequence. + is null. + Subscribers will only receive the last notification of the source. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence containing only the last notification. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will only receive the last notification of the source. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + or is null. + + + + + Returns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + The type of the elements in the source sequence. + Connectable observable sequence. + An observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + is null. + + + + Returns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + The type of the elements in the source sequence. + Connectable observable sequence. + The time span that should be waited before possibly unsubscribing from the connectable observable. + An observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + is null. + + + + Returns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + The type of the elements in the source sequence. + Connectable observable sequence. + The time span that should be waited before possibly unsubscribing from the connectable observable. + The scheduler to use for delayed unsubscription. + An observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + is null. + + + + Returns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + The type of the elements in the source sequence. + Connectable observable sequence. + The minimum number of observers required to subscribe before establishing the connection to the source. + An observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + is null. + is non-positive. + + + + Returns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + The type of the elements in the source sequence. + Connectable observable sequence. + The minimum number of observers required to subscribe before establishing the connection to the source. + The time span that should be waited before possibly unsubscribing from the connectable observable. + An observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + is null. + is non-positive. + + + + Returns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + The type of the elements in the source sequence. + Connectable observable sequence. + The minimum number of observers required to subscribe before establishing the connection to the source. + The time span that should be waited before possibly unsubscribing from the connectable observable. + The scheduler to use for delayed unsubscription. + An observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + is null. + is non-positive. + + + + Automatically connect the upstream IConnectableObservable at most once when the + specified number of IObservers have subscribed to this IObservable. + + The type of the elements in the source sequence. + Connectable observable sequence. + The number of observers required to subscribe before the connection to source happens, non-positive value will trigger an immediate subscription. + If not null, the connection's IDisposable is provided to it. + An observable sequence that connects to the source at most once when the given number of observers have subscribed to it. + is null. + + + + Returns a connectable observable sequence that shares a single subscription to the underlying sequence replaying all notifications. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + A connectable observable sequence that shares a single subscription to the underlying sequence. + is null. + Subscribers will receive all the notifications of the source. + + + + + Returns a connectable observable sequence that shares a single subscription to the underlying sequence replaying all notifications. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Scheduler where connected observers will be invoked on. + A connectable observable sequence that shares a single subscription to the underlying sequence. + or is null. + Subscribers will receive all the notifications of the source. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying all notifications. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + or is null. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying all notifications. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source. + Scheduler where connected observers within the selector function will be invoked on. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + or or is null. + + + + + Returns a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum time length for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Maximum time length of the replay buffer. + A connectable observable sequence that shares a single subscription to the underlying sequence. + is null. + is less than TimeSpan.Zero. + Subscribers will receive all the notifications of the source subject to the specified replay buffer trimming policy. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum time length for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source subject to the specified replay buffer trimming policy. + Maximum time length of the replay buffer. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + or is null. + is less than TimeSpan.Zero. + + + + + Returns a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum time length for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Maximum time length of the replay buffer. + Scheduler where connected observers will be invoked on. + A connectable observable sequence that shares a single subscription to the underlying sequence. + or is null. + is less than TimeSpan.Zero. + Subscribers will receive all the notifications of the source subject to the specified replay buffer trimming policy. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum time length for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source subject to the specified replay buffer trimming policy. + Maximum time length of the replay buffer. + Scheduler where connected observers within the selector function will be invoked on. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + or or is null. + is less than TimeSpan.Zero. + + + + + Returns a connectable observable sequence that shares a single subscription to the underlying sequence replaying bufferSize notifications. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Maximum element count of the replay buffer. + Scheduler where connected observers will be invoked on. + A connectable observable sequence that shares a single subscription to the underlying sequence. + or is null. + is less than zero. + Subscribers will receive all the notifications of the source subject to the specified replay buffer trimming policy. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum element count for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source subject to the specified replay buffer trimming policy. + Maximum element count of the replay buffer. + Scheduler where connected observers within the selector function will be invoked on. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + or or is null. + is less than zero. + + + + + Returns a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum element count for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Maximum element count of the replay buffer. + A connectable observable sequence that shares a single subscription to the underlying sequence. + is null. + is less than zero. + Subscribers will receive all the notifications of the source subject to the specified replay buffer trimming policy. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum element count for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source subject to the specified replay buffer trimming policy. + Maximum element count of the replay buffer. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + or is null. + is less than zero. + + + + + Returns a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum time length and element count for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Maximum element count of the replay buffer. + Maximum time length of the replay buffer. + A connectable observable sequence that shares a single subscription to the underlying sequence. + is null. + is less than zero. + is less than TimeSpan.Zero. + Subscribers will receive all the notifications of the source subject to the specified replay buffer trimming policy. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum time length and element count for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source subject to the specified replay buffer trimming policy. + Maximum element count of the replay buffer. + Maximum time length of the replay buffer. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + or is null. + is less than zero. + is less than TimeSpan.Zero. + + + + + Returns a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum time length and element count for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Maximum element count of the replay buffer. + Maximum time length of the replay buffer. + Scheduler where connected observers will be invoked on. + A connectable observable sequence that shares a single subscription to the underlying sequence. + or is null. + is less than zero. + is less than TimeSpan.Zero. + Subscribers will receive all the notifications of the source subject to the specified replay buffer trimming policy. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum time length and element count for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source subject to the specified replay buffer trimming policy. + Maximum element count of the replay buffer. + Maximum time length of the replay buffer. + Scheduler where connected observers within the selector function will be invoked on. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + or or is null. + is less than zero. + is less than TimeSpan.Zero. + + + + + Produces an enumerable sequence of consecutive (possibly empty) chunks of the source sequence. + + The type of the elements in the source sequence. + Source observable sequence. + The enumerable sequence that returns consecutive (possibly empty) chunks upon each iteration. + is null. + + + + Produces an enumerable sequence that returns elements collected/aggregated from the source sequence between consecutive iterations. + + The type of the elements in the source sequence. + The type of the elements produced by the merge operation during collection. + Source observable sequence. + Factory to create a new collector object. + Merges a sequence element with the current collector. + The enumerable sequence that returns collected/aggregated elements from the source sequence upon each iteration. + or or is null. + + + + Produces an enumerable sequence that returns elements collected/aggregated from the source sequence between consecutive iterations. + + The type of the elements in the source sequence. + The type of the elements produced by the merge operation during collection. + Source observable sequence. + Factory to create the initial collector object. + Merges a sequence element with the current collector. + Factory to replace the current collector by a new collector. + The enumerable sequence that returns collected/aggregated elements from the source sequence upon each iteration. + or or or is null. + + + + Returns the first element of an observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + The first element in the observable sequence. + is null. + The source sequence is empty. + + + + + Returns the first element of an observable sequence that satisfies the condition in the predicate. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + The first element in the observable sequence that satisfies the condition in the predicate. + or is null. + No element satisfies the condition in the predicate. -or- The source sequence is empty. + + + + + Returns the first element of an observable sequence, or a default value if no such element exists. + + The type of the elements in the source sequence. + Source observable sequence. + The first element in the observable sequence, or a default value if no such element exists. + is null. + + + + + Returns the first element of an observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + The first element in the observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. + or is null. + + + + + Invokes an action for each element in the observable sequence, and blocks until the sequence is terminated. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke for each element in the observable sequence. + or is null. + Because of its blocking nature, this operator is mainly used for testing. + + + + Invokes an action for each element in the observable sequence, incorporating the element's index, and blocks until the sequence is terminated. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke for each element in the observable sequence. + or is null. + Because of its blocking nature, this operator is mainly used for testing. + + + + Returns an enumerator that enumerates all values of the observable sequence. + + The type of the elements in the source sequence. + An observable sequence to get an enumerator for. + The enumerator that can be used to enumerate over the elements in the observable sequence. + is null. + + + + Returns the last element of an observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + The last element in the observable sequence. + is null. + The source sequence is empty. + + + + + Returns the last element of an observable sequence that satisfies the condition in the predicate. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + The last element in the observable sequence that satisfies the condition in the predicate. + or is null. + No element satisfies the condition in the predicate. -or- The source sequence is empty. + + + + + Returns the last element of an observable sequence, or a default value if no such element exists. + + The type of the elements in the source sequence. + Source observable sequence. + The last element in the observable sequence, or a default value if no such element exists. + is null. + + + + + Returns the last element of an observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + The last element in the observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. + or is null. + + + + + Returns an enumerable sequence whose enumeration returns the latest observed element in the source observable sequence. + Enumerators on the resulting sequence will never produce the same element repeatedly, and will block until the next element becomes available. + + The type of the elements in the source sequence. + Source observable sequence. + The enumerable sequence that returns the last sampled element upon each iteration and subsequently blocks until the next element in the observable source sequence becomes available. + + + + Returns an enumerable sequence whose enumeration returns the most recently observed element in the source observable sequence, using the specified initial value in case no element has been sampled yet. + Enumerators on the resulting sequence never block and can produce the same element repeatedly. + + The type of the elements in the source sequence. + Source observable sequence. + Initial value that will be yielded by the enumerable sequence if no element has been sampled yet. + The enumerable sequence that returns the last sampled element upon each iteration. + is null. + + + + Returns an enumerable sequence whose enumeration blocks until the next element in the source observable sequence becomes available. + Enumerators on the resulting sequence will block until the next element becomes available. + + The type of the elements in the source sequence. + Source observable sequence. + The enumerable sequence that blocks upon each iteration until the next element in the observable source sequence becomes available. + is null. + + + + Returns the only element of an observable sequence, and throws an exception if there is not exactly one element in the observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + The single element in the observable sequence. + is null. + The source sequence contains more than one element. -or- The source sequence is empty. + + + + + Returns the only element of an observable sequence that satisfies the condition in the predicate, and throws an exception if there is not exactly one element matching the predicate in the observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + The single element in the observable sequence that satisfies the condition in the predicate. + or is null. + No element satisfies the condition in the predicate. -or- More than one element satisfies the condition in the predicate. -or- The source sequence is empty. + + + + + Returns the only element of an observable sequence, or a default value if the observable sequence is empty; this method throws an exception if there is more than one element in the observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + The single element in the observable sequence, or a default value if no such element exists. + is null. + The source sequence contains more than one element. + + + + + Returns the only element of an observable sequence that satisfies the condition in the predicate, or a default value if no such element exists; this method throws an exception if there is more than one element matching the predicate in the observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + The single element in the observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. + or is null. + The sequence contains more than one element that satisfies the condition in the predicate. + + + + + Waits for the observable sequence to complete and returns the last element of the sequence. + If the sequence terminates with an OnError notification, the exception is thrown. + + The type of the elements in the source sequence. + Source observable sequence. + The last element in the observable sequence. + is null. + The source sequence is empty. + + + + Wraps the source sequence in order to run its observer callbacks on the specified scheduler. + + The type of the elements in the source sequence. + Source sequence. + Scheduler to notify observers on. + The source sequence whose observations happen on the specified scheduler. + or is null. + + This only invokes observer callbacks on a scheduler. In case the subscription and/or unsubscription actions have side-effects + that require to be run on a scheduler, use . + + + + + Wraps the source sequence in order to run its observer callbacks on the specified synchronization context. + + The type of the elements in the source sequence. + Source sequence. + Synchronization context to notify observers on. + The source sequence whose observations happen on the specified synchronization context. + or is null. + + This only invokes observer callbacks on a synchronization context. In case the subscription and/or unsubscription actions have side-effects + that require to be run on a synchronization context, use . + + + + + Wraps the source sequence in order to run its subscription and unsubscription logic on the specified scheduler. This operation is not commonly used; + see the remarks section for more information on the distinction between SubscribeOn and ObserveOn. + + The type of the elements in the source sequence. + Source sequence. + Scheduler to perform subscription and unsubscription actions on. + The source sequence whose subscriptions and unsubscriptions happen on the specified scheduler. + or is null. + + This only performs the side-effects of subscription and unsubscription on the specified scheduler. In order to invoke observer + callbacks on a scheduler, use . + + + + + Wraps the source sequence in order to run its subscription and unsubscription logic on the specified synchronization context. This operation is not commonly used; + see the remarks section for more information on the distinction between SubscribeOn and ObserveOn. + + The type of the elements in the source sequence. + Source sequence. + Synchronization context to perform subscription and unsubscription actions on. + The source sequence whose subscriptions and unsubscriptions happen on the specified synchronization context. + or is null. + + This only performs the side-effects of subscription and unsubscription on the specified synchronization context. In order to invoke observer + callbacks on a synchronization context, use . + + + + + Synchronizes the observable sequence such that observer notifications cannot be delivered concurrently. + This overload is useful to "fix" an observable sequence that exhibits concurrent callbacks on individual observers, which is invalid behavior for the query processor. + + The type of the elements in the source sequence. + Source sequence. + The source sequence whose outgoing calls to observers are synchronized. + is null. + + It's invalid behavior - according to the observer grammar - for a sequence to exhibit concurrent callbacks on a given observer. + This operator can be used to "fix" a source that doesn't conform to this rule. + + + + + Synchronizes the observable sequence such that observer notifications cannot be delivered concurrently, using the specified gate object. + This overload is useful when writing n-ary query operators, in order to prevent concurrent callbacks from different sources by synchronizing on a common gate object. + + The type of the elements in the source sequence. + Source sequence. + Gate object to synchronize each observer call on. + The source sequence whose outgoing calls to observers are synchronized on the given gate object. + or is null. + + + + Subscribes an observer to an enumerable sequence. + + The type of the elements in the source sequence. + Enumerable sequence to subscribe to. + Observer that will receive notifications from the enumerable sequence. + Disposable object that can be used to unsubscribe the observer from the enumerable + or is null. + + + + Subscribes an observer to an enumerable sequence, using the specified scheduler to run the enumeration loop. + + The type of the elements in the source sequence. + Enumerable sequence to subscribe to. + Observer that will receive notifications from the enumerable sequence. + Scheduler to perform the enumeration on. + Disposable object that can be used to unsubscribe the observer from the enumerable + or or is null. + + + + Converts an observable sequence to an enumerable sequence. + + The type of the elements in the source sequence. + An observable sequence to convert to an enumerable sequence. + The enumerable sequence containing the elements in the observable sequence. + is null. + + + + Exposes an observable sequence as an object with an -based .NET event. + + Observable source sequence. + The event source object. + is null. + + + + Exposes an observable sequence as an object with an -based .NET event. + + The type of the elements in the source sequence. + Observable source sequence. + The event source object. + is null. + + + + Exposes an observable sequence as an object with a .NET event, conforming to the standard .NET event pattern. + + The type of the event data generated by the event. + Observable source sequence. + The event source object. + is null. + + + + Converts an enumerable sequence to an observable sequence. + + The type of the elements in the source sequence. + Enumerable sequence to convert to an observable sequence. + The observable sequence whose elements are pulled from the given enumerable sequence. + is null. + + + + Converts an enumerable sequence to an observable sequence, using the specified scheduler to run the enumeration loop. + + The type of the elements in the source sequence. + Enumerable sequence to convert to an observable sequence. + Scheduler to run the enumeration of the input sequence on. + The observable sequence whose elements are pulled from the given enumerable sequence. + or is null. + + + + Creates an observable sequence from a specified Subscribe method implementation. + + The type of the elements in the produced sequence. + Implementation of the resulting observable sequence's Subscribe method. + The observable sequence with the specified implementation for the Subscribe method. + is null. + + Use of this operator is preferred over manual implementation of the interface. In case + you need a type implementing rather than an anonymous implementation, consider using + the abstract base class. + + + + + Creates an observable sequence from a specified Subscribe method implementation. + + The type of the elements in the produced sequence. + Implementation of the resulting observable sequence's Subscribe method, returning an Action delegate that will be wrapped in an IDisposable. + The observable sequence with the specified implementation for the Subscribe method. + is null. + + Use of this operator is preferred over manual implementation of the interface. In case + you need a type implementing rather than an anonymous implementation, consider using + the abstract base class. + + + + + Creates an observable sequence from a specified cancellable asynchronous Subscribe method. + The CancellationToken passed to the asynchronous Subscribe method is tied to the returned disposable subscription, allowing best-effort cancellation. + + The type of the elements in the produced sequence. + Asynchronous method used to produce elements. + The observable sequence surfacing the elements produced by the asynchronous method. + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous subscribe function will be signaled. + + + + Creates an observable sequence from a specified asynchronous Subscribe method. + + The type of the elements in the produced sequence. + Asynchronous method used to produce elements. + The observable sequence surfacing the elements produced by the asynchronous method. + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + + + + Creates an observable sequence from a specified cancellable asynchronous Subscribe method. + The CancellationToken passed to the asynchronous Subscribe method is tied to the returned disposable subscription, allowing best-effort cancellation. + + The type of the elements in the produced sequence. + Asynchronous method used to implement the resulting sequence's Subscribe method. + The observable sequence with the specified implementation for the Subscribe method. + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous subscribe function will be signaled. + + + + Creates an observable sequence from a specified asynchronous Subscribe method. + + The type of the elements in the produced sequence. + Asynchronous method used to implement the resulting sequence's Subscribe method. + The observable sequence with the specified implementation for the Subscribe method. + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + + + + Creates an observable sequence from a specified cancellable asynchronous Subscribe method. + The CancellationToken passed to the asynchronous Subscribe method is tied to the returned disposable subscription, allowing best-effort cancellation. + + The type of the elements in the produced sequence. + Asynchronous method used to implement the resulting sequence's Subscribe method, returning an Action delegate that will be wrapped in an IDisposable. + The observable sequence with the specified implementation for the Subscribe method. + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous subscribe function will be signaled. + + + + Creates an observable sequence from a specified asynchronous Subscribe method. + + The type of the elements in the produced sequence. + Asynchronous method used to implement the resulting sequence's Subscribe method, returning an Action delegate that will be wrapped in an IDisposable. + The observable sequence with the specified implementation for the Subscribe method. + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + + + + Returns an observable sequence that invokes the specified factory function whenever a new observer subscribes. + + The type of the elements in the sequence returned by the factory function, and in the resulting sequence. + Observable factory function to invoke for each observer that subscribes to the resulting sequence. + An observable sequence whose observers trigger an invocation of the given observable factory function. + is null. + + + + Returns an observable sequence that starts the specified asynchronous factory function whenever a new observer subscribes. + + The type of the elements in the sequence returned by the factory function, and in the resulting sequence. + Asynchronous factory function to start for each observer that subscribes to the resulting sequence. + An observable sequence whose observers trigger the given asynchronous observable factory function to be started. + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + + + + Returns an observable sequence that starts the specified cancellable asynchronous factory function whenever a new observer subscribes. + The CancellationToken passed to the asynchronous factory function is tied to the returned disposable subscription, allowing best-effort cancellation. + + The type of the elements in the sequence returned by the factory function, and in the resulting sequence. + Asynchronous factory function to start for each observer that subscribes to the resulting sequence. + An observable sequence whose observers trigger the given asynchronous observable factory function to be started. + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous observable factory function will be signaled. + + + + Returns an empty observable sequence. + + The type used for the type parameter of the resulting sequence. + An observable sequence with no elements. + + + + Returns an empty observable sequence. + + The type used for the type parameter of the resulting sequence. + Object solely used to infer the type of the type parameter. This parameter is typically used when creating a sequence of anonymously typed elements. + An observable sequence with no elements. + + + + Returns an empty observable sequence, using the specified scheduler to send out the single OnCompleted message. + + The type used for the type parameter of the resulting sequence. + Scheduler to send the termination call on. + An observable sequence with no elements. + is null. + + + + Returns an empty observable sequence, using the specified scheduler to send out the single OnCompleted message. + + The type used for the type parameter of the resulting sequence. + Scheduler to send the termination call on. + Object solely used to infer the type of the type parameter. This parameter is typically used when creating a sequence of anonymously typed elements. + An observable sequence with no elements. + is null. + + + + Generates an observable sequence by running a state-driven loop producing the sequence's elements. + + The type of the state used in the generator loop. + The type of the elements in the produced sequence. + Initial state. + Condition to terminate generation (upon returning false). + Iteration step function. + Selector function for results produced in the sequence. + The generated sequence. + or or is null. + + + + Generates an observable sequence by running a state-driven loop producing the sequence's elements, using the specified scheduler to send out observer messages. + + The type of the state used in the generator loop. + The type of the elements in the produced sequence. + Initial state. + Condition to terminate generation (upon returning false). + Iteration step function. + Selector function for results produced in the sequence. + Scheduler on which to run the generator loop. + The generated sequence. + or or or is null. + + + + Returns a non-terminating observable sequence, which can be used to denote an infinite duration (e.g. when using reactive joins). + + The type used for the type parameter of the resulting sequence. + An observable sequence whose observers will never get called. + + + + Returns a non-terminating observable sequence, which can be used to denote an infinite duration (e.g. when using reactive joins). + + The type used for the type parameter of the resulting sequence. + Object solely used to infer the type of the type parameter. This parameter is typically used when creating a sequence of anonymously typed elements. + An observable sequence whose observers will never get called. + + + + Generates an observable sequence of integral numbers within a specified range. + + The value of the first integer in the sequence. + The number of sequential integers to generate. + An observable sequence that contains a range of sequential integral numbers. + is less than zero. -or- + - 1 is larger than . + + + + Generates an observable sequence of integral numbers within a specified range, using the specified scheduler to send out observer messages. + + The value of the first integer in the sequence. + The number of sequential integers to generate. + Scheduler to run the generator loop on. + An observable sequence that contains a range of sequential integral numbers. + is less than zero. -or- + - 1 is larger than . + is null. + + + + Generates an observable sequence that repeats the given element infinitely. + + The type of the element that will be repeated in the produced sequence. + Element to repeat. + An observable sequence that repeats the given element infinitely. + + + + Generates an observable sequence that repeats the given element infinitely, using the specified scheduler to send out observer messages. + + The type of the element that will be repeated in the produced sequence. + Element to repeat. + Scheduler to run the producer loop on. + An observable sequence that repeats the given element infinitely. + is null. + + + + Generates an observable sequence that repeats the given element the specified number of times. + + The type of the element that will be repeated in the produced sequence. + Element to repeat. + Number of times to repeat the element. + An observable sequence that repeats the given element the specified number of times. + is less than zero. + + + + Generates an observable sequence that repeats the given element the specified number of times, using the specified scheduler to send out observer messages. + + The type of the element that will be repeated in the produced sequence. + Element to repeat. + Number of times to repeat the element. + Scheduler to run the producer loop on. + An observable sequence that repeats the given element the specified number of times. + is less than zero. + is null. + + + + Returns an observable sequence that contains a single element. + + The type of the element that will be returned in the produced sequence. + Single element in the resulting observable sequence. + An observable sequence containing the single specified element. + + + + Returns an observable sequence that contains a single element, using the specified scheduler to send out observer messages. + + The type of the element that will be returned in the produced sequence. + Single element in the resulting observable sequence. + Scheduler to send the single element on. + An observable sequence containing the single specified element. + is null. + + + + Returns an observable sequence that terminates with an exception. + + The type used for the type parameter of the resulting sequence. + Exception object used for the sequence's termination. + The observable sequence that terminates exceptionally with the specified exception object. + is null. + + + + Returns an observable sequence that terminates with an exception. + + The type used for the type parameter of the resulting sequence. + Exception object used for the sequence's termination. + Object solely used to infer the type of the type parameter. This parameter is typically used when creating a sequence of anonymously typed elements. + The observable sequence that terminates exceptionally with the specified exception object. + is null. + + + + Returns an observable sequence that terminates with an exception, using the specified scheduler to send out the single OnError message. + + The type used for the type parameter of the resulting sequence. + Exception object used for the sequence's termination. + Scheduler to send the exceptional termination call on. + The observable sequence that terminates exceptionally with the specified exception object. + or is null. + + + + Returns an observable sequence that terminates with an exception, using the specified scheduler to send out the single OnError message. + + The type used for the type parameter of the resulting sequence. + Exception object used for the sequence's termination. + Scheduler to send the exceptional termination call on. + Object solely used to infer the type of the type parameter. This parameter is typically used when creating a sequence of anonymously typed elements. + The observable sequence that terminates exceptionally with the specified exception object. + or is null. + + + + Constructs an observable sequence that depends on a resource object, whose lifetime is tied to the resulting observable sequence's lifetime. + + The type of the elements in the produced sequence. + The type of the resource used during the generation of the resulting sequence. Needs to implement . + Factory function to obtain a resource object. + Factory function to obtain an observable sequence that depends on the obtained resource. + An observable sequence whose lifetime controls the lifetime of the dependent resource object. + or is null. + + + + Constructs an observable sequence that depends on a resource object, whose lifetime is tied to the resulting observable sequence's lifetime. The resource is obtained and used through asynchronous methods. + The CancellationToken passed to the asynchronous methods is tied to the returned disposable subscription, allowing best-effort cancellation at any stage of the resource acquisition or usage. + + The type of the elements in the produced sequence. + The type of the resource used during the generation of the resulting sequence. Needs to implement . + Asynchronous factory function to obtain a resource object. + Asynchronous factory function to obtain an observable sequence that depends on the obtained resource. + An observable sequence whose lifetime controls the lifetime of the dependent resource object. + or is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous resource factory and observable factory functions will be signaled. + + + + Converts a .NET event, conforming to the standard .NET event pattern based on , to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on , to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on a supplied event delegate type, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The delegate type of the event to be converted. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on a supplied event delegate type, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The delegate type of the event to be converted. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on , to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The delegate type of the event to be converted. + The type of the event data generated by the event. + A function used to convert the given event handler to a delegate compatible with the underlying .NET event. The resulting delegate is used in calls to the addHandler and removeHandler action parameters. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on , to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The delegate type of the event to be converted. + The type of the event data generated by the event. + A function used to convert the given event handler to a delegate compatible with the underlying .NET event. The resulting delegate is used in calls to the addHandler and removeHandler action parameters. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on a supplied event delegate type with a strongly typed sender parameter, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The delegate type of the event to be converted. + The type of the sender that raises the event. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on a supplied event delegate type with a strongly typed sender parameter, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The delegate type of the event to be converted. + The type of the sender that raises the event. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on , to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on , to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts an instance .NET event, conforming to the standard .NET event pattern with an parameter, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the target object type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Object instance that exposes the event to convert. + Name of the event to convert. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts an instance .NET event, conforming to the standard .NET event pattern with an parameter, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the target object type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Object instance that exposes the event to convert. + Name of the event to convert. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts an instance .NET event, conforming to the standard .NET event pattern with strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the target object type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The type of the event data generated by the event. + Object instance that exposes the event to convert. + Name of the event to convert. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts an instance .NET event, conforming to the standard .NET event pattern with strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the target object type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The type of the event data generated by the event. + Object instance that exposes the event to convert. + Name of the event to convert. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts an instance .NET event, conforming to the standard .NET event pattern with a strongly typed sender and strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the target object type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The type of the sender that raises the event. + The type of the event data generated by the event. + Object instance that exposes the event to convert. + Name of the event to convert. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's first argument type is not assignable to TSender. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts an instance .NET event, conforming to the standard .NET event pattern with a strongly typed sender and strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the target object type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The type of the sender that raises the event. + The type of the event data generated by the event. + Object instance that exposes the event to convert. + Name of the event to convert. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's first argument type is not assignable to TSender. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a static .NET event, conforming to the standard .NET event pattern with an parameter, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the specified type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Type that exposes the static event to convert. + Name of the event to convert. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a static .NET event, conforming to the standard .NET event pattern with an parameter, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the specified type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Type that exposes the static event to convert. + Name of the event to convert. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a static .NET event, conforming to the standard .NET event pattern with strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the specified type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The type of the event data generated by the event. + Type that exposes the static event to convert. + Name of the event to convert. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a static .NET event, conforming to the standard .NET event pattern with strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the specified type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The type of the event data generated by the event. + Type that exposes the static event to convert. + Name of the event to convert. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a static .NET event, conforming to the standard .NET event pattern with a strongly typed sender and strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the specified type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The type of the sender that raises the event. + The type of the event data generated by the event. + Type that exposes the static event to convert. + Name of the event to convert. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's first argument type is not assignable to TSender. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a static .NET event, conforming to the standard .NET event pattern with a strongly typed sender and strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the specified type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + The type of the sender that raises the event. + The type of the event data generated by the event. + Type that exposes the static event to convert. + Name of the event to convert. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + or or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's first argument type is not assignable to TSender. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a .NET event to an observable sequence, using a conversion function to obtain the event delegate. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + The delegate type of the event to be converted. + The type of the event data generated by the event. + A function used to convert the given event handler to a delegate compatible with the underlying .NET event. The resulting delegate is used in calls to the addHandler and removeHandler action parameters. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEvent, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEvent, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEvent calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a .NET event to an observable sequence, using a conversion function to obtain the event delegate. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + The delegate type of the event to be converted. + The type of the event data generated by the event. + A function used to convert the given event handler to a delegate compatible with the underlying .NET event. The resulting delegate is used in calls to the addHandler and removeHandler action parameters. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + or or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEvent calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEvent that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a .NET event to an observable sequence, using a supplied event delegate type. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + The delegate type of the event to be converted. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEvent, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEvent, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEvent calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a .NET event to an observable sequence, using a supplied event delegate type. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + The delegate type of the event to be converted. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEvent calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEvent that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a generic Action-based .NET event to an observable sequence. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEvent, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEvent, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEvent calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a generic Action-based .NET event to an observable sequence. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEvent calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEvent that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts an Action-based .NET event to an observable sequence. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEvent, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEvent, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEvent calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts an Action-based .NET event to an observable sequence. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEvent calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEvent that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Invokes an action for each element in the observable sequence, and returns a Task object that will get signaled when the sequence terminates. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke for each element in the observable sequence. + Task that signals the termination of the sequence. + or is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + + + + Invokes an action for each element in the observable sequence, and returns a Task object that will get signaled when the sequence terminates. + The loop can be quit prematurely by setting the specified cancellation token. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke for each element in the observable sequence. + Cancellation token used to stop the loop. + Task that signals the termination of the sequence. + or is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + + + + Invokes an action for each element in the observable sequence, incorporating the element's index, and returns a Task object that will get signaled when the sequence terminates. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke for each element in the observable sequence. + Task that signals the termination of the sequence. + or is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + + + + Invokes an action for each element in the observable sequence, incorporating the element's index, and returns a Task object that will get signaled when the sequence terminates. + The loop can be quit prematurely by setting the specified cancellation token. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke for each element in the observable sequence. + Cancellation token used to stop the loop. + Task that signals the termination of the sequence. + or is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + + + + Uses to determine which source in to return, choosing if no match is found. + + The type of the value returned by the selector function, used to look up the resulting source. + The type of the elements in the result sequence. + Selector function invoked to determine the source to lookup in the dictionary. + Dictionary of sources to select from based on the invocation result. + Default source to select in case no matching source in is found. + The observable sequence retrieved from the dictionary based on the invocation result, or if no match is found. + or or is null. + + + + Uses to determine which source in to return, choosing an empty sequence on the specified scheduler if no match is found. + + The type of the value returned by the selector function, used to look up the resulting source. + The type of the elements in the result sequence. + Selector function invoked to determine the source to lookup in the dictionary. + Dictionary of sources to select from based on the invocation result. + Scheduler to generate an empty sequence on in case no matching source in is found. + The observable sequence retrieved from the dictionary based on the invocation result, or an empty sequence if no match is found. + or or is null. + + + + Uses to determine which source in to return, choosing an empty sequence if no match is found. + + The type of the value returned by the selector function, used to look up the resulting source. + The type of the elements in the result sequence. + Selector function invoked to determine the source to lookup in the dictionary. + Dictionary of sources to select from based on the invocation result. + The observable sequence retrieved from the dictionary based on the invocation result, or an empty sequence if no match is found. + or is null. + + + + Repeats the given as long as the specified holds, where the is evaluated after each repeated completed. + + The type of the elements in the source sequence. + Source to repeat as long as the function evaluates to true. + Condition that will be evaluated upon the completion of an iteration through the , to determine whether repetition of the source is required. + The observable sequence obtained by concatenating the sequence as long as the holds. + or is null. + + + + Concatenates the observable sequences obtained by running the for each element in the given enumerable . + + The type of the elements in the enumerable source sequence. + The type of the elements in the observable result sequence. + Enumerable source for which each element will be mapped onto an observable source that will be concatenated in the result sequence. + Function to select an observable source for each element in the . + The observable sequence obtained by concatenating the sources returned by for each element in the . + or is null. + + + + If the specified evaluates true, select the sequence. Otherwise, select the sequence. + + The type of the elements in the result sequence. + Condition evaluated to decide which sequence to return. + Sequence returned in case evaluates true. + Sequence returned in case evaluates false. + if evaluates true; otherwise. + or or is null. + + + + If the specified evaluates true, select the sequence. Otherwise, return an empty sequence. + + The type of the elements in the result sequence. + Condition evaluated to decide which sequence to return. + Sequence returned in case evaluates true. + if evaluates true; an empty sequence otherwise. + or is null. + + + + If the specified evaluates true, select the sequence. Otherwise, return an empty sequence generated on the specified scheduler. + + The type of the elements in the result sequence. + Condition evaluated to decide which sequence to return. + Sequence returned in case evaluates true. + Scheduler to generate an empty sequence on in case evaluates false. + if evaluates true; an empty sequence otherwise. + or or is null. + + + + Repeats the given as long as the specified holds, where the is evaluated before each repeated is subscribed to. + + The type of the elements in the source sequence. + Source to repeat as long as the function evaluates to true. + Condition that will be evaluated before subscription to the , to determine whether repetition of the source is required. + The observable sequence obtained by concatenating the sequence as long as the holds. + or is null. + + + + Creates a pattern that matches when both observable sequences have an available element. + + The type of the elements in the left sequence. + The type of the elements in the right sequence. + Observable sequence to match with the right sequence. + Observable sequence to match with the left sequence. + Pattern object that matches when both observable sequences have an available element. + or is null. + + + + Matches when the observable sequence has an available element and projects the element by invoking the selector function. + + The type of the elements in the source sequence. + The type of the elements in the result sequence, returned by the selector function. + Observable sequence to apply the selector on. + Selector that will be invoked for elements in the source sequence. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + or is null. + + + + Joins together the results from several patterns. + + The type of the elements in the result sequence, obtained from the specified patterns. + A series of plans created by use of the Then operator on patterns. + An observable sequence with the results from matching several patterns. + is null. + + + + Joins together the results from several patterns. + + The type of the elements in the result sequence, obtained from the specified patterns. + A series of plans created by use of the Then operator on patterns. + An observable sequence with the results form matching several patterns. + is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Fifteenth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + The type of the elements in the sixteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Fifteenth observable source. + Sixteenth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Propagates the observable sequence that reacts first. + + The type of the elements in the source sequences. + First observable sequence. + Second observable sequence. + An observable sequence that surfaces either of the given sequences, whichever reacted first. + or is null. + + + + Propagates the observable sequence that reacts first. + + The type of the elements in the source sequences. + Observable sources competing to react first. + An observable sequence that surfaces any of the given sequences, whichever reacted first. + is null. + + + + Propagates the observable sequence that reacts first. + + The type of the elements in the source sequences. + Observable sources competing to react first. + An observable sequence that surfaces any of the given sequences, whichever reacted first. + is null. + + + + Projects each element of an observable sequence into consecutive non-overlapping buffers. + + The type of the elements in the source sequence, and in the lists in the result sequence. + The type of the elements in the sequences indicating buffer closing events. + Source sequence to produce buffers over. + A function invoked to define the boundaries of the produced buffers. A new buffer is started when the previous one is closed. + An observable sequence of buffers. + or is null. + + + + Projects each element of an observable sequence into zero or more buffers. + + The type of the elements in the source sequence, and in the lists in the result sequence. + The type of the elements in the sequence indicating buffer opening events, also passed to the closing selector to obtain a sequence of buffer closing events. + The type of the elements in the sequences indicating buffer closing events. + Source sequence to produce buffers over. + Observable sequence whose elements denote the creation of new buffers. + A function invoked to define the closing of each produced buffer. + An observable sequence of buffers. + or or is null. + + + + Projects each element of an observable sequence into consecutive non-overlapping buffers. + + The type of the elements in the source sequence, and in the lists in the result sequence. + The type of the elements in the sequences indicating buffer boundary events. + Source sequence to produce buffers over. + Sequence of buffer boundary markers. The current buffer is closed and a new buffer is opened upon receiving a boundary marker. + An observable sequence of buffers. + or is null. + + + + Continues an observable sequence that is terminated by an exception of the specified type with the observable sequence produced by the handler. + + The type of the elements in the source sequence and sequences returned by the exception handler function. + The type of the exception to catch and handle. Needs to derive from . + Source sequence. + Exception handler function, producing another observable sequence. + An observable sequence containing the source sequence's elements, followed by the elements produced by the handler's resulting observable sequence in case an exception occurred. + or is null. + + + + Continues an observable sequence that is terminated by an exception with the next observable sequence. + + The type of the elements in the source sequence and handler sequence. + First observable sequence whose exception (if any) is caught. + Second observable sequence used to produce results when an error occurred in the first sequence. + An observable sequence containing the first sequence's elements, followed by the elements of the second sequence in case an exception occurred. + or is null. + + + + Continues an observable sequence that is terminated by an exception with the next observable sequence. + + The type of the elements in the source and handler sequences. + Observable sequences to catch exceptions for. + An observable sequence containing elements from consecutive source sequences until a source sequence terminates successfully. + is null. + + + + Continues an observable sequence that is terminated by an exception with the next observable sequence. + + The type of the elements in the source and handler sequences. + Observable sequences to catch exceptions for. + An observable sequence containing elements from consecutive source sequences until a source sequence terminates successfully. + is null. + + + + Merges two observable sequences into one observable sequence by using the selector function whenever one of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Function to invoke whenever either of the sources produces an element. + An observable sequence containing the result of combining elements of both sources using the specified result selector function. + or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the source sequences. + The type of the elements in the result sequence, returned by the selector function. + Observable sources. + Function to invoke whenever any of the sources produces an element. For efficiency, the input list is reused after the selector returns. Either aggregate or copy the values during the function call. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by emitting a list with the latest source elements whenever any of the observable sequences produces an element. + + The type of the elements in the source sequences, and in the lists in the result sequence. + Observable sources. + An observable sequence containing lists of the latest elements of the sources. + is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by emitting a list with the latest source elements whenever any of the observable sequences produces an element. + + The type of the elements in the source sequences, and in the lists in the result sequence. + Observable sources. + An observable sequence containing lists of the latest elements of the sources. + is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Concatenates the second observable sequence to the first observable sequence upon successful termination of the first. + + The type of the elements in the source sequences. + First observable sequence. + Second observable sequence. + An observable sequence that contains the elements of the first sequence, followed by those of the second the sequence. + or is null. + + + + Concatenates all of the specified observable sequences, as long as the previous observable sequence terminated successfully. + + The type of the elements in the source sequences. + Observable sequences to concatenate. + An observable sequence that contains the elements of each given sequence, in sequential order. + is null. + + + + Concatenates all observable sequences in the given enumerable sequence, as long as the previous observable sequence terminated successfully. + + The type of the elements in the source sequences. + Observable sequences to concatenate. + An observable sequence that contains the elements of each given sequence, in sequential order. + is null. + + + + Concatenates all inner observable sequences, as long as the previous observable sequence terminated successfully. + + The type of the elements in the source sequences. + Observable sequence of inner observable sequences. + An observable sequence that contains the elements of each observed inner sequence, in sequential order. + is null. + + + + Concatenates all task results, as long as the previous task terminated successfully. + + The type of the results produced by the tasks. + Observable sequence of tasks. + An observable sequence that contains the results of each task, in sequential order. + is null. + If the tasks support cancellation, consider manual conversion of the tasks using , followed by a concatenation operation using . + + + + Merges elements from all inner observable sequences into a single observable sequence. + + The type of the elements in the source sequences. + Observable sequence of inner observable sequences. + The observable sequence that merges the elements of the inner sequences. + is null. + + + + Merges results from all source tasks into a single observable sequence. + + The type of the results produced by the source tasks. + Observable sequence of tasks. + The observable sequence that merges the results of the source tasks. + is null. + If the tasks support cancellation, consider manual conversion of the tasks using , followed by a merge operation using . + + + + Merges elements from all inner observable sequences into a single observable sequence, limiting the number of concurrent subscriptions to inner sequences. + + The type of the elements in the source sequences. + Observable sequence of inner observable sequences. + Maximum number of inner observable sequences being subscribed to concurrently. + The observable sequence that merges the elements of the inner sequences. + is null. + is less than or equal to zero. + + + + Merges elements from all observable sequences in the given enumerable sequence into a single observable sequence, limiting the number of concurrent subscriptions to inner sequences. + + The type of the elements in the source sequences. + Enumerable sequence of observable sequences. + Maximum number of observable sequences being subscribed to concurrently. + The observable sequence that merges the elements of the observable sequences. + is null. + is less than or equal to zero. + + + + Merges elements from all observable sequences in the given enumerable sequence into a single observable sequence, limiting the number of concurrent subscriptions to inner sequences, and using the specified scheduler for enumeration of and subscription to the sources. + + The type of the elements in the source sequences. + Enumerable sequence of observable sequences. + Maximum number of observable sequences being subscribed to concurrently. + Scheduler to run the enumeration of the sequence of sources on. + The observable sequence that merges the elements of the observable sequences. + or is null. + is less than or equal to zero. + + + + Merges elements from two observable sequences into a single observable sequence. + + The type of the elements in the source sequences. + First observable sequence. + Second observable sequence. + The observable sequence that merges the elements of the given sequences. + or is null. + + + + Merges elements from two observable sequences into a single observable sequence, using the specified scheduler for enumeration of and subscription to the sources. + + The type of the elements in the source sequences. + First observable sequence. + Second observable sequence. + Scheduler used to introduce concurrency for making subscriptions to the given sequences. + The observable sequence that merges the elements of the given sequences. + or or is null. + + + + Merges elements from all of the specified observable sequences into a single observable sequence. + + The type of the elements in the source sequences. + Observable sequences. + The observable sequence that merges the elements of the observable sequences. + is null. + + + + Merges elements from all of the specified observable sequences into a single observable sequence, using the specified scheduler for enumeration of and subscription to the sources. + + The type of the elements in the source sequences. + Observable sequences. + Scheduler to run the enumeration of the sequence of sources on. + The observable sequence that merges the elements of the observable sequences. + or is null. + + + + Merges elements from all observable sequences in the given enumerable sequence into a single observable sequence. + + The type of the elements in the source sequences. + Enumerable sequence of observable sequences. + The observable sequence that merges the elements of the observable sequences. + is null. + + + + Merges elements from all observable sequences in the given enumerable sequence into a single observable sequence, using the specified scheduler for enumeration of and subscription to the sources. + + The type of the elements in the source sequences. + Enumerable sequence of observable sequences. + Scheduler to run the enumeration of the sequence of sources on. + The observable sequence that merges the elements of the observable sequences. + or is null. + + + + Concatenates the second observable sequence to the first observable sequence upon successful or exceptional termination of the first. + + The type of the elements in the source sequences. + First observable sequence whose exception (if any) is caught. + Second observable sequence used to produce results after the first sequence terminates. + An observable sequence that concatenates the first and second sequence, even if the first sequence terminates exceptionally. + or is null. + + + + Concatenates all of the specified observable sequences, even if the previous observable sequence terminated exceptionally. + + The type of the elements in the source sequences. + Observable sequences to concatenate. + An observable sequence that concatenates the source sequences, even if a sequence terminates exceptionally. + is null. + + + + Concatenates all observable sequences in the given enumerable sequence, even if the previous observable sequence terminated exceptionally. + + The type of the elements in the source sequences. + Observable sequences to concatenate. + An observable sequence that concatenates the source sequences, even if a sequence terminates exceptionally. + is null. + + + + Returns the elements from the source observable sequence only after the other observable sequence produces an element. + Starting from Rx.NET 4.0, this will subscribe to before subscribing to + so in case emits an element right away, elements from are not missed. + + The type of the elements in the source sequence. + The type of the elements in the other sequence that indicates the end of skip behavior. + Source sequence to propagate elements for. + Observable sequence that triggers propagation of elements of the source sequence. + An observable sequence containing the elements of the source sequence starting from the point the other sequence triggered propagation. + or is null. + + + + Transforms an observable sequence of observable sequences into an observable sequence + producing values only from the most recent observable sequence. + Each time a new inner observable sequence is received, unsubscribe from the + previous inner observable sequence. + + The type of the elements in the source sequences. + Observable sequence of inner observable sequences. + The observable sequence that at any point in time produces the elements of the most recent inner observable sequence that has been received. + is null. + + + + Transforms an observable sequence of tasks into an observable sequence + producing values only from the most recent observable sequence. + Each time a new task is received, the previous task's result is ignored. + + The type of the results produced by the source tasks. + Observable sequence of tasks. + The observable sequence that at any point in time produces the result of the most recent task that has been received. + is null. + If the tasks support cancellation, consider manual conversion of the tasks using , followed by a switch operation using . + + + + Returns the elements from the source observable sequence until the other observable sequence produces an element. + + The type of the elements in the source sequence. + The type of the elements in the other sequence that indicates the end of take behavior. + Source sequence to propagate elements for. + Observable sequence that terminates propagation of elements of the source sequence. + An observable sequence containing the elements of the source sequence up to the point the other sequence interrupted further propagation. + or is null. + + + + Relays elements from the source observable sequence and calls the predicate after an + emission to check if the sequence should stop after that specific item. + + The type of the elements in the source and result sequences. + The source sequence to relay elements of. + Called after each upstream item has been emitted with + that upstream item and should return true to indicate the sequence should + complete. + The observable sequence with the source elements until the stop predicate returns true. + + The following sequence will stop after the value 5 has been encountered: + + Observable.Range(1, 10) + .TakeUntil(item => item == 5) + .Subscribe(Console.WriteLine); + + + If or is null. + + + + Projects each element of an observable sequence into consecutive non-overlapping windows. + + The type of the elements in the source sequence, and in the windows in the result sequence. + The type of the elements in the sequences indicating window closing events. + Source sequence to produce windows over. + A function invoked to define the boundaries of the produced windows. A new window is started when the previous one is closed. + An observable sequence of windows. + or is null. + + + + Projects each element of an observable sequence into zero or more windows. + + The type of the elements in the source sequence, and in the windows in the result sequence. + The type of the elements in the sequence indicating window opening events, also passed to the closing selector to obtain a sequence of window closing events. + The type of the elements in the sequences indicating window closing events. + Source sequence to produce windows over. + Observable sequence whose elements denote the creation of new windows. + A function invoked to define the closing of each produced window. + An observable sequence of windows. + or or is null. + + + + Projects each element of an observable sequence into consecutive non-overlapping windows. + + The type of the elements in the source sequence, and in the windows in the result sequence. + The type of the elements in the sequences indicating window boundary events. + Source sequence to produce windows over. + Sequence of window boundary markers. The current window is closed and a new window is opened upon receiving a boundary marker. + An observable sequence of windows. + or is null. + + + + Merges two observable sequences into one observable sequence by combining each element from the first source with the latest element from the second source, if any. + Starting from Rx.NET 4.0, this will subscribe to before subscribing to to have a latest element readily available + in case emits an element right away. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Function to invoke for each element from the first source combined with the latest element from the second source, if any. + An observable sequence containing the result of combining each element of the first source with the latest element from the second source, if any, using the specified result selector function. + or or is null. + + + + Merges two observable sequences into one observable sequence by combining their elements in a pairwise fashion. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Function to invoke for each consecutive pair of elements from the first and second source. + An observable sequence containing the result of pairwise combining the elements of the first and second source using the specified result selector function. + or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the source sequences. + The type of the elements in the result sequence, returned by the selector function. + Observable sources. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or is null. + + + + Merges the specified observable sequences into one observable sequence by emitting a list with the elements of the observable sequences at corresponding indexes. + + The type of the elements in the source sequences, and in the lists in the result sequence. + Observable sources. + An observable sequence containing lists of elements at corresponding indexes. + is null. + + + + Merges the specified observable sequences into one observable sequence by emitting a list with the elements of the observable sequences at corresponding indexes. + + The type of the elements in the source sequences, and in the lists in the result sequence. + Observable sources. + An observable sequence containing lists of elements at corresponding indexes. + is null. + + + + Merges an observable sequence and an enumerable sequence into one observable sequence by using the selector function. + + The type of the elements in the first observable source sequence. + The type of the elements in the second enumerable source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second enumerable source. + Function to invoke for each consecutive pair of elements from the first and second source. + An observable sequence containing the result of pairwise combining the elements of the first and second source using the specified result selector function. + or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Fifteenth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + The type of the elements in the sixteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Fifteenth observable source. + Sixteenth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + or or or or or or or or or or or or or or or or is null. + + + + Append a value to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to append the value to. + Value to append to the specified sequence. + The source sequence appended with the specified value. + is null. + + + + Append a value to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to append the value to. + Value to append to the specified sequence. + Scheduler to emit the append values on. + The source sequence appended with the specified value. + is null. + + + + Hides the identity of an observable sequence. + + The type of the elements in the source sequence. + An observable sequence whose identity to hide. + An observable sequence that hides the identity of the source sequence. + is null. + + + + Projects each element of an observable sequence into consecutive non-overlapping buffers which are produced based on element count information. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Length of each buffer. + An observable sequence of buffers. + is null. + is less than or equal to zero. + + + + Projects each element of an observable sequence into zero or more buffers which are produced based on element count information. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Length of each buffer. + Number of elements to skip between creation of consecutive buffers. + An observable sequence of buffers. + is null. + or is less than or equal to zero. + + + + Dematerializes the explicit notification values of an observable sequence as implicit notifications. + + The type of the elements materialized in the source sequence notification objects. + An observable sequence containing explicit notification values which have to be turned into implicit notifications. + An observable sequence exhibiting the behavior corresponding to the source sequence's notification values. + is null. + + + + Returns an observable sequence that contains only distinct contiguous elements. + + The type of the elements in the source sequence. + An observable sequence to retain distinct contiguous elements for. + An observable sequence only containing the distinct contiguous elements from the source sequence. + is null. + + + + Returns an observable sequence that contains only distinct contiguous elements according to the comparer. + + The type of the elements in the source sequence. + An observable sequence to retain distinct contiguous elements for. + Equality comparer for source elements. + An observable sequence only containing the distinct contiguous elements from the source sequence. + or is null. + + + + Returns an observable sequence that contains only distinct contiguous elements according to the keySelector. + + The type of the elements in the source sequence. + The type of the discriminator key computed for each element in the source sequence. + An observable sequence to retain distinct contiguous elements for, based on a computed key value. + A function to compute the comparison key for each element. + An observable sequence only containing the distinct contiguous elements, based on a computed key value, from the source sequence. + or is null. + + + + Returns an observable sequence that contains only distinct contiguous elements according to the keySelector and the comparer. + + The type of the elements in the source sequence. + The type of the discriminator key computed for each element in the source sequence. + An observable sequence to retain distinct contiguous elements for, based on a computed key value. + A function to compute the comparison key for each element. + Equality comparer for computed key values. + An observable sequence only containing the distinct contiguous elements, based on a computed key value, from the source sequence. + or or is null. + + + + Invokes an action for each element in the observable sequence, and propagates all observer messages through the result sequence. + This method can be used for debugging, logging, etc. of query behavior by intercepting the message stream to run arbitrary actions for messages on the pipeline. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke for each element in the observable sequence. + The source sequence with the side-effecting behavior applied. + or is null. + + + + Invokes an action for each element in the observable sequence and invokes an action upon graceful termination of the observable sequence. + This method can be used for debugging, logging, etc. of query behavior by intercepting the message stream to run arbitrary actions for messages on the pipeline. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke for each element in the observable sequence. + Action to invoke upon graceful termination of the observable sequence. + The source sequence with the side-effecting behavior applied. + or or is null. + + + + Invokes an action for each element in the observable sequence and invokes an action upon exceptional termination of the observable sequence. + This method can be used for debugging, logging, etc. of query behavior by intercepting the message stream to run arbitrary actions for messages on the pipeline. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke for each element in the observable sequence. + Action to invoke upon exceptional termination of the observable sequence. + The source sequence with the side-effecting behavior applied. + or or is null. + + + + Invokes an action for each element in the observable sequence and invokes an action upon graceful or exceptional termination of the observable sequence. + This method can be used for debugging, logging, etc. of query behavior by intercepting the message stream to run arbitrary actions for messages on the pipeline. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke for each element in the observable sequence. + Action to invoke upon exceptional termination of the observable sequence. + Action to invoke upon graceful termination of the observable sequence. + The source sequence with the side-effecting behavior applied. + or or or is null. + + + + Invokes the observer's methods for each message in the source sequence. + This method can be used for debugging, logging, etc. of query behavior by intercepting the message stream to run arbitrary actions for messages on the pipeline. + + The type of the elements in the source sequence. + Source sequence. + Observer whose methods to invoke as part of the source sequence's observation. + The source sequence with the side-effecting behavior applied. + or is null. + + + + Invokes a specified action after the source observable sequence terminates gracefully or exceptionally. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke after the source observable sequence terminates. + Source sequence with the action-invoking termination behavior applied. + or is null. + + + + Ignores all elements in an observable sequence leaving only the termination messages. + + The type of the elements in the source sequence. + Source sequence. + An empty observable sequence that signals termination, successful or exceptional, of the source sequence. + is null. + + + + Materializes the implicit notifications of an observable sequence as explicit notification values. + + The type of the elements in the source sequence. + An observable sequence to get notification values for. + An observable sequence containing the materialized notification values from the source sequence. + is null. + + + + Prepend a value to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to prepend the value to. + Value to prepend to the specified sequence. + The source sequence prepended with the specified value. + is null. + + + + Prepend a value to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to prepend the value to. + Value to prepend to the specified sequence. + Scheduler to emit the prepend values on. + The source sequence prepended with the specified value. + is null. + + + + Repeats the observable sequence indefinitely. + + The type of the elements in the source sequence. + Observable sequence to repeat. + The observable sequence producing the elements of the given sequence repeatedly and sequentially. + is null. + + + + Repeats the observable sequence a specified number of times. + + The type of the elements in the source sequence. + Observable sequence to repeat. + Number of times to repeat the sequence. + The observable sequence producing the elements of the given sequence repeatedly. + is null. + is less than zero. + + + + Repeatedly resubscribes to the source observable after a normal completion and when the observable + returned by a handler produces an arbitrary item. + + The type of the elements in the source sequence. + The arbitrary element type signaled by the handler observable. + Observable sequence to keep repeating when it successfully terminates. + The function that is called for each observer and takes an observable sequence objects. + It should return an observable of arbitrary items that should signal that arbitrary item in + response to receiving the completion signal from the source observable. If this observable signals + a terminal event, the sequence is terminated with that signal instead. + An observable sequence producing the elements of the given sequence repeatedly while each repetition terminates successfully. + is null. + is null. + + + + Repeats the source observable sequence until it successfully terminates. + + The type of the elements in the source sequence. + Observable sequence to repeat until it successfully terminates. + An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully. + is null. + + + + Repeats the source observable sequence the specified number of times or until it successfully terminates. + + The type of the elements in the source sequence. + Observable sequence to repeat until it successfully terminates. + Number of times to repeat the sequence. + An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully. + is null. + is less than zero. + + + + Retries (resubscribes to) the source observable after a failure and when the observable + returned by a handler produces an arbitrary item. + + The type of the elements in the source sequence. + The arbitrary element type signaled by the handler observable. + Observable sequence to repeat until it successfully terminates. + The function that is called for each observer and takes an observable sequence of + errors. It should return an observable of arbitrary items that should signal that arbitrary item in + response to receiving the failure Exception from the source observable. If this observable signals + a terminal event, the sequence is terminated with that signal instead. + An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully. + is null. + is null. + + + + Applies an accumulator function over an observable sequence and returns each intermediate result. The specified seed value is used as the initial accumulator value. + For aggregation behavior with no intermediate results, see . + + The type of the elements in the source sequence. + The type of the result of the aggregation. + An observable sequence to accumulate over. + The initial accumulator value. + An accumulator function to be invoked on each element. + An observable sequence containing the accumulated values. + or is null. + + + + Applies an accumulator function over an observable sequence and returns each intermediate result. + For aggregation behavior with no intermediate results, see . + + The type of the elements in the source sequence and the result of the aggregation. + An observable sequence to accumulate over. + An accumulator function to be invoked on each element. + An observable sequence containing the accumulated values. + or is null. + + + + Bypasses a specified number of elements at the end of an observable sequence. + + The type of the elements in the source sequence. + Source sequence. + Number of elements to bypass at the end of the source sequence. + An observable sequence containing the source sequence elements except for the bypassed ones at the end. + is null. + is less than zero. + + This operator accumulates a queue with a length enough to store the first elements. As more elements are + received, elements are taken from the front of the queue and produced on the result sequence. This causes elements to be delayed. + + + + + Prepends a sequence of values to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to prepend values to. + Values to prepend to the specified sequence. + The source sequence prepended with the specified values. + or is null. + + + + Prepends a sequence of values to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to prepend values to. + Values to prepend to the specified sequence. + The source sequence prepended with the specified values. + or is null. + + + + Prepends a sequence of values to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to prepend values to. + Scheduler to emit the prepended values on. + Values to prepend to the specified sequence. + The source sequence prepended with the specified values. + or or is null. + + + + Prepends a sequence of values to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to prepend values to. + Scheduler to emit the prepended values on. + Values to prepend to the specified sequence. + The source sequence prepended with the specified values. + or or is null. + + + + Returns a specified number of contiguous elements from the end of an observable sequence. + + The type of the elements in the source sequence. + Source sequence. + Number of elements to take from the end of the source sequence. + An observable sequence containing the specified number of elements from the end of the source sequence. + is null. + is less than zero. + + This operator accumulates a buffer with a length enough to store elements elements. Upon completion of + the source sequence, this buffer is drained on the result sequence. This causes the elements to be delayed. + + + + + Returns a specified number of contiguous elements from the end of an observable sequence, using the specified scheduler to drain the queue. + + The type of the elements in the source sequence. + Source sequence. + Number of elements to take from the end of the source sequence. + Scheduler used to drain the queue upon completion of the source sequence. + An observable sequence containing the specified number of elements from the end of the source sequence. + or is null. + is less than zero. + + This operator accumulates a buffer with a length enough to store elements elements. Upon completion of + the source sequence, this buffer is drained on the result sequence. This causes the elements to be delayed. + + + + + Returns a list with the specified number of contiguous elements from the end of an observable sequence. + + The type of the elements in the source sequence. + Source sequence. + Number of elements to take from the end of the source sequence. + An observable sequence containing a single list with the specified number of elements from the end of the source sequence. + is null. + is less than zero. + + This operator accumulates a buffer with a length enough to store elements. Upon completion of the + source sequence, this buffer is produced on the result sequence. + + + + + Projects each element of an observable sequence into consecutive non-overlapping windows which are produced based on element count information. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Length of each window. + An observable sequence of windows. + is null. + is less than or equal to zero. + + + + Projects each element of an observable sequence into zero or more windows which are produced based on element count information. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Length of each window. + Number of elements to skip between creation of consecutive windows. + An observable sequence of windows. + is null. + or is less than or equal to zero. + + + + Converts the elements of an observable sequence to the specified type. + + The type to convert the elements in the source sequence to. + The observable sequence that contains the elements to be converted. + An observable sequence that contains each element of the source sequence converted to the specified type. + is null. + + + + Returns the elements of the specified sequence or the type parameter's default value in a singleton sequence if the sequence is empty. + + The type of the elements in the source sequence (if any), whose default value will be taken if the sequence is empty. + The sequence to return a default value for if it is empty. + An observable sequence that contains the default value for the TSource type if the source is empty; otherwise, the elements of the source itself. + is null. + + + + Returns the elements of the specified sequence or the specified value in a singleton sequence if the sequence is empty. + + The type of the elements in the source sequence (if any), and the specified default value which will be taken if the sequence is empty. + The sequence to return the specified value for if it is empty. + The value to return if the sequence is empty. + An observable sequence that contains the specified default value if the source is empty; otherwise, the elements of the source itself. + is null. + + + + Returns an observable sequence that contains only distinct elements. + + The type of the elements in the source sequence. + An observable sequence to retain distinct elements for. + An observable sequence only containing the distinct elements from the source sequence. + is null. + Usage of this operator should be considered carefully due to the maintenance of an internal lookup structure which can grow large. + + + + Returns an observable sequence that contains only distinct elements according to the comparer. + + The type of the elements in the source sequence. + An observable sequence to retain distinct elements for. + Equality comparer for source elements. + An observable sequence only containing the distinct elements from the source sequence. + or is null. + Usage of this operator should be considered carefully due to the maintenance of an internal lookup structure which can grow large. + + + + Returns an observable sequence that contains only distinct elements according to the keySelector. + + The type of the elements in the source sequence. + The type of the discriminator key computed for each element in the source sequence. + An observable sequence to retain distinct elements for. + A function to compute the comparison key for each element. + An observable sequence only containing the distinct elements, based on a computed key value, from the source sequence. + or is null. + Usage of this operator should be considered carefully due to the maintenance of an internal lookup structure which can grow large. + + + + Returns an observable sequence that contains only distinct elements according to the keySelector and the comparer. + + The type of the elements in the source sequence. + The type of the discriminator key computed for each element in the source sequence. + An observable sequence to retain distinct elements for. + A function to compute the comparison key for each element. + Equality comparer for source elements. + An observable sequence only containing the distinct elements, based on a computed key value, from the source sequence. + or or is null. + Usage of this operator should be considered carefully due to the maintenance of an internal lookup structure which can grow large. + + + + Groups the elements of an observable sequence according to a specified key selector function. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + or is null. + + + + Groups the elements of an observable sequence according to a specified key selector function and comparer. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + An equality comparer to compare keys with. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + or or is null. + + + + Groups the elements of an observable sequence and selects the resulting elements by using a specified function. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + or or is null. + + + + Groups the elements of an observable sequence according to a specified key selector function and comparer and selects the resulting elements by using a specified function. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + An equality comparer to compare keys with. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + or or or is null. + + + + Groups the elements of an observable sequence with the specified initial capacity according to a specified key selector function. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + The initial number of elements that the underlying dictionary can contain. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + or is null. + is less than 0. + + + + Groups the elements of an observable sequence with the specified initial capacity according to a specified key selector function and comparer. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + The initial number of elements that the underlying dictionary can contain. + An equality comparer to compare keys with. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + or or is null. + is less than 0. + + + + Groups the elements of an observable sequence with the specified initial capacity and selects the resulting elements by using a specified function. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + The initial number of elements that the underlying dictionary can contain. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + or or is null. + is less than 0. + + + + Groups the elements of an observable sequence with the specified initial capacity according to a specified key selector function and comparer and selects the resulting elements by using a specified function. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + The initial number of elements that the underlying dictionary can contain. + An equality comparer to compare keys with. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + or or or is null. + is less than 0. + + + + Groups the elements of an observable sequence according to a specified key selector function and comparer and selects the resulting elements by using a specified function. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + A function to signal the expiration of a group. + An equality comparer to compare keys with. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + or or or or is null. + + + + Groups the elements of an observable sequence according to a specified key selector function and selects the resulting elements by using a specified function. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + A function to signal the expiration of a group. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + or or or is null. + + + + Groups the elements of an observable sequence according to a specified key selector function and comparer. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to signal the expiration of a group. + An equality comparer to compare keys with. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + or or or is null. + + + + Groups the elements of an observable sequence according to a specified key selector function. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to signal the expiration of a group. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + or or is null. + + + + Groups the elements of an observable sequence with the specified initial capacity according to a specified key selector function and comparer and selects the resulting elements by using a specified function. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + A function to signal the expiration of a group. + The initial number of elements that the underlying dictionary can contain. + An equality comparer to compare keys with. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + or or or or is null. + is less than 0. + + + + Groups the elements of an observable sequence with the specified initial capacity according to a specified key selector function and selects the resulting elements by using a specified function. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + A function to signal the expiration of a group. + The initial number of elements that the underlying dictionary can contain. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + or or or is null. + is less than 0. + + + + Groups the elements of an observable sequence with the specified initial capacity according to a specified key selector function and comparer. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to signal the expiration of a group. + The initial number of elements that the underlying dictionary can contain. + An equality comparer to compare keys with. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + or or or is null. + is less than 0. + + + + Groups the elements of an observable sequence with the specified initial capacity according to a specified key selector function. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to signal the expiration of a group. + The initial number of elements that the underlying dictionary can contain. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + or or is null. + is less than 0. + + + + Correlates the elements of two sequences based on overlapping durations, and groups the results. + + The type of the elements in the left source sequence. + The type of the elements in the right source sequence. + The type of the elements in the duration sequence denoting the computed duration of each element in the left source sequence. + The type of the elements in the duration sequence denoting the computed duration of each element in the right source sequence. + The type of the elements in the result sequence, obtained by invoking the result selector function for source elements with overlapping duration. + The left observable sequence to join elements for. + The right observable sequence to join elements for. + A function to select the duration of each element of the left observable sequence, used to determine overlap. + A function to select the duration of each element of the right observable sequence, used to determine overlap. + A function invoked to compute a result element for any element of the left sequence with overlapping elements from the right observable sequence. + An observable sequence that contains result elements computed from source elements that have an overlapping duration. + or or or or is null. + + + + Correlates the elements of two sequences based on overlapping durations. + + The type of the elements in the left source sequence. + The type of the elements in the right source sequence. + The type of the elements in the duration sequence denoting the computed duration of each element in the left source sequence. + The type of the elements in the duration sequence denoting the computed duration of each element in the right source sequence. + The type of the elements in the result sequence, obtained by invoking the result selector function for source elements with overlapping duration. + The left observable sequence to join elements for. + The right observable sequence to join elements for. + A function to select the duration of each element of the left observable sequence, used to determine overlap. + A function to select the duration of each element of the right observable sequence, used to determine overlap. + A function invoked to compute a result element for any two overlapping elements of the left and right observable sequences. + An observable sequence that contains result elements computed from source elements that have an overlapping duration. + or or or or is null. + + + + Filters the elements of an observable sequence based on the specified type. + + The type to filter the elements in the source sequence on. + The observable sequence that contains the elements to be filtered. + An observable sequence that contains elements from the input sequence of type TResult. + is null. + + + + Projects each element of an observable sequence into a new form. + + The type of the elements in the source sequence. + The type of the elements in the result sequence, obtained by running the selector function for each element in the source sequence. + A sequence of elements to invoke a transform function on. + A transform function to apply to each source element. + An observable sequence whose elements are the result of invoking the transform function on each element of source. + or is null. + + + + Projects each element of an observable sequence into a new form by incorporating the element's index. + + The type of the elements in the source sequence. + The type of the elements in the result sequence, obtained by running the selector function for each element in the source sequence. + A sequence of elements to invoke a transform function on. + A transform function to apply to each source element; the second parameter of the function represents the index of the source element. + An observable sequence whose elements are the result of invoking the transform function on each element of source. + or is null. + + + + Projects each element of the source observable sequence to the other observable sequence and merges the resulting observable sequences into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the other sequence and the elements in the result sequence. + An observable sequence of elements to project. + An observable sequence to project each element from the source sequence onto. + An observable sequence whose elements are the result of projecting each source element onto the other sequence and merging all the resulting sequences together. + or is null. + + + + Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected inner sequences and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element. + An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence. + or is null. + + + + Projects each element of an observable sequence to an observable sequence by incorporating the element's index and merges the resulting observable sequences into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected inner sequences and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence. + or is null. + + + + Projects each element of an observable sequence to a task and merges all of the task results into one observable sequence. + + The type of the elements in the source sequence. + The type of the result produced by the projected tasks and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element. + An observable sequence whose elements are the result of the tasks executed for each element of the input sequence. + This overload supports composition of observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + or is null. + + + + Projects each element of an observable sequence to a task by incorporating the element's index and merges all of the task results into one observable sequence. + + The type of the elements in the source sequence. + The type of the result produced by the projected tasks and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + An observable sequence whose elements are the result of the tasks executed for each element of the input sequence. + This overload supports composition of observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + or is null. + + + + Projects each element of an observable sequence to a task with cancellation support and merges all of the task results into one observable sequence. + + The type of the elements in the source sequence. + The type of the result produced by the projected tasks and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element. + An observable sequence whose elements are the result of the tasks executed for each element of the input sequence. + This overload supports composition of observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + or is null. + + + + Projects each element of an observable sequence to a task by incorporating the element's index with cancellation support and merges all of the task results into one observable sequence. + + The type of the elements in the source sequence. + The type of the result produced by the projected tasks and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + An observable sequence whose elements are the result of the tasks executed for each element of the input sequence. + This overload supports composition of observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + or is null. + + + + Projects each element of an observable sequence to an observable sequence, invokes the result selector for the source element and each of the corresponding inner sequence's elements, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected intermediate sequences. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate sequence elements. + An observable sequence of elements to project. + A transform function to apply to each element. + A transform function to apply to each element of the intermediate sequence. + An observable sequence whose elements are the result of invoking the one-to-many transform function collectionSelector on each element of the input sequence and then mapping each of those sequence elements and their corresponding source element to a result element. + or or is null. + + + + Projects each element of an observable sequence to an observable sequence by incorporating the element's index, invokes the result selector for the source element and each of the corresponding inner sequence's elements, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected intermediate sequences. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate sequence elements. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + A transform function to apply to each element of the intermediate sequence; the second parameter of the function represents the index of the source element and the fourth parameter represents the index of the intermediate element. + An observable sequence whose elements are the result of invoking the one-to-many transform function collectionSelector on each element of the input sequence and then mapping each of those sequence elements and their corresponding source element to a result element. + or or is null. + + + + Projects each element of an observable sequence to a task, invokes the result selector for the source element and the task result, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the results produced by the projected intermediate tasks. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate task results. + An observable sequence of elements to project. + A transform function to apply to each element. + A transform function to apply to each element of the intermediate sequence. + An observable sequence whose elements are the result of obtaining a task for each element of the input sequence and then mapping the task's result and its corresponding source element to a result element. + or or is null. + This overload supports using LINQ query comprehension syntax in C# and Visual Basic to compose observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + + + + Projects each element of an observable sequence to a task by incorporating the element's index, invokes the result selector for the source element and the task result, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the results produced by the projected intermediate tasks. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate task results. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + A transform function to apply to each element of the intermediate sequence; the second parameter of the function represents the index of the source element. + An observable sequence whose elements are the result of obtaining a task for each element of the input sequence and then mapping the task's result and its corresponding source element to a result element. + or or is null. + This overload supports using LINQ query comprehension syntax in C# and Visual Basic to compose observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + + + + Projects each element of an observable sequence to a task with cancellation support, invokes the result selector for the source element and the task result, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the results produced by the projected intermediate tasks. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate task results. + An observable sequence of elements to project. + A transform function to apply to each element. + A transform function to apply to each element of the intermediate sequence. + An observable sequence whose elements are the result of obtaining a task for each element of the input sequence and then mapping the task's result and its corresponding source element to a result element. + or or is null. + This overload supports using LINQ query comprehension syntax in C# and Visual Basic to compose observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + + + + Projects each element of an observable sequence to a task by incorporating the element's index with cancellation support, invokes the result selector for the source element and the task result, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the results produced by the projected intermediate tasks. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate task results. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + A transform function to apply to each element of the intermediate sequence; the second parameter of the function represents the index of the source element. + An observable sequence whose elements are the result of obtaining a task for each element of the input sequence and then mapping the task's result and its corresponding source element to a result element. + or or is null. + This overload supports using LINQ query comprehension syntax in C# and Visual Basic to compose observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + + + + Projects each notification of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected inner sequences and the elements in the merged result sequence. + An observable sequence of notifications to project. + A transform function to apply to each element. + A transform function to apply when an error occurs in the source sequence. + A transform function to apply when the end of the source sequence is reached. + An observable sequence whose elements are the result of invoking the one-to-many transform function corresponding to each notification in the input sequence. + or or or is null. + + + + Projects each notification of an observable sequence to an observable sequence by incorporating the element's index and merges the resulting observable sequences into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected inner sequences and the elements in the merged result sequence. + An observable sequence of notifications to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + A transform function to apply when an error occurs in the source sequence. + A transform function to apply when the end of the source sequence is reached. + An observable sequence whose elements are the result of invoking the one-to-many transform function corresponding to each notification in the input sequence. + or or or is null. + + + + Projects each element of an observable sequence to an enumerable sequence and concatenates the resulting enumerable sequences into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected inner enumerable sequences and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element. + An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence. + or is null. + The projected sequences are enumerated synchronously within the OnNext call of the source sequence. In order to do a concurrent, non-blocking merge, change the selector to return an observable sequence obtained using the conversion. + + + + Projects each element of an observable sequence to an enumerable sequence by incorporating the element's index and concatenates the resulting enumerable sequences into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected inner enumerable sequences and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence. + or is null. + The projected sequences are enumerated synchronously within the OnNext call of the source sequence. In order to do a concurrent, non-blocking merge, change the selector to return an observable sequence obtained using the conversion. + + + + Projects each element of an observable sequence to an enumerable sequence, invokes the result selector for the source element and each of the corresponding inner sequence's elements, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected intermediate enumerable sequences. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate sequence elements. + An observable sequence of elements to project. + A transform function to apply to each element. + A transform function to apply to each element of the intermediate sequence. + An observable sequence whose elements are the result of invoking the one-to-many transform function collectionSelector on each element of the input sequence and then mapping each of those sequence elements and their corresponding source element to a result element. + or or is null. + The projected sequences are enumerated synchronously within the OnNext call of the source sequence. In order to do a concurrent, non-blocking merge, change the selector to return an observable sequence obtained using the conversion. + + + + Projects each element of an observable sequence to an enumerable sequence by incorporating the element's index, invokes the result selector for the source element and each of the corresponding inner sequence's elements, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected intermediate enumerable sequences. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate sequence elements. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + A transform function to apply to each element of the intermediate sequence; the second parameter of the function represents the index of the source element and the fourth parameter represents the index of the intermediate element. + An observable sequence whose elements are the result of invoking the one-to-many transform function collectionSelector on each element of the input sequence and then mapping each of those sequence elements and their corresponding source element to a result element. + or or is null. + The projected sequences are enumerated synchronously within the OnNext call of the source sequence. In order to do a concurrent, non-blocking merge, change the selector to return an observable sequence obtained using the conversion. + + + + Bypasses a specified number of elements in an observable sequence and then returns the remaining elements. + + The type of the elements in the source sequence. + The sequence to take elements from. + The number of elements to skip before returning the remaining elements. + An observable sequence that contains the elements that occur after the specified index in the input sequence. + is null. + is less than zero. + + + + Bypasses elements in an observable sequence as long as a specified condition is true and then returns the remaining elements. + + The type of the elements in the source sequence. + An observable sequence to return elements from. + A function to test each element for a condition. + An observable sequence that contains the elements from the input sequence starting at the first element in the linear series that does not pass the test specified by predicate. + or is null. + + + + Bypasses elements in an observable sequence as long as a specified condition is true and then returns the remaining elements. + The element's index is used in the logic of the predicate function. + + The type of the elements in the source sequence. + An observable sequence to return elements from. + A function to test each element for a condition; the second parameter of the function represents the index of the source element. + An observable sequence that contains the elements from the input sequence starting at the first element in the linear series that does not pass the test specified by predicate. + or is null. + + + + Returns a specified number of contiguous elements from the start of an observable sequence. + + The type of the elements in the source sequence. + The sequence to take elements from. + The number of elements to return. + An observable sequence that contains the specified number of elements from the start of the input sequence. + is null. + is less than zero. + + + + Returns a specified number of contiguous elements from the start of an observable sequence, using the specified scheduler for the edge case of Take(0). + + The type of the elements in the source sequence. + The sequence to take elements from. + The number of elements to return. + Scheduler used to produce an OnCompleted message in case count is set to 0. + An observable sequence that contains the specified number of elements from the start of the input sequence. + or is null. + is less than zero. + + + + Returns elements from an observable sequence as long as a specified condition is true. + + The type of the elements in the source sequence. + A sequence to return elements from. + A function to test each element for a condition. + An observable sequence that contains the elements from the input sequence that occur before the element at which the test no longer passes. + or is null. + + + + Returns elements from an observable sequence as long as a specified condition is true. + The element's index is used in the logic of the predicate function. + + The type of the elements in the source sequence. + A sequence to return elements from. + A function to test each element for a condition; the second parameter of the function represents the index of the source element. + An observable sequence that contains the elements from the input sequence that occur before the element at which the test no longer passes. + or is null. + + + + Filters the elements of an observable sequence based on a predicate. + + The type of the elements in the source sequence. + An observable sequence whose elements to filter. + A function to test each source element for a condition. + An observable sequence that contains elements from the input sequence that satisfy the condition. + or is null. + + + + Filters the elements of an observable sequence based on a predicate by incorporating the element's index. + + The type of the elements in the source sequence. + An observable sequence whose elements to filter. + A function to test each source element for a condition; the second parameter of the function represents the index of the source element. + An observable sequence that contains elements from the input sequence that satisfy the condition. + or is null. + + + + Projects each element of an observable sequence into consecutive non-overlapping buffers which are produced based on timing information. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Length of each buffer. + An observable sequence of buffers. + is null. + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers as fast as it can. + Because all source sequence elements end up in one of the buffers, some buffers won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current buffer and to create a new buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Projects each element of an observable sequence into consecutive non-overlapping buffers which are produced based on timing information, using the specified scheduler to run timers. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Length of each buffer. + Scheduler to run buffering timers on. + An observable sequence of buffers. + or is null. + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers as fast as it can. + Because all source sequence elements end up in one of the buffers, some buffers won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current buffer and to create a new buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Projects each element of an observable sequence into zero or more buffers which are produced based on timing information. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Length of each buffer. + Interval between creation of consecutive buffers. + An observable sequence of buffers. + is null. + or is less than TimeSpan.Zero. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers with minimum duration + length. However, some buffers won't have a zero time span. This is a side-effect of the asynchrony introduced by the scheduler, where the action to close the + current buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers as fast as it can. + However, this doesn't mean all buffers will start at the beginning of the source sequence. This is a side-effect of the asynchrony introduced by the scheduler, + where the action to create a new buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + + + + Projects each element of an observable sequence into zero or more buffers which are produced based on timing information, using the specified scheduler to run timers. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Length of each buffer. + Interval between creation of consecutive buffers. + Scheduler to run buffering timers on. + An observable sequence of buffers. + or is null. + or is less than TimeSpan.Zero. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers with minimum duration + length. However, some buffers won't have a zero time span. This is a side-effect of the asynchrony introduced by the scheduler, where the action to close the + current buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers as fast as it can. + However, this doesn't mean all buffers will start at the beginning of the source sequence. This is a side-effect of the asynchrony introduced by the scheduler, + where the action to create a new buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + + + + Projects each element of an observable sequence into a buffer that's sent out when either it's full or a given amount of time has elapsed. + A useful real-world analogy of this overload is the behavior of a ferry leaving the dock when all seats are taken, or at the scheduled time of departure, whichever event occurs first. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Maximum time length of a window. + Maximum element count of a window. + An observable sequence of buffers. + is null. + is less than TimeSpan.Zero. -or- is less than or equal to zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers as fast as it can. + Because all source sequence elements end up in one of the buffers, some buffers won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current buffer and to create a new buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Projects each element of an observable sequence into a buffer that's sent out when either it's full or a given amount of time has elapsed, using the specified scheduler to run timers. + A useful real-world analogy of this overload is the behavior of a ferry leaving the dock when all seats are taken, or at the scheduled time of departure, whichever event occurs first. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Maximum time length of a buffer. + Maximum element count of a buffer. + Scheduler to run buffering timers on. + An observable sequence of buffers. + or is null. + is less than TimeSpan.Zero. -or- is less than or equal to zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers as fast as it can. + Because all source sequence elements end up in one of the buffers, some buffers won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current buffer and to create a new buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Time shifts the observable sequence by the specified relative time duration. + The relative time intervals between the values are preserved. + + The type of the elements in the source sequence. + Source sequence to delay values for. + Relative time by which to shift the observable sequence. If this value is equal to TimeSpan.Zero, the scheduler will dispatch observer callbacks as soon as possible. + Time-shifted sequence. + is null. + is less than TimeSpan.Zero. + + + This operator is less efficient than DelaySubscription because it records all notifications and time-delays those. This allows for immediate propagation of errors. + + + Observer callbacks for the resulting sequence will be run on the default scheduler. This effect is similar to using ObserveOn. + + + Exceptions signaled by the source sequence through an OnError callback are forwarded immediately to the result sequence. Any OnNext notifications that were in the queue at the point of the OnError callback will be dropped. + In order to delay error propagation, consider using the Observable.Materialize and Observable.Dematerialize operators, or use DelaySubscription. + + + + + + Time shifts the observable sequence by the specified relative time duration, using the specified scheduler to run timers. + The relative time intervals between the values are preserved. + + The type of the elements in the source sequence. + Source sequence to delay values for. + Relative time by which to shift the observable sequence. If this value is equal to TimeSpan.Zero, the scheduler will dispatch observer callbacks as soon as possible. + Scheduler to run the delay timers on. + Time-shifted sequence. + or is null. + is less than TimeSpan.Zero. + + + This operator is less efficient than DelaySubscription because it records all notifications and time-delays those. This allows for immediate propagation of errors. + + + Observer callbacks for the resulting sequence will be run on the specified scheduler. This effect is similar to using ObserveOn. + + + Exceptions signaled by the source sequence through an OnError callback are forwarded immediately to the result sequence. Any OnNext notifications that were in the queue at the point of the OnError callback will be dropped. + + + Exceptions signaled by the source sequence through an OnError callback are forwarded immediately to the result sequence. Any OnNext notifications that were in the queue at the point of the OnError callback will be dropped. + In order to delay error propagation, consider using the Observable.Materialize and Observable.Dematerialize operators, or use DelaySubscription. + + + + + + Time shifts the observable sequence to start propagating notifications at the specified absolute time. + The relative time intervals between the values are preserved. + + The type of the elements in the source sequence. + Source sequence to delay values for. + Absolute time used to shift the observable sequence; the relative time shift gets computed upon subscription. If this value is less than or equal to DateTimeOffset.UtcNow, the scheduler will dispatch observer callbacks as soon as possible. + Time-shifted sequence. + is null. + + + This operator is less efficient than DelaySubscription because it records all notifications and time-delays those. This allows for immediate propagation of errors. + + + Observer callbacks for the resulting sequence will be run on the default scheduler. This effect is similar to using ObserveOn. + + + Exceptions signaled by the source sequence through an OnError callback are forwarded immediately to the result sequence. Any OnNext notifications that were in the queue at the point of the OnError callback will be dropped. + In order to delay error propagation, consider using the Observable.Materialize and Observable.Dematerialize operators, or use DelaySubscription. + + + + + + Time shifts the observable sequence to start propagating notifications at the specified absolute time, using the specified scheduler to run timers. + The relative time intervals between the values are preserved. + + The type of the elements in the source sequence. + Source sequence to delay values for. + Absolute time used to shift the observable sequence; the relative time shift gets computed upon subscription. If this value is less than or equal to DateTimeOffset.UtcNow, the scheduler will dispatch observer callbacks as soon as possible. + Scheduler to run the delay timers on. + Time-shifted sequence. + or is null. + + + This operator is less efficient than DelaySubscription because it records all notifications and time-delays those. This allows for immediate propagation of errors. + + + Observer callbacks for the resulting sequence will be run on the specified scheduler. This effect is similar to using ObserveOn. + + + Exceptions signaled by the source sequence through an OnError callback are forwarded immediately to the result sequence. Any OnNext notifications that were in the queue at the point of the OnError callback will be dropped. + In order to delay error propagation, consider using the Observable.Materialize and Observable.Dematerialize operators, or use DelaySubscription. + + + + + + Time shifts the observable sequence based on a delay selector function for each element. + + The type of the elements in the source sequence. + The type of the elements in the delay sequences used to denote the delay duration of each element in the source sequence. + Source sequence to delay values for. + Selector function to retrieve a sequence indicating the delay for each given element. + Time-shifted sequence. + or is null. + + + + Time shifts the observable sequence based on a subscription delay and a delay selector function for each element. + + The type of the elements in the source sequence. + The type of the elements in the delay sequences used to denote the delay duration of each element in the source sequence. + Source sequence to delay values for. + Sequence indicating the delay for the subscription to the source. + Selector function to retrieve a sequence indicating the delay for each given element. + Time-shifted sequence. + or or is null. + + + + Time shifts the observable sequence by delaying the subscription with the specified relative time duration. + + The type of the elements in the source sequence. + Source sequence to delay subscription for. + Relative time shift of the subscription. + Time-shifted sequence. + is null. + is less than TimeSpan.Zero. + + + This operator is more efficient than Delay but postpones all side-effects of subscription and affects error propagation timing. + + + The side-effects of subscribing to the source sequence will be run on the default scheduler. Observer callbacks will not be affected. + + + + + + Time shifts the observable sequence by delaying the subscription with the specified relative time duration, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to delay subscription for. + Relative time shift of the subscription. + Scheduler to run the subscription delay timer on. + Time-shifted sequence. + or is null. + is less than TimeSpan.Zero. + + + This operator is more efficient than Delay but postpones all side-effects of subscription and affects error propagation timing. + + + The side-effects of subscribing to the source sequence will be run on the specified scheduler. Observer callbacks will not be affected. + + + + + + Time shifts the observable sequence by delaying the subscription to the specified absolute time. + + The type of the elements in the source sequence. + Source sequence to delay subscription for. + Absolute time to perform the subscription at. + Time-shifted sequence. + is null. + + + This operator is more efficient than Delay but postpones all side-effects of subscription and affects error propagation timing. + + + The side-effects of subscribing to the source sequence will be run on the default scheduler. Observer callbacks will not be affected. + + + + + + Time shifts the observable sequence by delaying the subscription to the specified absolute time, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to delay subscription for. + Absolute time to perform the subscription at. + Scheduler to run the subscription delay timer on. + Time-shifted sequence. + or is null. + + + This operator is more efficient than Delay but postpones all side-effects of subscription and affects error propagation timing. + + + The side-effects of subscribing to the source sequence will be run on the specified scheduler. Observer callbacks will not be affected. + + + + + + Generates an observable sequence by running a state-driven and temporal loop producing the sequence's elements. + + The type of the state used in the generator loop. + The type of the elements in the produced sequence. + Initial state. + Condition to terminate generation (upon returning false). + Iteration step function. + Selector function for results produced in the sequence. + Time selector function to control the speed of values being produced each iteration. + The generated sequence. + or or or is null. + + + + Generates an observable sequence by running a state-driven and temporal loop producing the sequence's elements, using the specified scheduler to run timers and to send out observer messages. + + The type of the state used in the generator loop. + The type of the elements in the produced sequence. + Initial state. + Condition to terminate generation (upon returning false). + Iteration step function. + Selector function for results produced in the sequence. + Time selector function to control the speed of values being produced each iteration. + Scheduler on which to run the generator loop. + The generated sequence. + or or or or is null. + + + + Generates an observable sequence by running a state-driven and temporal loop producing the sequence's elements. + + The type of the state used in the generator loop. + The type of the elements in the produced sequence. + Initial state. + Condition to terminate generation (upon returning false). + Iteration step function. + Selector function for results produced in the sequence. + Time selector function to control the speed of values being produced each iteration. + The generated sequence. + or or or is null. + + + + Generates an observable sequence by running a state-driven and temporal loop producing the sequence's elements, using the specified scheduler to run timers and to send out observer messages. + + The type of the state used in the generator loop. + The type of the elements in the produced sequence. + Initial state. + Condition to terminate generation (upon returning false). + Iteration step function. + Selector function for results produced in the sequence. + Time selector function to control the speed of values being produced each iteration. + Scheduler on which to run the generator loop. + The generated sequence. + or or or or is null. + + + + Returns an observable sequence that produces a value after each period. + + Period for producing the values in the resulting sequence. If this value is equal to TimeSpan.Zero, the timer will recur as fast as possible. + An observable sequence that produces a value after each period. + is less than TimeSpan.Zero. + + Intervals are measured between the start of subsequent notifications, not between the end of the previous and the start of the next notification. + If the observer takes longer than the interval period to handle the message, the subsequent notification will be delivered immediately after the + current one has been handled. In case you need to control the time between the end and the start of consecutive notifications, consider using the + + operator instead. + + + + + Returns an observable sequence that produces a value after each period, using the specified scheduler to run timers and to send out observer messages. + + Period for producing the values in the resulting sequence. If this value is equal to TimeSpan.Zero, the timer will recur as fast as possible. + Scheduler to run the timer on. + An observable sequence that produces a value after each period. + is less than TimeSpan.Zero. + is null. + + Intervals are measured between the start of subsequent notifications, not between the end of the previous and the start of the next notification. + If the observer takes longer than the interval period to handle the message, the subsequent notification will be delivered immediately after the + current one has been handled. In case you need to control the time between the end and the start of consecutive notifications, consider using the + + operator instead. + + + + + Samples the observable sequence at each interval. + Upon each sampling tick, the latest element (if any) in the source sequence during the last sampling interval is sent to the resulting sequence. + + The type of the elements in the source sequence. + Source sequence to sample. + Interval at which to sample. If this value is equal to TimeSpan.Zero, the scheduler will continuously sample the stream. + Sampled observable sequence. + is null. + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for doesn't guarantee all source sequence elements will be preserved. This is a side-effect + of the asynchrony introduced by the scheduler, where the sampling action may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Samples the observable sequence at each interval, using the specified scheduler to run sampling timers. + Upon each sampling tick, the latest element (if any) in the source sequence during the last sampling interval is sent to the resulting sequence. + + The type of the elements in the source sequence. + Source sequence to sample. + Interval at which to sample. If this value is equal to TimeSpan.Zero, the scheduler will continuously sample the stream. + Scheduler to run the sampling timer on. + Sampled observable sequence. + or is null. + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for doesn't guarantee all source sequence elements will be preserved. This is a side-effect + of the asynchrony introduced by the scheduler, where the sampling action may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Samples the source observable sequence using a sampler observable sequence producing sampling ticks. + Upon each sampling tick, the latest element (if any) in the source sequence during the last sampling interval is sent to the resulting sequence. + + The type of the elements in the source sequence. + The type of the elements in the sampling sequence. + Source sequence to sample. + Sampling tick sequence. + Sampled observable sequence. + or is null. + + + + Skips elements for the specified duration from the start of the observable source sequence. + + The type of the elements in the source sequence. + Source sequence to skip elements for. + Duration for skipping elements from the start of the sequence. + An observable sequence with the elements skipped during the specified duration from the start of the source sequence. + is null. + is less than TimeSpan.Zero. + + + Specifying a TimeSpan.Zero value for doesn't guarantee no elements will be dropped from the start of the source sequence. + This is a side-effect of the asynchrony introduced by the scheduler, where the action that causes callbacks from the source sequence to be forwarded + may not execute immediately, despite the TimeSpan.Zero due time. + + + Errors produced by the source sequence are always forwarded to the result sequence, even if the error occurs before the . + + + + + + Skips elements for the specified duration from the start of the observable source sequence, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to skip elements for. + Duration for skipping elements from the start of the sequence. + Scheduler to run the timer on. + An observable sequence with the elements skipped during the specified duration from the start of the source sequence. + or is null. + is less than TimeSpan.Zero. + + + Specifying a TimeSpan.Zero value for doesn't guarantee no elements will be dropped from the start of the source sequence. + This is a side-effect of the asynchrony introduced by the scheduler, where the action that causes callbacks from the source sequence to be forwarded + may not execute immediately, despite the TimeSpan.Zero due time. + + + Errors produced by the source sequence are always forwarded to the result sequence, even if the error occurs before the . + + + + + + Skips elements for the specified duration from the end of the observable source sequence. + + The type of the elements in the source sequence. + Source sequence to skip elements for. + Duration for skipping elements from the end of the sequence. + An observable sequence with the elements skipped during the specified duration from the end of the source sequence. + is null. + is less than TimeSpan.Zero. + + This operator accumulates a queue with a length enough to store elements received during the initial window. + As more elements are received, elements older than the specified are taken from the queue and produced on the + result sequence. This causes elements to be delayed with . + + + + + Skips elements for the specified duration from the end of the observable source sequence, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to skip elements for. + Duration for skipping elements from the end of the sequence. + Scheduler to run the timer on. + An observable sequence with the elements skipped during the specified duration from the end of the source sequence. + or is null. + is less than TimeSpan.Zero. + + This operator accumulates a queue with a length enough to store elements received during the initial window. + As more elements are received, elements older than the specified are taken from the queue and produced on the + result sequence. This causes elements to be delayed with . + + + + + Skips elements from the observable source sequence until the specified start time. + + The type of the elements in the source sequence. + Source sequence to skip elements for. + Time to start taking elements from the source sequence. If this value is less than or equal to DateTimeOffset.UtcNow, no elements will be skipped. + An observable sequence with the elements skipped until the specified start time. + is null. + + Errors produced by the source sequence are always forwarded to the result sequence, even if the error occurs before the . + + + + + Skips elements from the observable source sequence until the specified start time, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to skip elements for. + Time to start taking elements from the source sequence. If this value is less than or equal to DateTimeOffset.UtcNow, no elements will be skipped. + Scheduler to run the timer on. + An observable sequence with the elements skipped until the specified start time. + or is null. + + Errors produced by the source sequence are always forwarded to the result sequence, even if the error occurs before the . + + + + + Takes elements for the specified duration from the start of the observable source sequence. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Duration for taking elements from the start of the sequence. + An observable sequence with the elements taken during the specified duration from the start of the source sequence. + is null. + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for doesn't guarantee an empty sequence will be returned. This is a side-effect + of the asynchrony introduced by the scheduler, where the action that stops forwarding callbacks from the source sequence may not execute + immediately, despite the TimeSpan.Zero due time. + + + + + Takes elements for the specified duration from the start of the observable source sequence, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Duration for taking elements from the start of the sequence. + Scheduler to run the timer on. + An observable sequence with the elements taken during the specified duration from the start of the source sequence. + or is null. + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for doesn't guarantee an empty sequence will be returned. This is a side-effect + of the asynchrony introduced by the scheduler, where the action that stops forwarding callbacks from the source sequence may not execute + immediately, despite the TimeSpan.Zero due time. + + + + + Returns elements within the specified duration from the end of the observable source sequence. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Duration for taking elements from the end of the sequence. + An observable sequence with the elements taken during the specified duration from the end of the source sequence. + is null. + is less than TimeSpan.Zero. + + This operator accumulates a buffer with a length enough to store elements for any window during the lifetime of + the source sequence. Upon completion of the source sequence, this buffer is drained on the result sequence. This causes the result elements + to be delayed with . + + + + + Returns elements within the specified duration from the end of the observable source sequence, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Duration for taking elements from the end of the sequence. + Scheduler to run the timer on. + An observable sequence with the elements taken during the specified duration from the end of the source sequence. + or is null. + is less than TimeSpan.Zero. + + This operator accumulates a buffer with a length enough to store elements for any window during the lifetime of + the source sequence. Upon completion of the source sequence, this buffer is drained on the result sequence. This causes the result elements + to be delayed with . + + + + + Returns elements within the specified duration from the end of the observable source sequence, using the specified schedulers to run timers and to drain the collected elements. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Duration for taking elements from the end of the sequence. + Scheduler to run the timer on. + Scheduler to drain the collected elements. + An observable sequence with the elements taken during the specified duration from the end of the source sequence. + or or is null. + is less than TimeSpan.Zero. + + This operator accumulates a buffer with a length enough to store elements for any window during the lifetime of + the source sequence. Upon completion of the source sequence, this buffer is drained on the result sequence. This causes the result elements + to be delayed with . + + + + + Returns a list with the elements within the specified duration from the end of the observable source sequence. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Duration for taking elements from the end of the sequence. + An observable sequence containing a single list with the elements taken during the specified duration from the end of the source sequence. + is null. + is less than TimeSpan.Zero. + + This operator accumulates a buffer with a length enough to store elements for any window during the lifetime of + the source sequence. Upon completion of the source sequence, this buffer is produced on the result sequence. + + + + + Returns a list with the elements within the specified duration from the end of the observable source sequence, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Duration for taking elements from the end of the sequence. + Scheduler to run the timer on. + An observable sequence containing a single list with the elements taken during the specified duration from the end of the source sequence. + or is null. + is less than TimeSpan.Zero. + + This operator accumulates a buffer with a length enough to store elements for any window during the lifetime of + the source sequence. Upon completion of the source sequence, this buffer is produced on the result sequence. + + + + + Takes elements for the specified duration until the specified end time. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Time to stop taking elements from the source sequence. If this value is less than or equal to DateTimeOffset.UtcNow, the result stream will complete immediately. + An observable sequence with the elements taken until the specified end time. + is null. + + + + Takes elements for the specified duration until the specified end time, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Time to stop taking elements from the source sequence. If this value is less than or equal to DateTimeOffset.UtcNow, the result stream will complete immediately. + Scheduler to run the timer on. + An observable sequence with the elements taken until the specified end time. + or is null. + + + + Ignores elements from an observable sequence which are followed by another element within a specified relative time duration. + + The type of the elements in the source sequence. + Source sequence to throttle. + Throttling duration for each element. + The throttled sequence. + is null. + is less than TimeSpan.Zero. + + + This operator throttles the source sequence by holding on to each element for the duration specified in . If another + element is produced within this time window, the element is dropped and a new timer is started for the current element, repeating this whole + process. For streams that never have gaps larger than or equal to between elements, the resulting stream won't + produce any elements. In order to reduce the volume of a stream whilst guaranteeing the periodic production of elements, consider using the + Observable.Sample set of operators. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing throttling timers to be scheduled + that are due immediately. However, this doesn't guarantee all elements will be retained in the result sequence. This is a side-effect of the + asynchrony introduced by the scheduler, where the action to forward the current element may not execute immediately, despite the TimeSpan.Zero + due time. In such cases, the next element may arrive before the scheduler gets a chance to run the throttling action. + + + + + + Ignores elements from an observable sequence which are followed by another element within a specified relative time duration, using the specified scheduler to run throttling timers. + + The type of the elements in the source sequence. + Source sequence to throttle. + Throttling duration for each element. + Scheduler to run the throttle timers on. + The throttled sequence. + or is null. + is less than TimeSpan.Zero. + + + This operator throttles the source sequence by holding on to each element for the duration specified in . If another + element is produced within this time window, the element is dropped and a new timer is started for the current element, repeating this whole + process. For streams that never have gaps larger than or equal to between elements, the resulting stream won't + produce any elements. In order to reduce the volume of a stream whilst guaranteeing the periodic production of elements, consider using the + Observable.Sample set of operators. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing throttling timers to be scheduled + that are due immediately. However, this doesn't guarantee all elements will be retained in the result sequence. This is a side-effect of the + asynchrony introduced by the scheduler, where the action to forward the current element may not execute immediately, despite the TimeSpan.Zero + due time. In such cases, the next element may arrive before the scheduler gets a chance to run the throttling action. + + + + + + Ignores elements from an observable sequence which are followed by another value within a computed throttle duration. + + The type of the elements in the source sequence. + The type of the elements in the throttle sequences selected for each element in the source sequence. + Source sequence to throttle. + Selector function to retrieve a sequence indicating the throttle duration for each given element. + The throttled sequence. + or is null. + + This operator throttles the source sequence by holding on to each element for the duration denoted by . + If another element is produced within this time window, the element is dropped and a new timer is started for the current element, repeating this + whole process. For streams where the duration computed by applying the to each element overlaps with + the occurrence of the successor element, the resulting stream won't produce any elements. In order to reduce the volume of a stream whilst + guaranteeing the periodic production of elements, consider using the Observable.Sample set of operators. + + + + + Records the time interval between consecutive elements in an observable sequence. + + The type of the elements in the source sequence. + Source sequence to record time intervals for. + An observable sequence with time interval information on elements. + is null. + + + + Records the time interval between consecutive elements in an observable sequence, using the specified scheduler to compute time intervals. + + The type of the elements in the source sequence. + Source sequence to record time intervals for. + Scheduler used to compute time intervals. + An observable sequence with time interval information on elements. + or is null. + + + + Applies a timeout policy for each element in the observable sequence. + If the next element isn't received within the specified timeout duration starting from its predecessor, a TimeoutException is propagated to the observer. + + The type of the elements in the source sequence. + Source sequence to perform a timeout for. + Maximum duration between values before a timeout occurs. + The source sequence with a TimeoutException in case of a timeout. + is null. + is less than TimeSpan.Zero. + (Asynchronous) If no element is produced within from the previous element. + + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing timeout timers to be scheduled that are due + immediately. However, this doesn't guarantee a timeout will occur, even for the first element. This is a side-effect of the asynchrony introduced by the + scheduler, where the action to propagate a timeout may not execute immediately, despite the TimeSpan.Zero due time. In such cases, the next element may + arrive before the scheduler gets a chance to run the timeout action. + + + + + + Applies a timeout policy for each element in the observable sequence, using the specified scheduler to run timeout timers. + If the next element isn't received within the specified timeout duration starting from its predecessor, a TimeoutException is propagated to the observer. + + The type of the elements in the source sequence. + Source sequence to perform a timeout for. + Maximum duration between values before a timeout occurs. + Scheduler to run the timeout timers on. + The source sequence with a TimeoutException in case of a timeout. + or is null. + is less than TimeSpan.Zero. + (Asynchronous) If no element is produced within from the previous element. + + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing timeout timers to be scheduled that are due + immediately. However, this doesn't guarantee a timeout will occur, even for the first element. This is a side-effect of the asynchrony introduced by the + scheduler, where the action to propagate a timeout may not execute immediately, despite the TimeSpan.Zero due time. In such cases, the next element may + arrive before the scheduler gets a chance to run the timeout action. + + + + + + Applies a timeout policy for each element in the observable sequence. + If the next element isn't received within the specified timeout duration starting from its predecessor, the other observable sequence is used to produce future messages from that point on. + + The type of the elements in the source sequence and the other sequence used upon a timeout. + Source sequence to perform a timeout for. + Maximum duration between values before a timeout occurs. + Sequence to return in case of a timeout. + The source sequence switching to the other sequence in case of a timeout. + or is null. + is less than TimeSpan.Zero. + + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing timeout timers to be scheduled that are due + immediately. However, this doesn't guarantee a timeout will occur, even for the first element. This is a side-effect of the asynchrony introduced by the + scheduler, where the action to propagate a timeout may not execute immediately, despite the TimeSpan.Zero due time. In such cases, the next element may + arrive before the scheduler gets a chance to run the timeout action. + + + + + + Applies a timeout policy for each element in the observable sequence, using the specified scheduler to run timeout timers. + If the next element isn't received within the specified timeout duration starting from its predecessor, the other observable sequence is used to produce future messages from that point on. + + The type of the elements in the source sequence and the other sequence used upon a timeout. + Source sequence to perform a timeout for. + Maximum duration between values before a timeout occurs. + Sequence to return in case of a timeout. + Scheduler to run the timeout timers on. + The source sequence switching to the other sequence in case of a timeout. + or or is null. + is less than TimeSpan.Zero. + + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing timeout timers to be scheduled that are due + immediately. However, this doesn't guarantee a timeout will occur, even for the first element. This is a side-effect of the asynchrony introduced by the + scheduler, where the action to propagate a timeout may not execute immediately, despite the TimeSpan.Zero due time. In such cases, the next element may + arrive before the scheduler gets a chance to run the timeout action. + + + + + + Applies a timeout policy to the observable sequence based on an absolute time. + If the sequence doesn't terminate before the specified absolute due time, a TimeoutException is propagated to the observer. + + The type of the elements in the source sequence. + Source sequence to perform a timeout for. + Time when a timeout occurs. If this value is less than or equal to DateTimeOffset.UtcNow, the timeout occurs immediately. + The source sequence with a TimeoutException in case of a timeout. + is null. + (Asynchronous) If the sequence hasn't terminated before . + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + + + Applies a timeout policy to the observable sequence based on an absolute time, using the specified scheduler to run timeout timers. + If the sequence doesn't terminate before the specified absolute due time, a TimeoutException is propagated to the observer. + + The type of the elements in the source sequence. + Source sequence to perform a timeout for. + Time when a timeout occurs. If this value is less than or equal to DateTimeOffset.UtcNow, the timeout occurs immediately. + Scheduler to run the timeout timers on. + The source sequence with a TimeoutException in case of a timeout. + or is null. + (Asynchronous) If the sequence hasn't terminated before . + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + + + Applies a timeout policy to the observable sequence based on an absolute time. + If the sequence doesn't terminate before the specified absolute due time, the other observable sequence is used to produce future messages from that point on. + + The type of the elements in the source sequence and the other sequence used upon a timeout. + Source sequence to perform a timeout for. + Time when a timeout occurs. If this value is less than or equal to DateTimeOffset.UtcNow, the timeout occurs immediately. + Sequence to return in case of a timeout. + The source sequence switching to the other sequence in case of a timeout. + or is null. + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + + + Applies a timeout policy to the observable sequence based on an absolute time, using the specified scheduler to run timeout timers. + If the sequence doesn't terminate before the specified absolute due time, the other observable sequence is used to produce future messages from that point on. + + The type of the elements in the source sequence and the other sequence used upon a timeout. + Source sequence to perform a timeout for. + Time when a timeout occurs. If this value is less than or equal to DateTimeOffset.UtcNow, the timeout occurs immediately. + Sequence to return in case of a timeout. + Scheduler to run the timeout timers on. + The source sequence switching to the other sequence in case of a timeout. + or or is null. + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + + + Applies a timeout policy to the observable sequence based on a timeout duration computed for each element. + If the next element isn't received within the computed duration starting from its predecessor, a TimeoutException is propagated to the observer. + + The type of the elements in the source sequence. + The type of the elements in the timeout sequences used to indicate the timeout duration for each element in the source sequence. + Source sequence to perform a timeout for. + Selector to retrieve an observable sequence that represents the timeout between the current element and the next element. + The source sequence with a TimeoutException in case of a timeout. + or is null. + + + + Applies a timeout policy to the observable sequence based on a timeout duration computed for each element. + If the next element isn't received within the computed duration starting from its predecessor, the other observable sequence is used to produce future messages from that point on. + + The type of the elements in the source sequence and the other sequence used upon a timeout. + The type of the elements in the timeout sequences used to indicate the timeout duration for each element in the source sequence. + Source sequence to perform a timeout for. + Selector to retrieve an observable sequence that represents the timeout between the current element and the next element. + Sequence to return in case of a timeout. + The source sequence switching to the other sequence in case of a timeout. + or or is null. + + + + Applies a timeout policy to the observable sequence based on an initial timeout duration for the first element, and a timeout duration computed for each subsequent element. + If the next element isn't received within the computed duration starting from its predecessor, a TimeoutException is propagated to the observer. + + The type of the elements in the source sequence. + The type of the elements in the timeout sequences used to indicate the timeout duration for each element in the source sequence. + Source sequence to perform a timeout for. + Observable sequence that represents the timeout for the first element. + Selector to retrieve an observable sequence that represents the timeout between the current element and the next element. + The source sequence with a TimeoutException in case of a timeout. + or or is null. + + + + Applies a timeout policy to the observable sequence based on an initial timeout duration for the first element, and a timeout duration computed for each subsequent element. + If the next element isn't received within the computed duration starting from its predecessor, the other observable sequence is used to produce future messages from that point on. + + The type of the elements in the source sequence and the other sequence used upon a timeout. + The type of the elements in the timeout sequences used to indicate the timeout duration for each element in the source sequence. + Source sequence to perform a timeout for. + Observable sequence that represents the timeout for the first element. + Selector to retrieve an observable sequence that represents the timeout between the current element and the next element. + Sequence to return in case of a timeout. + The source sequence switching to the other sequence in case of a timeout. + or or or is null. + + + + Returns an observable sequence that produces a single value after the specified relative due time has elapsed. + + Relative time at which to produce the value. If this value is less than or equal to TimeSpan.Zero, the timer will fire as soon as possible. + An observable sequence that produces a value after the due time has elapsed. + + + + Returns an observable sequence that produces a single value at the specified absolute due time. + + Absolute time at which to produce the value. If this value is less than or equal to DateTimeOffset.UtcNow, the timer will fire as soon as possible. + An observable sequence that produces a value at due time. + + + + Returns an observable sequence that periodically produces a value after the specified initial relative due time has elapsed. + + Relative time at which to produce the first value. If this value is less than or equal to TimeSpan.Zero, the timer will fire as soon as possible. + Period to produce subsequent values. If this value is equal to TimeSpan.Zero, the timer will recur as fast as possible. + An observable sequence that produces a value after due time has elapsed and then after each period. + is less than TimeSpan.Zero. + + + + Returns an observable sequence that periodically produces a value starting at the specified initial absolute due time. + + Absolute time at which to produce the first value. If this value is less than or equal to DateTimeOffset.UtcNow, the timer will fire as soon as possible. + Period to produce subsequent values. If this value is equal to TimeSpan.Zero, the timer will recur as fast as possible. + An observable sequence that produces a value at due time and then after each period. + is less than TimeSpan.Zero. + + + + Returns an observable sequence that produces a single value after the specified relative due time has elapsed, using the specified scheduler to run the timer. + + Relative time at which to produce the value. If this value is less than or equal to TimeSpan.Zero, the timer will fire as soon as possible. + Scheduler to run the timer on. + An observable sequence that produces a value after the due time has elapsed. + is null. + + + + Returns an observable sequence that produces a single value at the specified absolute due time, using the specified scheduler to run the timer. + + Absolute time at which to produce the value. If this value is less than or equal to DateTimeOffset.UtcNow, the timer will fire as soon as possible. + Scheduler to run the timer on. + An observable sequence that produces a value at due time. + is null. + + + + Returns an observable sequence that periodically produces a value after the specified initial relative due time has elapsed, using the specified scheduler to run timers. + + Relative time at which to produce the first value. If this value is less than or equal to TimeSpan.Zero, the timer will fire as soon as possible. + Period to produce subsequent values. If this value is equal to TimeSpan.Zero, the timer will recur as fast as possible. + Scheduler to run timers on. + An observable sequence that produces a value after due time has elapsed and then each period. + is less than TimeSpan.Zero. + is null. + + + + Returns an observable sequence that periodically produces a value starting at the specified initial absolute due time, using the specified scheduler to run timers. + + Absolute time at which to produce the first value. If this value is less than or equal to DateTimeOffset.UtcNow, the timer will fire as soon as possible. + Period to produce subsequent values. If this value is equal to TimeSpan.Zero, the timer will recur as fast as possible. + Scheduler to run timers on. + An observable sequence that produces a value at due time and then after each period. + is less than TimeSpan.Zero. + is null. + + + + Timestamps each element in an observable sequence using the local system clock. + + The type of the elements in the source sequence. + Source sequence to timestamp elements for. + An observable sequence with timestamp information on elements. + is null. + + + + Timestamp each element in an observable sequence using the clock of the specified scheduler. + + The type of the elements in the source sequence. + Source sequence to timestamp elements for. + Scheduler used to compute timestamps. + An observable sequence with timestamp information on elements. + or is null. + + + + Projects each element of an observable sequence into consecutive non-overlapping windows which are produced based on timing information. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Length of each window. + The sequence of windows. + is null. + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows as fast as it can. + Because all source sequence elements end up in one of the windows, some windows won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current window and to create a new window may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Projects each element of an observable sequence into consecutive non-overlapping windows which are produced based on timing information, using the specified scheduler to run timers. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Length of each window. + Scheduler to run windowing timers on. + An observable sequence of windows. + or is null. + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows as fast as it can. + Because all source sequence elements end up in one of the windows, some windows won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current window and to create a new window may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Projects each element of an observable sequence into zero or more windows which are produced based on timing information. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Length of each window. + Interval between creation of consecutive windows. + An observable sequence of windows. + is null. + or is less than TimeSpan.Zero. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows with minimum duration + length. However, some windows won't have a zero time span. This is a side-effect of the asynchrony introduced by the scheduler, where the action to close the + current window may not execute immediately, despite the TimeSpan.Zero due time. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows as fast as it can. + However, this doesn't mean all windows will start at the beginning of the source sequence. This is a side-effect of the asynchrony introduced by the scheduler, + where the action to create a new window may not execute immediately, despite the TimeSpan.Zero due time. + + + + + + Projects each element of an observable sequence into zero or more windows which are produced based on timing information, using the specified scheduler to run timers. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Length of each window. + Interval between creation of consecutive windows. + Scheduler to run windowing timers on. + An observable sequence of windows. + or is null. + or is less than TimeSpan.Zero. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows with minimum duration + length. However, some windows won't have a zero time span. This is a side-effect of the asynchrony introduced by the scheduler, where the action to close the + current window may not execute immediately, despite the TimeSpan.Zero due time. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows as fast as it can. + However, this doesn't mean all windows will start at the beginning of the source sequence. This is a side-effect of the asynchrony introduced by the scheduler, + where the action to create a new window may not execute immediately, despite the TimeSpan.Zero due time. + + + + + + Projects each element of an observable sequence into a window that is completed when either it's full or a given amount of time has elapsed. + A useful real-world analogy of this overload is the behavior of a ferry leaving the dock when all seats are taken, or at the scheduled time of departure, whichever event occurs first. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Maximum time length of a window. + Maximum element count of a window. + An observable sequence of windows. + is null. + is less than TimeSpan.Zero. -or- is less than or equal to zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows as fast as it can. + Because all source sequence elements end up in one of the windows, some windows won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current window and to create a new window may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Projects each element of an observable sequence into a window that is completed when either it's full or a given amount of time has elapsed, using the specified scheduler to run timers. + A useful real-world analogy of this overload is the behavior of a ferry leaving the dock when all seats are taken, or at the scheduled time of departure, whichever event occurs first. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Maximum time length of a window. + Maximum element count of a window. + Scheduler to run windowing timers on. + An observable sequence of windows. + or is null. + is less than TimeSpan.Zero. -or- is less than or equal to zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows as fast as it can. + Because all source sequence elements end up in one of the windows, some windows won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current window and to create a new window may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Provides a set of static methods for writing in-memory queries over observable sequences. + + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + First observable source. + Second observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + First observable source. + Second observable source. + Third observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or is null. + + + + Merges two observable sequences into one observable sequence by combining each element from the first source with the latest element from the second source, if any. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + First observable source. + Second observable source. + An observable sequence containing the result of combining each element of the first source with the latest element from the second source, if any, as a tuple value. + or is null. + + + + Merges an observable sequence and an enumerable sequence into one observable sequence of tuple values. + + The type of the elements in the first observable source sequence. + The type of the elements in the second enumerable source sequence. + First observable source. + Second enumerable source. + An observable sequence containing the result of pairwise combining the elements of the first and second source as a tuple value. + or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + First observable source. + Second observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + First observable source. + Second observable source. + Third observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or is null. + + + + Subscribes to each observable sequence returned by the iteratorMethod in sequence and returns the observable sequence of values sent to the observer given to the iteratorMethod. + + The type of the elements in the produced sequence. + Iterator method that produces elements in the resulting sequence by calling the given observer. + An observable sequence obtained by running the iterator and returning the elements that were sent to the observer. + is null. + + + + Subscribes to each observable sequence returned by the iteratorMethod in sequence and produces a Unit value on the resulting sequence for each step of the iteration. + + Iterator method that drives the resulting observable sequence. + An observable sequence obtained by running the iterator and returning Unit values for each iteration step. + is null. + + + + Expands an observable sequence by recursively invoking selector, using the specified scheduler to enumerate the queue of obtained sequences. + + The type of the elements in the source sequence and each of the recursively expanded sources obtained by running the selector function. + Source sequence with the initial elements. + Selector function to invoke for each produced element, resulting in another sequence to which the selector will be invoked recursively again. + Scheduler on which to perform the expansion by enumerating the internal queue of obtained sequences. + An observable sequence containing all the elements produced by the recursive expansion. + or or is null. + + + + Expands an observable sequence by recursively invoking selector. + + The type of the elements in the source sequence and each of the recursively expanded sources obtained by running the selector function. + Source sequence with the initial elements. + Selector function to invoke for each produced element, resulting in another sequence to which the selector will be invoked recursively again. + An observable sequence containing all the elements produced by the recursive expansion. + or is null. + + + + Runs two observable sequences in parallel and combines their last elements. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable sequence. + Second observable sequence. + Result selector function to invoke with the last elements of both sequences. + An observable sequence with the result of calling the selector function with the last elements of both input sequences. + or or is null. + + + + Runs all specified observable sequences in parallel and collects their last elements. + + The type of the elements in the source sequences. + Observable sequence to collect the last elements for. + An observable sequence with an array collecting the last elements of all the input sequences. + is null. + + + + Runs all observable sequences in the enumerable sources sequence in parallel and collect their last elements. + + The type of the elements in the source sequences. + Observable sequence to collect the last elements for. + An observable sequence with an array collecting the last elements of all the input sequences. + is null. + + + + Returns an observable sequence that is the result of invoking the selector on the source sequence, without sharing subscriptions. + This operator allows for a fluent style of writing queries that use the same sequence multiple times. + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence that will be shared in the selector function. + Selector function which can use the source sequence as many times as needed, without sharing subscriptions to the source sequence. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + or is null. + + + + Comonadic bind operator. + + + + + Comonadic bind operator. + + + + + Immediately subscribes to source and retains the elements in the observable sequence. + + The type of the elements in the source sequence. + Source sequence. + Object that's both an observable sequence and a list which can be used to access the source sequence's elements. + is null. + + + + Provides a set of static methods for writing queries over observable sequences, allowing translation to a target query language. + + + + + Gets the local query provider which will retarget Qbservable-based queries to the corresponding Observable-based query for in-memory execution upon subscription. + + + + + Converts an in-memory observable sequence into an sequence with an expression tree representing the source sequence. + + The type of the elements in the source sequence. + Source sequence. + sequence representing the given observable source sequence. + is null. + + + + Returns the input typed as an . + This operator is used to separate the part of the query that's captured as an expression tree from the part that's executed locally. + + The type of the elements in the source sequence. + An sequence to convert to an sequence. + The original source object, but typed as an . + is null. + + + + Converts an enumerable sequence to an observable sequence. + + The type of the elements in the source sequence. + Enumerable sequence to convert to an observable sequence. + The observable sequence whose elements are pulled from the given enumerable sequence. + is null. + This operator requires the source's object (see ) to implement . + + + + Converts an enumerable sequence to an observable sequence, using the specified scheduler to run the enumeration loop. + + The type of the elements in the source sequence. + Enumerable sequence to convert to an observable sequence. + Scheduler to run the enumeration of the input sequence on. + The observable sequence whose elements are pulled from the given enumerable sequence. + or is null. + This operator requires the source's object (see ) to implement . + + + + Applies an accumulator function over an observable sequence, returning the result of the aggregation as a single element in the result sequence. + For aggregation behavior with incremental intermediate results, see . + + The type of the elements in the source sequence and the result of the aggregation. + An observable sequence to aggregate over. + An accumulator function to be invoked on each element. + An observable sequence containing a single element with the final accumulator value. + + or is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Applies an accumulator function over an observable sequence, returning the result of the aggregation as a single element in the result sequence. The specified seed value is used as the initial accumulator value. + For aggregation behavior with incremental intermediate results, see . + + The type of the elements in the source sequence. + The type of the result of the aggregation. + An observable sequence to aggregate over. + The initial accumulator value. + An accumulator function to be invoked on each element. + An observable sequence containing a single element with the final accumulator value. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Applies an accumulator function over an observable sequence, returning the result of the aggregation as a single element in the result sequence. The specified seed value is used as the initial accumulator value, + and the specified result selector function is used to select the result value. + + The type of the elements in the source sequence. + The type of the accumulator value. + The type of the resulting value. + An observable sequence to aggregate over. + The initial accumulator value. + An accumulator function to be invoked on each element. + A function to transform the final accumulator value into the result value. + An observable sequence containing a single element with the final accumulator value. + + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Determines whether all elements of an observable sequence satisfy a condition. + + The type of the elements in the source sequence. + An observable sequence whose elements to apply the predicate to. + A function to test each element for a condition. + An observable sequence containing a single element determining whether all elements in the source sequence pass the test in the specified predicate. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Propagates the observable sequence that reacts first. + + The type of the elements in the source sequences. + First observable sequence. + Second observable sequence. + An observable sequence that surfaces either of the given sequences, whichever reacted first. + + or is null. + + + + Propagates the observable sequence that reacts first. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + Observable sources competing to react first. + An observable sequence that surfaces any of the given sequences, whichever reacted first. + + is null. + + + + Propagates the observable sequence that reacts first. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + Observable sources competing to react first. + An observable sequence that surfaces any of the given sequences, whichever reacted first. + + is null. + + + + Determines whether an observable sequence contains any elements. + + The type of the elements in the source sequence. + An observable sequence to check for non-emptiness. + An observable sequence containing a single element determining whether the source sequence contains any elements. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Determines whether any element of an observable sequence satisfies a condition. + + The type of the elements in the source sequence. + An observable sequence whose elements to apply the predicate to. + A function to test each element for a condition. + An observable sequence containing a single element determining whether any elements in the source sequence pass the test in the specified predicate. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Append a value to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to append the value to. + Value to append to the specified sequence. + The source sequence appended with the specified value. + + is null. + + + + Append a value to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to append the value to. + Value to append to the specified sequence. + Scheduler to emit the append values on. + The source sequence appended with the specified value. + + is null. + + + + Automatically connect the upstream IConnectableObservable at most once when the + specified number of IObservers have subscribed to this IObservable. + + Query provider used to construct the data source. + The type of the elements in the source sequence. + Connectable observable sequence. + The number of observers required to subscribe before the connection to source happens, non-positive value will trigger an immediate subscription. + If not null, the connection's IDisposable is provided to it. + An observable sequence that connects to the source at most once when the given number of observers have subscribed to it. + + is null. + + + + Computes the average of an observable sequence of values. + + A sequence of values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values. + + is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values. + + A sequence of values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values. + + is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values. + + A sequence of values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values. + + is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values. + + A sequence of values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values. + + is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values. + + A sequence of nullable values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + + is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values. + + A sequence of nullable values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + + is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values. + + A sequence of nullable values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + + is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + (Asynchronous) The sum of the elements in the source sequence is larger than . + + + + Computes the average of an observable sequence of nullable values. + + A sequence of nullable values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + + is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values. + + A sequence of nullable values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + + is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values. + + A sequence of values to calculate the average of. + An observable sequence containing a single element with the average of the sequence of values. + + is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values. + + or is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values. + + or is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values. + + or is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values. + + or is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values. + + or is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + + or is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + + or is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + + or is null. + (Asynchronous) The source sequence is empty. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + + or is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the average of an observable sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values to calculate the average of. + A transform function to apply to each element. + An observable sequence containing a single element with the average of the sequence of values, or null if the source sequence is empty or contains only values that are null. + + or is null. + (Asynchronous) The source sequence is empty. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Projects each element of an observable sequence into consecutive non-overlapping buffers which are produced based on element count information. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Length of each buffer. + An observable sequence of buffers. + + is null. + + is less than or equal to zero. + + + + Projects each element of an observable sequence into zero or more buffers which are produced based on element count information. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Length of each buffer. + Number of elements to skip between creation of consecutive buffers. + An observable sequence of buffers. + + is null. + + or is less than or equal to zero. + + + + Projects each element of an observable sequence into consecutive non-overlapping buffers which are produced based on timing information. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Length of each buffer. + An observable sequence of buffers. + + is null. + + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers as fast as it can. + Because all source sequence elements end up in one of the buffers, some buffers won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current buffer and to create a new buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Projects each element of an observable sequence into a buffer that's sent out when either it's full or a given amount of time has elapsed. + A useful real-world analogy of this overload is the behavior of a ferry leaving the dock when all seats are taken, or at the scheduled time of departure, whichever event occurs first. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Maximum time length of a window. + Maximum element count of a window. + An observable sequence of buffers. + + is null. + + is less than TimeSpan.Zero. -or- is less than or equal to zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers as fast as it can. + Because all source sequence elements end up in one of the buffers, some buffers won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current buffer and to create a new buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Projects each element of an observable sequence into a buffer that's sent out when either it's full or a given amount of time has elapsed, using the specified scheduler to run timers. + A useful real-world analogy of this overload is the behavior of a ferry leaving the dock when all seats are taken, or at the scheduled time of departure, whichever event occurs first. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Maximum time length of a buffer. + Maximum element count of a buffer. + Scheduler to run buffering timers on. + An observable sequence of buffers. + + or is null. + + is less than TimeSpan.Zero. -or- is less than or equal to zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers as fast as it can. + Because all source sequence elements end up in one of the buffers, some buffers won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current buffer and to create a new buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Projects each element of an observable sequence into consecutive non-overlapping buffers which are produced based on timing information, using the specified scheduler to run timers. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Length of each buffer. + Scheduler to run buffering timers on. + An observable sequence of buffers. + + or is null. + + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers as fast as it can. + Because all source sequence elements end up in one of the buffers, some buffers won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current buffer and to create a new buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Projects each element of an observable sequence into zero or more buffers which are produced based on timing information. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Length of each buffer. + Interval between creation of consecutive buffers. + An observable sequence of buffers. + + is null. + + or is less than TimeSpan.Zero. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers with minimum duration + length. However, some buffers won't have a zero time span. This is a side-effect of the asynchrony introduced by the scheduler, where the action to close the + current buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers as fast as it can. + However, this doesn't mean all buffers will start at the beginning of the source sequence. This is a side-effect of the asynchrony introduced by the scheduler, + where the action to create a new buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + + + + Projects each element of an observable sequence into zero or more buffers which are produced based on timing information, using the specified scheduler to run timers. + + The type of the elements in the source sequence, and in the lists in the result sequence. + Source sequence to produce buffers over. + Length of each buffer. + Interval between creation of consecutive buffers. + Scheduler to run buffering timers on. + An observable sequence of buffers. + + or is null. + + or is less than TimeSpan.Zero. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers with minimum duration + length. However, some buffers won't have a zero time span. This is a side-effect of the asynchrony introduced by the scheduler, where the action to close the + current buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create buffers as fast as it can. + However, this doesn't mean all buffers will start at the beginning of the source sequence. This is a side-effect of the asynchrony introduced by the scheduler, + where the action to create a new buffer may not execute immediately, despite the TimeSpan.Zero due time. + + + + + + Projects each element of an observable sequence into consecutive non-overlapping buffers. + + The type of the elements in the source sequence, and in the lists in the result sequence. + The type of the elements in the sequences indicating buffer boundary events. + Source sequence to produce buffers over. + Sequence of buffer boundary markers. The current buffer is closed and a new buffer is opened upon receiving a boundary marker. + An observable sequence of buffers. + + or is null. + + + + Projects each element of an observable sequence into consecutive non-overlapping buffers. + + The type of the elements in the source sequence, and in the lists in the result sequence. + The type of the elements in the sequences indicating buffer closing events. + Source sequence to produce buffers over. + A function invoked to define the boundaries of the produced buffers. A new buffer is started when the previous one is closed. + An observable sequence of buffers. + + or is null. + + + + Projects each element of an observable sequence into zero or more buffers. + + The type of the elements in the source sequence, and in the lists in the result sequence. + The type of the elements in the sequence indicating buffer opening events, also passed to the closing selector to obtain a sequence of buffer closing events. + The type of the elements in the sequences indicating buffer closing events. + Source sequence to produce buffers over. + Observable sequence whose elements denote the creation of new buffers. + A function invoked to define the closing of each produced buffer. + An observable sequence of buffers. + + or or is null. + + + + Uses to determine which source in to return, choosing an empty sequence if no match is found. + + Query provider used to construct the data source. + The type of the value returned by the selector function, used to look up the resulting source. + The type of the elements in the result sequence. + Selector function invoked to determine the source to lookup in the dictionary. + Dictionary of sources to select from based on the invocation result. + The observable sequence retrieved from the dictionary based on the invocation result, or an empty sequence if no match is found. + + or is null. + + + + Uses to determine which source in to return, choosing if no match is found. + + Query provider used to construct the data source. + The type of the value returned by the selector function, used to look up the resulting source. + The type of the elements in the result sequence. + Selector function invoked to determine the source to lookup in the dictionary. + Dictionary of sources to select from based on the invocation result. + Default source to select in case no matching source in is found. + The observable sequence retrieved from the dictionary based on the invocation result, or if no match is found. + + or or is null. + + + + Uses to determine which source in to return, choosing an empty sequence on the specified scheduler if no match is found. + + Query provider used to construct the data source. + The type of the value returned by the selector function, used to look up the resulting source. + The type of the elements in the result sequence. + Selector function invoked to determine the source to lookup in the dictionary. + Dictionary of sources to select from based on the invocation result. + Scheduler to generate an empty sequence on in case no matching source in is found. + The observable sequence retrieved from the dictionary based on the invocation result, or an empty sequence if no match is found. + + or or is null. + + + + Converts the elements of an observable sequence to the specified type. + + The type to convert the elements in the source sequence to. + The observable sequence that contains the elements to be converted. + An observable sequence that contains each element of the source sequence converted to the specified type. + + is null. + + + + Continues an observable sequence that is terminated by an exception with the next observable sequence. + + The type of the elements in the source sequence and handler sequence. + First observable sequence whose exception (if any) is caught. + Second observable sequence used to produce results when an error occurred in the first sequence. + An observable sequence containing the first sequence's elements, followed by the elements of the second sequence in case an exception occurred. + + or is null. + + + + Continues an observable sequence that is terminated by an exception with the next observable sequence. + + Query provider used to construct the data source. + The type of the elements in the source and handler sequences. + Observable sequences to catch exceptions for. + An observable sequence containing elements from consecutive source sequences until a source sequence terminates successfully. + + is null. + + + + Continues an observable sequence that is terminated by an exception with the next observable sequence. + + Query provider used to construct the data source. + The type of the elements in the source and handler sequences. + Observable sequences to catch exceptions for. + An observable sequence containing elements from consecutive source sequences until a source sequence terminates successfully. + + is null. + + + + Continues an observable sequence that is terminated by an exception of the specified type with the observable sequence produced by the handler. + + The type of the elements in the source sequence and sequences returned by the exception handler function. + The type of the exception to catch and handle. Needs to derive from . + Source sequence. + Exception handler function, producing another observable sequence. + An observable sequence containing the source sequence's elements, followed by the elements produced by the handler's resulting observable sequence in case an exception occurred. + + or is null. + + + + Produces an enumerable sequence of consecutive (possibly empty) chunks of the source sequence. + + The type of the elements in the source sequence. + Source observable sequence. + The enumerable sequence that returns consecutive (possibly empty) chunks upon each iteration. + + is null. + This operator requires the source's object (see ) to implement . + + + + Produces an enumerable sequence that returns elements collected/aggregated from the source sequence between consecutive iterations. + + The type of the elements in the source sequence. + The type of the elements produced by the merge operation during collection. + Source observable sequence. + Factory to create the initial collector object. + Merges a sequence element with the current collector. + Factory to replace the current collector by a new collector. + The enumerable sequence that returns collected/aggregated elements from the source sequence upon each iteration. + + or or or is null. + This operator requires the source's object (see ) to implement . + + + + Produces an enumerable sequence that returns elements collected/aggregated from the source sequence between consecutive iterations. + + The type of the elements in the source sequence. + The type of the elements produced by the merge operation during collection. + Source observable sequence. + Factory to create a new collector object. + Merges a sequence element with the current collector. + The enumerable sequence that returns collected/aggregated elements from the source sequence upon each iteration. + + or or is null. + This operator requires the source's object (see ) to implement . + + + + Merges the specified observable sequences into one observable sequence by emitting a list with the latest source elements whenever any of the observable sequences produces an element. + + Query provider used to construct the data source. + The type of the elements in the source sequences, and in the lists in the result sequence. + Observable sources. + An observable sequence containing lists of the latest elements of the sources. + + is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by emitting a list with the latest source elements whenever any of the observable sequences produces an element. + + Query provider used to construct the data source. + The type of the elements in the source sequences, and in the lists in the result sequence. + Observable sources. + An observable sequence containing lists of the latest elements of the sources. + + is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + The type of the elements in the result sequence, returned by the selector function. + Observable sources. + Function to invoke whenever any of the sources produces an element. For efficiency, the input list is reused after the selector returns. Either aggregate or copy the values during the function call. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges two observable sequences into one observable sequence by using the selector function whenever one of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Function to invoke whenever either of the sources produces an element. + An observable sequence containing the result of combining elements of both sources using the specified result selector function. + + or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Fifteenth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + The type of the elements in the sixteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Fifteenth observable source. + Sixteenth observable source. + Function to invoke whenever any of the sources produces an element. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or or or or or or or or is null. + If a non-empty source completes, its very last value will be used for creating subsequent combinations until all sources terminate. + + + + Concatenates the second observable sequence to the first observable sequence upon successful termination of the first. + + The type of the elements in the source sequences. + First observable sequence. + Second observable sequence. + An observable sequence that contains the elements of the first sequence, followed by those of the second the sequence. + + or is null. + + + + Concatenates all of the specified observable sequences, as long as the previous observable sequence terminated successfully. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + Observable sequences to concatenate. + An observable sequence that contains the elements of each given sequence, in sequential order. + + is null. + + + + Concatenates all observable sequences in the given enumerable sequence, as long as the previous observable sequence terminated successfully. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + Observable sequences to concatenate. + An observable sequence that contains the elements of each given sequence, in sequential order. + + is null. + + + + Concatenates all inner observable sequences, as long as the previous observable sequence terminated successfully. + + The type of the elements in the source sequences. + Observable sequence of inner observable sequences. + An observable sequence that contains the elements of each observed inner sequence, in sequential order. + + is null. + + + + Concatenates all task results, as long as the previous task terminated successfully. + + The type of the results produced by the tasks. + Observable sequence of tasks. + An observable sequence that contains the results of each task, in sequential order. + + is null. + If the tasks support cancellation, consider manual conversion of the tasks using , followed by a concatenation operation using . + + + + Determines whether an observable sequence contains a specified element by using the default equality comparer. + + The type of the elements in the source sequence. + An observable sequence in which to locate a value. + The value to locate in the source sequence. + An observable sequence containing a single element determining whether the source sequence contains an element that has the specified value. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Determines whether an observable sequence contains a specified element by using a specified System.Collections.Generic.IEqualityComparer{T}. + + The type of the elements in the source sequence. + An observable sequence in which to locate a value. + The value to locate in the source sequence. + An equality comparer to compare elements. + An observable sequence containing a single element determining whether the source sequence contains an element that has the specified value. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns an observable sequence containing an that represents the total number of elements in an observable sequence. + + The type of the elements in the source sequence. + An observable sequence that contains elements to be counted. + An observable sequence containing a single element with the number of elements in the input sequence. + + is null. + (Asynchronous) The number of elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns an observable sequence containing an that represents how many elements in the specified observable sequence satisfy a condition. + + The type of the elements in the source sequence. + An observable sequence that contains elements to be counted. + A function to test each element for a condition. + An observable sequence containing a single element with a number that represents how many elements in the input sequence satisfy the condition in the predicate function. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates an observable sequence from a specified Subscribe method implementation. + + Query provider used to construct the data source. + The type of the elements in the produced sequence. + Implementation of the resulting observable sequence's Subscribe method. + The observable sequence with the specified implementation for the Subscribe method. + + is null. + + Use of this operator is preferred over manual implementation of the interface. In case + you need a type implementing rather than an anonymous implementation, consider using + the abstract base class. + + + + + Creates an observable sequence from a specified Subscribe method implementation. + + Query provider used to construct the data source. + The type of the elements in the produced sequence. + Implementation of the resulting observable sequence's Subscribe method, returning an Action delegate that will be wrapped in an IDisposable. + The observable sequence with the specified implementation for the Subscribe method. + + is null. + + Use of this operator is preferred over manual implementation of the interface. In case + you need a type implementing rather than an anonymous implementation, consider using + the abstract base class. + + + + + Creates an observable sequence from a specified cancellable asynchronous Subscribe method. + The CancellationToken passed to the asynchronous Subscribe method is tied to the returned disposable subscription, allowing best-effort cancellation. + + Query provider used to construct the data source. + The type of the elements in the produced sequence. + Asynchronous method used to produce elements. + The observable sequence surfacing the elements produced by the asynchronous method. + + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous subscribe function will be signaled. + + + + Creates an observable sequence from a specified asynchronous Subscribe method. + + Query provider used to construct the data source. + The type of the elements in the produced sequence. + Asynchronous method used to produce elements. + The observable sequence surfacing the elements produced by the asynchronous method. + + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + + + + Creates an observable sequence from a specified cancellable asynchronous Subscribe method. + The CancellationToken passed to the asynchronous Subscribe method is tied to the returned disposable subscription, allowing best-effort cancellation. + + Query provider used to construct the data source. + The type of the elements in the produced sequence. + Asynchronous method used to implement the resulting sequence's Subscribe method. + The observable sequence with the specified implementation for the Subscribe method. + + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous subscribe function will be signaled. + + + + Creates an observable sequence from a specified asynchronous Subscribe method. + + Query provider used to construct the data source. + The type of the elements in the produced sequence. + Asynchronous method used to implement the resulting sequence's Subscribe method. + The observable sequence with the specified implementation for the Subscribe method. + + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + + + + Creates an observable sequence from a specified cancellable asynchronous Subscribe method. + The CancellationToken passed to the asynchronous Subscribe method is tied to the returned disposable subscription, allowing best-effort cancellation. + + Query provider used to construct the data source. + The type of the elements in the produced sequence. + Asynchronous method used to implement the resulting sequence's Subscribe method, returning an Action delegate that will be wrapped in an IDisposable. + The observable sequence with the specified implementation for the Subscribe method. + + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous subscribe function will be signaled. + + + + Creates an observable sequence from a specified asynchronous Subscribe method. + + Query provider used to construct the data source. + The type of the elements in the produced sequence. + Asynchronous method used to implement the resulting sequence's Subscribe method, returning an Action delegate that will be wrapped in an IDisposable. + The observable sequence with the specified implementation for the Subscribe method. + + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + + + + Returns the elements of the specified sequence or the type parameter's default value in a singleton sequence if the sequence is empty. + + The type of the elements in the source sequence (if any), whose default value will be taken if the sequence is empty. + The sequence to return a default value for if it is empty. + An observable sequence that contains the default value for the TSource type if the source is empty; otherwise, the elements of the source itself. + + is null. + + + + Returns the elements of the specified sequence or the specified value in a singleton sequence if the sequence is empty. + + The type of the elements in the source sequence (if any), and the specified default value which will be taken if the sequence is empty. + The sequence to return the specified value for if it is empty. + The value to return if the sequence is empty. + An observable sequence that contains the specified default value if the source is empty; otherwise, the elements of the source itself. + + is null. + + + + Returns an observable sequence that invokes the specified factory function whenever a new observer subscribes. + + Query provider used to construct the data source. + The type of the elements in the sequence returned by the factory function, and in the resulting sequence. + Observable factory function to invoke for each observer that subscribes to the resulting sequence. + An observable sequence whose observers trigger an invocation of the given observable factory function. + + is null. + + + + Returns an observable sequence that starts the specified asynchronous factory function whenever a new observer subscribes. + + Query provider used to construct the data source. + The type of the elements in the sequence returned by the factory function, and in the resulting sequence. + Asynchronous factory function to start for each observer that subscribes to the resulting sequence. + An observable sequence whose observers trigger the given asynchronous observable factory function to be started. + + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + + + + Returns an observable sequence that starts the specified cancellable asynchronous factory function whenever a new observer subscribes. + The CancellationToken passed to the asynchronous factory function is tied to the returned disposable subscription, allowing best-effort cancellation. + + Query provider used to construct the data source. + The type of the elements in the sequence returned by the factory function, and in the resulting sequence. + Asynchronous factory function to start for each observer that subscribes to the resulting sequence. + An observable sequence whose observers trigger the given asynchronous observable factory function to be started. + + is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous observable factory function will be signaled. + + + + Time shifts the observable sequence to start propagating notifications at the specified absolute time. + The relative time intervals between the values are preserved. + + The type of the elements in the source sequence. + Source sequence to delay values for. + Absolute time used to shift the observable sequence; the relative time shift gets computed upon subscription. If this value is less than or equal to DateTimeOffset.UtcNow, the scheduler will dispatch observer callbacks as soon as possible. + Time-shifted sequence. + + is null. + + + This operator is less efficient than DelaySubscription because it records all notifications and time-delays those. This allows for immediate propagation of errors. + + + Observer callbacks for the resulting sequence will be run on the default scheduler. This effect is similar to using ObserveOn. + + + Exceptions signaled by the source sequence through an OnError callback are forwarded immediately to the result sequence. Any OnNext notifications that were in the queue at the point of the OnError callback will be dropped. + In order to delay error propagation, consider using the Observable.Materialize and Observable.Dematerialize operators, or use DelaySubscription. + + + + + + Time shifts the observable sequence to start propagating notifications at the specified absolute time, using the specified scheduler to run timers. + The relative time intervals between the values are preserved. + + The type of the elements in the source sequence. + Source sequence to delay values for. + Absolute time used to shift the observable sequence; the relative time shift gets computed upon subscription. If this value is less than or equal to DateTimeOffset.UtcNow, the scheduler will dispatch observer callbacks as soon as possible. + Scheduler to run the delay timers on. + Time-shifted sequence. + + or is null. + + + This operator is less efficient than DelaySubscription because it records all notifications and time-delays those. This allows for immediate propagation of errors. + + + Observer callbacks for the resulting sequence will be run on the specified scheduler. This effect is similar to using ObserveOn. + + + Exceptions signaled by the source sequence through an OnError callback are forwarded immediately to the result sequence. Any OnNext notifications that were in the queue at the point of the OnError callback will be dropped. + In order to delay error propagation, consider using the Observable.Materialize and Observable.Dematerialize operators, or use DelaySubscription. + + + + + + Time shifts the observable sequence by the specified relative time duration. + The relative time intervals between the values are preserved. + + The type of the elements in the source sequence. + Source sequence to delay values for. + Relative time by which to shift the observable sequence. If this value is equal to TimeSpan.Zero, the scheduler will dispatch observer callbacks as soon as possible. + Time-shifted sequence. + + is null. + + is less than TimeSpan.Zero. + + + This operator is less efficient than DelaySubscription because it records all notifications and time-delays those. This allows for immediate propagation of errors. + + + Observer callbacks for the resulting sequence will be run on the default scheduler. This effect is similar to using ObserveOn. + + + Exceptions signaled by the source sequence through an OnError callback are forwarded immediately to the result sequence. Any OnNext notifications that were in the queue at the point of the OnError callback will be dropped. + In order to delay error propagation, consider using the Observable.Materialize and Observable.Dematerialize operators, or use DelaySubscription. + + + + + + Time shifts the observable sequence by the specified relative time duration, using the specified scheduler to run timers. + The relative time intervals between the values are preserved. + + The type of the elements in the source sequence. + Source sequence to delay values for. + Relative time by which to shift the observable sequence. If this value is equal to TimeSpan.Zero, the scheduler will dispatch observer callbacks as soon as possible. + Scheduler to run the delay timers on. + Time-shifted sequence. + + or is null. + + is less than TimeSpan.Zero. + + + This operator is less efficient than DelaySubscription because it records all notifications and time-delays those. This allows for immediate propagation of errors. + + + Observer callbacks for the resulting sequence will be run on the specified scheduler. This effect is similar to using ObserveOn. + + + Exceptions signaled by the source sequence through an OnError callback are forwarded immediately to the result sequence. Any OnNext notifications that were in the queue at the point of the OnError callback will be dropped. + + + Exceptions signaled by the source sequence through an OnError callback are forwarded immediately to the result sequence. Any OnNext notifications that were in the queue at the point of the OnError callback will be dropped. + In order to delay error propagation, consider using the Observable.Materialize and Observable.Dematerialize operators, or use DelaySubscription. + + + + + + Time shifts the observable sequence based on a delay selector function for each element. + + The type of the elements in the source sequence. + The type of the elements in the delay sequences used to denote the delay duration of each element in the source sequence. + Source sequence to delay values for. + Selector function to retrieve a sequence indicating the delay for each given element. + Time-shifted sequence. + + or is null. + + + + Time shifts the observable sequence based on a subscription delay and a delay selector function for each element. + + The type of the elements in the source sequence. + The type of the elements in the delay sequences used to denote the delay duration of each element in the source sequence. + Source sequence to delay values for. + Sequence indicating the delay for the subscription to the source. + Selector function to retrieve a sequence indicating the delay for each given element. + Time-shifted sequence. + + or or is null. + + + + Time shifts the observable sequence by delaying the subscription to the specified absolute time. + + The type of the elements in the source sequence. + Source sequence to delay subscription for. + Absolute time to perform the subscription at. + Time-shifted sequence. + + is null. + + + This operator is more efficient than Delay but postpones all side-effects of subscription and affects error propagation timing. + + + The side-effects of subscribing to the source sequence will be run on the default scheduler. Observer callbacks will not be affected. + + + + + + Time shifts the observable sequence by delaying the subscription to the specified absolute time, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to delay subscription for. + Absolute time to perform the subscription at. + Scheduler to run the subscription delay timer on. + Time-shifted sequence. + + or is null. + + + This operator is more efficient than Delay but postpones all side-effects of subscription and affects error propagation timing. + + + The side-effects of subscribing to the source sequence will be run on the specified scheduler. Observer callbacks will not be affected. + + + + + + Time shifts the observable sequence by delaying the subscription with the specified relative time duration. + + The type of the elements in the source sequence. + Source sequence to delay subscription for. + Relative time shift of the subscription. + Time-shifted sequence. + + is null. + + is less than TimeSpan.Zero. + + + This operator is more efficient than Delay but postpones all side-effects of subscription and affects error propagation timing. + + + The side-effects of subscribing to the source sequence will be run on the default scheduler. Observer callbacks will not be affected. + + + + + + Time shifts the observable sequence by delaying the subscription with the specified relative time duration, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to delay subscription for. + Relative time shift of the subscription. + Scheduler to run the subscription delay timer on. + Time-shifted sequence. + + or is null. + + is less than TimeSpan.Zero. + + + This operator is more efficient than Delay but postpones all side-effects of subscription and affects error propagation timing. + + + The side-effects of subscribing to the source sequence will be run on the specified scheduler. Observer callbacks will not be affected. + + + + + + Dematerializes the explicit notification values of an observable sequence as implicit notifications. + + The type of the elements materialized in the source sequence notification objects. + An observable sequence containing explicit notification values which have to be turned into implicit notifications. + An observable sequence exhibiting the behavior corresponding to the source sequence's notification values. + + is null. + + + + Returns an observable sequence that contains only distinct elements. + + The type of the elements in the source sequence. + An observable sequence to retain distinct elements for. + An observable sequence only containing the distinct elements from the source sequence. + + is null. + Usage of this operator should be considered carefully due to the maintenance of an internal lookup structure which can grow large. + + + + Returns an observable sequence that contains only distinct elements according to the comparer. + + The type of the elements in the source sequence. + An observable sequence to retain distinct elements for. + Equality comparer for source elements. + An observable sequence only containing the distinct elements from the source sequence. + + or is null. + Usage of this operator should be considered carefully due to the maintenance of an internal lookup structure which can grow large. + + + + Returns an observable sequence that contains only distinct elements according to the keySelector. + + The type of the elements in the source sequence. + The type of the discriminator key computed for each element in the source sequence. + An observable sequence to retain distinct elements for. + A function to compute the comparison key for each element. + An observable sequence only containing the distinct elements, based on a computed key value, from the source sequence. + + or is null. + Usage of this operator should be considered carefully due to the maintenance of an internal lookup structure which can grow large. + + + + Returns an observable sequence that contains only distinct elements according to the keySelector and the comparer. + + The type of the elements in the source sequence. + The type of the discriminator key computed for each element in the source sequence. + An observable sequence to retain distinct elements for. + A function to compute the comparison key for each element. + Equality comparer for source elements. + An observable sequence only containing the distinct elements, based on a computed key value, from the source sequence. + + or or is null. + Usage of this operator should be considered carefully due to the maintenance of an internal lookup structure which can grow large. + + + + Returns an observable sequence that contains only distinct contiguous elements. + + The type of the elements in the source sequence. + An observable sequence to retain distinct contiguous elements for. + An observable sequence only containing the distinct contiguous elements from the source sequence. + + is null. + + + + Returns an observable sequence that contains only distinct contiguous elements according to the comparer. + + The type of the elements in the source sequence. + An observable sequence to retain distinct contiguous elements for. + Equality comparer for source elements. + An observable sequence only containing the distinct contiguous elements from the source sequence. + + or is null. + + + + Returns an observable sequence that contains only distinct contiguous elements according to the keySelector. + + The type of the elements in the source sequence. + The type of the discriminator key computed for each element in the source sequence. + An observable sequence to retain distinct contiguous elements for, based on a computed key value. + A function to compute the comparison key for each element. + An observable sequence only containing the distinct contiguous elements, based on a computed key value, from the source sequence. + + or is null. + + + + Returns an observable sequence that contains only distinct contiguous elements according to the keySelector and the comparer. + + The type of the elements in the source sequence. + The type of the discriminator key computed for each element in the source sequence. + An observable sequence to retain distinct contiguous elements for, based on a computed key value. + A function to compute the comparison key for each element. + Equality comparer for computed key values. + An observable sequence only containing the distinct contiguous elements, based on a computed key value, from the source sequence. + + or or is null. + + + + Invokes the observer's methods for each message in the source sequence. + This method can be used for debugging, logging, etc. of query behavior by intercepting the message stream to run arbitrary actions for messages on the pipeline. + + The type of the elements in the source sequence. + Source sequence. + Observer whose methods to invoke as part of the source sequence's observation. + The source sequence with the side-effecting behavior applied. + + or is null. + + + + Invokes an action for each element in the observable sequence, and propagates all observer messages through the result sequence. + This method can be used for debugging, logging, etc. of query behavior by intercepting the message stream to run arbitrary actions for messages on the pipeline. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke for each element in the observable sequence. + The source sequence with the side-effecting behavior applied. + + or is null. + + + + Invokes an action for each element in the observable sequence and invokes an action upon graceful termination of the observable sequence. + This method can be used for debugging, logging, etc. of query behavior by intercepting the message stream to run arbitrary actions for messages on the pipeline. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke for each element in the observable sequence. + Action to invoke upon graceful termination of the observable sequence. + The source sequence with the side-effecting behavior applied. + + or or is null. + + + + Invokes an action for each element in the observable sequence and invokes an action upon exceptional termination of the observable sequence. + This method can be used for debugging, logging, etc. of query behavior by intercepting the message stream to run arbitrary actions for messages on the pipeline. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke for each element in the observable sequence. + Action to invoke upon exceptional termination of the observable sequence. + The source sequence with the side-effecting behavior applied. + + or or is null. + + + + Invokes an action for each element in the observable sequence and invokes an action upon graceful or exceptional termination of the observable sequence. + This method can be used for debugging, logging, etc. of query behavior by intercepting the message stream to run arbitrary actions for messages on the pipeline. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke for each element in the observable sequence. + Action to invoke upon exceptional termination of the observable sequence. + Action to invoke upon graceful termination of the observable sequence. + The source sequence with the side-effecting behavior applied. + + or or or is null. + + + + Repeats the given as long as the specified holds, where the is evaluated after each repeated completed. + + The type of the elements in the source sequence. + Source to repeat as long as the function evaluates to true. + Condition that will be evaluated upon the completion of an iteration through the , to determine whether repetition of the source is required. + The observable sequence obtained by concatenating the sequence as long as the holds. + + or is null. + + + + Returns the element at a specified index in a sequence. + + The type of the elements in the source sequence. + Observable sequence to return the element from. + The zero-based index of the element to retrieve. + An observable sequence that produces the element at the specified position in the source sequence. + + is null. + + is less than zero. + (Asynchronous) is greater than or equal to the number of elements in the source sequence. + + + + Returns the element at a specified index in a sequence or a default value if the index is out of range. + + The type of the elements in the source sequence. + Observable sequence to return the element from. + The zero-based index of the element to retrieve. + An observable sequence that produces the element at the specified position in the source sequence, or a default value if the index is outside the bounds of the source sequence. + + is null. + + is less than zero. + + + + Returns an empty observable sequence. + + Query provider used to construct the data source. + The type used for the type parameter of the resulting sequence. + An observable sequence with no elements. + + + + Returns an empty observable sequence, using the specified scheduler to send out the single OnCompleted message. + + Query provider used to construct the data source. + The type used for the type parameter of the resulting sequence. + Scheduler to send the termination call on. + An observable sequence with no elements. + + is null. + + + + Returns an empty observable sequence, using the specified scheduler to send out the single OnCompleted message. + + Query provider used to construct the data source. + The type used for the type parameter of the resulting sequence. + Scheduler to send the termination call on. + Object solely used to infer the type of the type parameter. This parameter is typically used when creating a sequence of anonymously typed elements. + An observable sequence with no elements. + + is null. + + + + Returns an empty observable sequence. + + Query provider used to construct the data source. + The type used for the type parameter of the resulting sequence. + Object solely used to infer the type of the type parameter. This parameter is typically used when creating a sequence of anonymously typed elements. + An observable sequence with no elements. + + + + Invokes a specified action after the source observable sequence terminates gracefully or exceptionally. + + The type of the elements in the source sequence. + Source sequence. + Action to invoke after the source observable sequence terminates. + Source sequence with the action-invoking termination behavior applied. + + or is null. + + + + Returns the first element of an observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + Sequence containing the first element in the observable sequence. + + is null. + (Asynchronous) The source sequence is empty. + + + + Returns the first element of an observable sequence that satisfies the condition in the predicate. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + Sequence containing the first element in the observable sequence that satisfies the condition in the predicate. + + or is null. + (Asynchronous) No element satisfies the condition in the predicate. -or- The source sequence is empty. + + + + Returns the first element of an observable sequence, or a default value if no such element exists. + + The type of the elements in the source sequence. + Source observable sequence. + Sequence containing the first element in the observable sequence, or a default value if no such element exists. + + is null. + + + + Returns the first element of an observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + Sequence containing the first element in the observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. + + or is null. + + + + Concatenates the observable sequences obtained by running the for each element in the given enumerable . + + Query provider used to construct the data source. + The type of the elements in the enumerable source sequence. + The type of the elements in the observable result sequence. + Enumerable source for which each element will be mapped onto an observable source that will be concatenated in the result sequence. + Function to select an observable source for each element in the . + The observable sequence obtained by concatenating the sources returned by for each element in the . + + or is null. + + + + Converts to asynchronous action into an observable sequence. Each subscription to the resulting sequence causes the action to be started. + + Query provider used to construct the data source. + Asynchronous action to convert. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + + is null. + + + + Converts to asynchronous action into an observable sequence. Each subscription to the resulting sequence causes the action to be started. + + Query provider used to construct the data source. + Asynchronous action to convert. + Scheduler on which to notify observers. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + + is null or is null. + + + + Converts to asynchronous action into an observable sequence. Each subscription to the resulting sequence causes the action to be started. + The CancellationToken passed to the asynchronous action is tied to the observable sequence's subscription that triggered the action's invocation and can be used for best-effort cancellation. + + Query provider used to construct the data source. + Asynchronous action to convert. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous function will be signaled. + + is null. + + + + Converts to asynchronous action into an observable sequence. Each subscription to the resulting sequence causes the action to be started. + The CancellationToken passed to the asynchronous action is tied to the observable sequence's subscription that triggered the action's invocation and can be used for best-effort cancellation. + + Query provider used to construct the data source. + Asynchronous action to convert. + Scheduler on which to notify observers. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous function will be signaled. + + is null or is null. + + + + Converts to asynchronous function into an observable sequence. Each subscription to the resulting sequence causes the function to be started. + + Query provider used to construct the data source. + The type of the result returned by the asynchronous function. + Asynchronous function to convert. + An observable sequence exposing the result of invoking the function, or an exception. + + is null. + + + + Converts to asynchronous function into an observable sequence. Each subscription to the resulting sequence causes the function to be started. + The CancellationToken passed to the asynchronous function is tied to the observable sequence's subscription that triggered the function's invocation and can be used for best-effort cancellation. + + Query provider used to construct the data source. + The type of the result returned by the asynchronous function. + Asynchronous function to convert. + An observable sequence exposing the result of invoking the function, or an exception. + + is null. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous function will be signaled. + + + + Converts to asynchronous function into an observable sequence. Each subscription to the resulting sequence causes the function to be started. + + Query provider used to construct the data source. + The type of the result returned by the asynchronous function. + Asynchronous function to convert. + Scheduler on which to notify observers. + An observable sequence exposing the result of invoking the function, or an exception. + + is null or is null. + + + + Converts to asynchronous function into an observable sequence. Each subscription to the resulting sequence causes the function to be started. + The CancellationToken passed to the asynchronous function is tied to the observable sequence's subscription that triggered the function's invocation and can be used for best-effort cancellation. + + Query provider used to construct the data source. + The type of the result returned by the asynchronous function. + Asynchronous function to convert. + Scheduler on which to notify observers. + An observable sequence exposing the result of invoking the function, or an exception. + + is null or is null. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous function will be signaled. + + + + Converts an Action-based .NET event to an observable sequence. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + Query provider used to construct the data source. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + + or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEvent, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEvent, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEvent calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts an Action-based .NET event to an observable sequence. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + Query provider used to construct the data source. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEvent calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEvent that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a .NET event to an observable sequence, using a supplied event delegate type. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + Query provider used to construct the data source. + The delegate type of the event to be converted. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + + or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEvent, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEvent, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEvent calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a .NET event to an observable sequence, using a supplied event delegate type. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + Query provider used to construct the data source. + The delegate type of the event to be converted. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEvent calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEvent that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a .NET event to an observable sequence, using a conversion function to obtain the event delegate. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + Query provider used to construct the data source. + The delegate type of the event to be converted. + The type of the event data generated by the event. + A function used to convert the given event handler to a delegate compatible with the underlying .NET event. The resulting delegate is used in calls to the addHandler and removeHandler action parameters. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEvent, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEvent, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEvent calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a .NET event to an observable sequence, using a conversion function to obtain the event delegate. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + Query provider used to construct the data source. + The delegate type of the event to be converted. + The type of the event data generated by the event. + A function used to convert the given event handler to a delegate compatible with the underlying .NET event. The resulting delegate is used in calls to the addHandler and removeHandler action parameters. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + + or or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEvent calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEvent that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a generic Action-based .NET event to an observable sequence. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + Query provider used to construct the data source. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + + or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEvent, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEvent, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEvent calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a generic Action-based .NET event to an observable sequence. Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events conforming to the standard .NET event pattern, use any of the FromEventPattern overloads instead. + + Query provider used to construct the data source. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains the event argument objects passed to the invocations of the underlying .NET event. + + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEvent calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEvent that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on , to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on , to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts an instance .NET event, conforming to the standard .NET event pattern with an parameter, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the target object type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + Object instance that exposes the event to convert. + Name of the event to convert. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts an instance .NET event, conforming to the standard .NET event pattern with an parameter, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the target object type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + Object instance that exposes the event to convert. + Name of the event to convert. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a static .NET event, conforming to the standard .NET event pattern with an parameter, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the specified type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + Type that exposes the static event to convert. + Name of the event to convert. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a static .NET event, conforming to the standard .NET event pattern with an parameter, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the specified type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + Type that exposes the static event to convert. + Name of the event to convert. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on a supplied event delegate type, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The delegate type of the event to be converted. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on a supplied event delegate type, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The delegate type of the event to be converted. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on , to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The delegate type of the event to be converted. + The type of the event data generated by the event. + A function used to convert the given event handler to a delegate compatible with the underlying .NET event. The resulting delegate is used in calls to the addHandler and removeHandler action parameters. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on , to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The delegate type of the event to be converted. + The type of the event data generated by the event. + A function used to convert the given event handler to a delegate compatible with the underlying .NET event. The resulting delegate is used in calls to the addHandler and removeHandler action parameters. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on a supplied event delegate type with a strongly typed sender parameter, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The delegate type of the event to be converted. + The type of the sender that raises the event. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on a supplied event delegate type with a strongly typed sender parameter, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The delegate type of the event to be converted. + The type of the sender that raises the event. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or or is null. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on , to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a .NET event, conforming to the standard .NET event pattern based on , to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The type of the event data generated by the event. + Action that attaches the given event handler to the underlying .NET event. + Action that detaches the given event handler from the underlying .NET event. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts an instance .NET event, conforming to the standard .NET event pattern with strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the target object type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The type of the event data generated by the event. + Object instance that exposes the event to convert. + Name of the event to convert. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts an instance .NET event, conforming to the standard .NET event pattern with strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the target object type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The type of the event data generated by the event. + Object instance that exposes the event to convert. + Name of the event to convert. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a static .NET event, conforming to the standard .NET event pattern with strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the specified type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The type of the event data generated by the event. + Type that exposes the static event to convert. + Name of the event to convert. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a static .NET event, conforming to the standard .NET event pattern with strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the specified type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The type of the event data generated by the event. + Type that exposes the static event to convert. + Name of the event to convert. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts an instance .NET event, conforming to the standard .NET event pattern with a strongly typed sender and strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the target object type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The type of the sender that raises the event. + The type of the event data generated by the event. + Object instance that exposes the event to convert. + Name of the event to convert. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's first argument type is not assignable to TSender. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts an instance .NET event, conforming to the standard .NET event pattern with a strongly typed sender and strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the target object type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The type of the sender that raises the event. + The type of the event data generated by the event. + Object instance that exposes the event to convert. + Name of the event to convert. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's first argument type is not assignable to TSender. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Converts a static .NET event, conforming to the standard .NET event pattern with a strongly typed sender and strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the specified type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The type of the sender that raises the event. + The type of the event data generated by the event. + Type that exposes the static event to convert. + Name of the event to convert. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's first argument type is not assignable to TSender. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + The current is captured during the call to FromEventPattern, and is used to post add and remove handler invocations. + This behavior ensures add and remove handler operations for thread-affine events are accessed from the same context, as required by some UI frameworks. + + + If no SynchronizationContext is present at the point of calling FromEventPattern, add and remove handler invocations are made synchronously on the thread + making the Subscribe or Dispose call, respectively. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions due to the free-threaded nature of Reactive Extensions. Doing so + makes the captured SynchronizationContext predictable. This best practice also reduces clutter of bridging code inside queries, making the query expressions + more concise and easier to understand. + + + + + + + Converts a static .NET event, conforming to the standard .NET event pattern with a strongly typed sender and strongly typed event arguments, to an observable sequence. + Each event invocation is surfaced through an OnNext message in the resulting sequence. + Reflection is used to discover the event based on the specified type and the specified event name. + For conversion of events that don't conform to the standard .NET event pattern, use any of the FromEvent overloads instead. + + Query provider used to construct the data source. + The type of the sender that raises the event. + The type of the event data generated by the event. + Type that exposes the static event to convert. + Name of the event to convert. + The scheduler to run the add and remove event handler logic on. + The observable sequence that contains data representations of invocations of the underlying .NET event. + + or or is null. + The event could not be found. -or- The event does not conform to the standard .NET event pattern. -or- The event's first argument type is not assignable to TSender. -or- The event's second argument type is not assignable to TEventArgs. + + + Add and remove handler invocations are made whenever the number of observers grows beyond zero. + As such, an event handler may be shared by multiple simultaneously active observers, using a subject for multicasting. + + + Add and remove handler invocations are run on the specified scheduler. This behavior allows add and remove handler operations for thread-affine events to be + accessed from the same context, as required by some UI frameworks. + + + It's recommended to lift FromEventPattern calls outside event stream query expressions. This best practice reduces clutter of bridging code inside queries, + making the query expressions more concise and easier to understand. This has additional benefits for overloads of FromEventPattern that omit the IScheduler + parameter. For more information, see the remarks section on those overloads. + + + + + + + Generates an observable sequence by running a state-driven loop producing the sequence's elements. + + Query provider used to construct the data source. + The type of the state used in the generator loop. + The type of the elements in the produced sequence. + Initial state. + Condition to terminate generation (upon returning false). + Iteration step function. + Selector function for results produced in the sequence. + The generated sequence. + + or or is null. + + + + Generates an observable sequence by running a state-driven loop producing the sequence's elements, using the specified scheduler to send out observer messages. + + Query provider used to construct the data source. + The type of the state used in the generator loop. + The type of the elements in the produced sequence. + Initial state. + Condition to terminate generation (upon returning false). + Iteration step function. + Selector function for results produced in the sequence. + Scheduler on which to run the generator loop. + The generated sequence. + + or or or is null. + + + + Generates an observable sequence by running a state-driven and temporal loop producing the sequence's elements. + + Query provider used to construct the data source. + The type of the state used in the generator loop. + The type of the elements in the produced sequence. + Initial state. + Condition to terminate generation (upon returning false). + Iteration step function. + Selector function for results produced in the sequence. + Time selector function to control the speed of values being produced each iteration. + The generated sequence. + + or or or is null. + + + + Generates an observable sequence by running a state-driven and temporal loop producing the sequence's elements. + + Query provider used to construct the data source. + The type of the state used in the generator loop. + The type of the elements in the produced sequence. + Initial state. + Condition to terminate generation (upon returning false). + Iteration step function. + Selector function for results produced in the sequence. + Time selector function to control the speed of values being produced each iteration. + The generated sequence. + + or or or is null. + + + + Generates an observable sequence by running a state-driven and temporal loop producing the sequence's elements, using the specified scheduler to run timers and to send out observer messages. + + Query provider used to construct the data source. + The type of the state used in the generator loop. + The type of the elements in the produced sequence. + Initial state. + Condition to terminate generation (upon returning false). + Iteration step function. + Selector function for results produced in the sequence. + Time selector function to control the speed of values being produced each iteration. + Scheduler on which to run the generator loop. + The generated sequence. + + or or or or is null. + + + + Generates an observable sequence by running a state-driven and temporal loop producing the sequence's elements, using the specified scheduler to run timers and to send out observer messages. + + Query provider used to construct the data source. + The type of the state used in the generator loop. + The type of the elements in the produced sequence. + Initial state. + Condition to terminate generation (upon returning false). + Iteration step function. + Selector function for results produced in the sequence. + Time selector function to control the speed of values being produced each iteration. + Scheduler on which to run the generator loop. + The generated sequence. + + or or or or is null. + + + + Groups the elements of an observable sequence according to a specified key selector function. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + + or is null. + + + + Groups the elements of an observable sequence with the specified initial capacity according to a specified key selector function. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + The initial number of elements that the underlying dictionary can contain. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + + or is null. + + is less than 0. + + + + Groups the elements of an observable sequence with the specified initial capacity according to a specified key selector function and comparer. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + The initial number of elements that the underlying dictionary can contain. + An equality comparer to compare keys with. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + + or or is null. + + is less than 0. + + + + Groups the elements of an observable sequence according to a specified key selector function and comparer. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + An equality comparer to compare keys with. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + + or or is null. + + + + Groups the elements of an observable sequence and selects the resulting elements by using a specified function. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + + or or is null. + + + + Groups the elements of an observable sequence with the specified initial capacity and selects the resulting elements by using a specified function. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + The initial number of elements that the underlying dictionary can contain. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + + or or is null. + + is less than 0. + + + + Groups the elements of an observable sequence with the specified initial capacity according to a specified key selector function and comparer and selects the resulting elements by using a specified function. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + The initial number of elements that the underlying dictionary can contain. + An equality comparer to compare keys with. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + + or or or is null. + + is less than 0. + + + + Groups the elements of an observable sequence according to a specified key selector function and comparer and selects the resulting elements by using a specified function. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + An equality comparer to compare keys with. + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + + or or or is null. + + + + Groups the elements of an observable sequence according to a specified key selector function. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to signal the expiration of a group. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + + or or is null. + + + + Groups the elements of an observable sequence with the specified initial capacity according to a specified key selector function. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to signal the expiration of a group. + The initial number of elements that the underlying dictionary can contain. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + + or or is null. + + is less than 0. + + + + Groups the elements of an observable sequence with the specified initial capacity according to a specified key selector function and comparer. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to signal the expiration of a group. + The initial number of elements that the underlying dictionary can contain. + An equality comparer to compare keys with. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + + or or or is null. + + is less than 0. + + + + Groups the elements of an observable sequence according to a specified key selector function and comparer. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to signal the expiration of a group. + An equality comparer to compare keys with. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + + or or or is null. + + + + Groups the elements of an observable sequence according to a specified key selector function and selects the resulting elements by using a specified function. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + A function to signal the expiration of a group. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + + or or or is null. + + + + Groups the elements of an observable sequence with the specified initial capacity according to a specified key selector function and selects the resulting elements by using a specified function. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + A function to signal the expiration of a group. + The initial number of elements that the underlying dictionary can contain. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + + or or or is null. + + is less than 0. + + + + Groups the elements of an observable sequence with the specified initial capacity according to a specified key selector function and comparer and selects the resulting elements by using a specified function. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + A function to signal the expiration of a group. + The initial number of elements that the underlying dictionary can contain. + An equality comparer to compare keys with. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + + or or or or is null. + + is less than 0. + + + + Groups the elements of an observable sequence according to a specified key selector function and comparer and selects the resulting elements by using a specified function. + A duration selector function is used to control the lifetime of groups. When a group expires, it receives an OnCompleted notification. When a new element with the same + key value as a reclaimed group occurs, the group will be reborn with a new lifetime request. + + The type of the elements in the source sequence. + The type of the grouping key computed for each element in the source sequence. + The type of the elements within the groups computed for each element in the source sequence. + The type of the elements in the duration sequences obtained for each group to denote its lifetime. + An observable sequence whose elements to group. + A function to extract the key for each element. + A function to map each source element to an element in an observable group. + A function to signal the expiration of a group. + An equality comparer to compare keys with. + + A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value. + If a group's lifetime expires, a new group with the same key value can be created once an element with such a key value is encountered. + + + or or or or is null. + + + + Correlates the elements of two sequences based on overlapping durations, and groups the results. + + The type of the elements in the left source sequence. + The type of the elements in the right source sequence. + The type of the elements in the duration sequence denoting the computed duration of each element in the left source sequence. + The type of the elements in the duration sequence denoting the computed duration of each element in the right source sequence. + The type of the elements in the result sequence, obtained by invoking the result selector function for source elements with overlapping duration. + The left observable sequence to join elements for. + The right observable sequence to join elements for. + A function to select the duration of each element of the left observable sequence, used to determine overlap. + A function to select the duration of each element of the right observable sequence, used to determine overlap. + A function invoked to compute a result element for any element of the left sequence with overlapping elements from the right observable sequence. + An observable sequence that contains result elements computed from source elements that have an overlapping duration. + + or or or or is null. + + + + If the specified evaluates true, select the sequence. Otherwise, return an empty sequence. + + Query provider used to construct the data source. + The type of the elements in the result sequence. + Condition evaluated to decide which sequence to return. + Sequence returned in case evaluates true. + + if evaluates true; an empty sequence otherwise. + + or is null. + + + + If the specified evaluates true, select the sequence. Otherwise, select the sequence. + + Query provider used to construct the data source. + The type of the elements in the result sequence. + Condition evaluated to decide which sequence to return. + Sequence returned in case evaluates true. + Sequence returned in case evaluates false. + + if evaluates true; otherwise. + + or or is null. + + + + If the specified evaluates true, select the sequence. Otherwise, return an empty sequence generated on the specified scheduler. + + Query provider used to construct the data source. + The type of the elements in the result sequence. + Condition evaluated to decide which sequence to return. + Sequence returned in case evaluates true. + Scheduler to generate an empty sequence on in case evaluates false. + + if evaluates true; an empty sequence otherwise. + + or or is null. + + + + Ignores all elements in an observable sequence leaving only the termination messages. + + The type of the elements in the source sequence. + Source sequence. + An empty observable sequence that signals termination, successful or exceptional, of the source sequence. + + is null. + + + + Returns an observable sequence that produces a value after each period. + + Query provider used to construct the data source. + Period for producing the values in the resulting sequence. If this value is equal to TimeSpan.Zero, the timer will recur as fast as possible. + An observable sequence that produces a value after each period. + + is less than TimeSpan.Zero. + + Intervals are measured between the start of subsequent notifications, not between the end of the previous and the start of the next notification. + If the observer takes longer than the interval period to handle the message, the subsequent notification will be delivered immediately after the + current one has been handled. In case you need to control the time between the end and the start of consecutive notifications, consider using the + + operator instead. + + + + + Returns an observable sequence that produces a value after each period, using the specified scheduler to run timers and to send out observer messages. + + Query provider used to construct the data source. + Period for producing the values in the resulting sequence. If this value is equal to TimeSpan.Zero, the timer will recur as fast as possible. + Scheduler to run the timer on. + An observable sequence that produces a value after each period. + + is less than TimeSpan.Zero. + + is null. + + Intervals are measured between the start of subsequent notifications, not between the end of the previous and the start of the next notification. + If the observer takes longer than the interval period to handle the message, the subsequent notification will be delivered immediately after the + current one has been handled. In case you need to control the time between the end and the start of consecutive notifications, consider using the + + operator instead. + + + + + Determines whether an observable sequence is empty. + + The type of the elements in the source sequence. + An observable sequence to check for emptiness. + An observable sequence containing a single element determining whether the source sequence is empty. + + is null. + + + + Correlates the elements of two sequences based on overlapping durations. + + The type of the elements in the left source sequence. + The type of the elements in the right source sequence. + The type of the elements in the duration sequence denoting the computed duration of each element in the left source sequence. + The type of the elements in the duration sequence denoting the computed duration of each element in the right source sequence. + The type of the elements in the result sequence, obtained by invoking the result selector function for source elements with overlapping duration. + The left observable sequence to join elements for. + The right observable sequence to join elements for. + A function to select the duration of each element of the left observable sequence, used to determine overlap. + A function to select the duration of each element of the right observable sequence, used to determine overlap. + A function invoked to compute a result element for any two overlapping elements of the left and right observable sequences. + An observable sequence that contains result elements computed from source elements that have an overlapping duration. + + or or or or is null. + + + + Returns the last element of an observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + Sequence containing the last element in the observable sequence. + + is null. + (Asynchronous) The source sequence is empty. + + + + Returns the last element of an observable sequence that satisfies the condition in the predicate. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + Sequence containing the last element in the observable sequence that satisfies the condition in the predicate. + + or is null. + (Asynchronous) No element satisfies the condition in the predicate. -or- The source sequence is empty. + + + + Returns the last element of an observable sequence, or a default value if no such element exists. + + The type of the elements in the source sequence. + Source observable sequence. + Sequence containing the last element in the observable sequence, or a default value if no such element exists. + + is null. + + + + Returns the last element of an observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + Sequence containing the last element in the observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. + + or is null. + + + + Returns an enumerable sequence whose enumeration returns the latest observed element in the source observable sequence. + Enumerators on the resulting sequence will never produce the same element repeatedly, and will block until the next element becomes available. + + The type of the elements in the source sequence. + Source observable sequence. + The enumerable sequence that returns the last sampled element upon each iteration and subsequently blocks until the next element in the observable source sequence becomes available. + This operator requires the source's object (see ) to implement . + + + + Returns an observable sequence containing an that represents the total number of elements in an observable sequence. + + The type of the elements in the source sequence. + An observable sequence that contains elements to be counted. + An observable sequence containing a single element with the number of elements in the input sequence. + + is null. + (Asynchronous) The number of elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns an observable sequence containing an that represents how many elements in the specified observable sequence satisfy a condition. + + The type of the elements in the source sequence. + An observable sequence that contains elements to be counted. + A function to test each element for a condition. + An observable sequence containing a single element with a number that represents how many elements in the input sequence satisfy the condition in the predicate function. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Materializes the implicit notifications of an observable sequence as explicit notification values. + + The type of the elements in the source sequence. + An observable sequence to get notification values for. + An observable sequence containing the materialized notification values from the source sequence. + + is null. + + + + Returns the maximum value in an observable sequence of values. + + A sequence of values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of values. + + A sequence of values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of values. + + A sequence of values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of values. + + A sequence of values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence of values. + + A sequence of values to determine the maximum value of. + An observable sequence containing a single element with the maximum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum element in an observable sequence. + + The type of the elements in the source sequence. + An observable sequence to determine the maximum element of. + An observable sequence containing a single element with the maximum element in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the maximum value in an observable sequence according to the specified comparer. + + The type of the elements in the source sequence. + An observable sequence to determine the maximum element of. + Comparer used to compare elements. + An observable sequence containing a single element with the maximum element in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the maximum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the maximum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum value. + + The type of the elements in the source sequence. + The type of the objects derived from the elements in the source sequence to determine the maximum of. + An observable sequence to determine the minimum element of. + A transform function to apply to each element. + An observable sequence containing a single element with the value that corresponds to the maximum element in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the maximum value according to the specified comparer. + + The type of the elements in the source sequence. + The type of the objects derived from the elements in the source sequence to determine the maximum of. + An observable sequence to determine the minimum element of. + A transform function to apply to each element. + Comparer used to compare elements. + An observable sequence containing a single element with the value that corresponds to the maximum element in the source sequence. + + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the elements in an observable sequence with the maximum key value. + + The type of the elements in the source sequence. + The type of the key computed for each element in the source sequence. + An observable sequence to get the maximum elements for. + Key selector function. + An observable sequence containing a list of zero or more elements that have a maximum key value. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the elements in an observable sequence with the maximum key value according to the specified comparer. + + The type of the elements in the source sequence. + The type of the key computed for each element in the source sequence. + An observable sequence to get the maximum elements for. + Key selector function. + Comparer used to compare key values. + An observable sequence containing a list of zero or more elements that have a maximum key value. + + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Merges elements from two observable sequences into a single observable sequence. + + The type of the elements in the source sequences. + First observable sequence. + Second observable sequence. + The observable sequence that merges the elements of the given sequences. + + or is null. + + + + Merges elements from two observable sequences into a single observable sequence, using the specified scheduler for enumeration of and subscription to the sources. + + The type of the elements in the source sequences. + First observable sequence. + Second observable sequence. + Scheduler used to introduce concurrency for making subscriptions to the given sequences. + The observable sequence that merges the elements of the given sequences. + + or or is null. + + + + Merges elements from all of the specified observable sequences into a single observable sequence, using the specified scheduler for enumeration of and subscription to the sources. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + Observable sequences. + Scheduler to run the enumeration of the sequence of sources on. + The observable sequence that merges the elements of the observable sequences. + + or is null. + + + + Merges elements from all inner observable sequences into a single observable sequence. + + The type of the elements in the source sequences. + Observable sequence of inner observable sequences. + The observable sequence that merges the elements of the inner sequences. + + is null. + + + + Merges results from all source tasks into a single observable sequence. + + The type of the results produced by the source tasks. + Observable sequence of tasks. + The observable sequence that merges the results of the source tasks. + + is null. + If the tasks support cancellation, consider manual conversion of the tasks using , followed by a merge operation using . + + + + Merges elements from all of the specified observable sequences into a single observable sequence. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + Observable sequences. + The observable sequence that merges the elements of the observable sequences. + + is null. + + + + Merges elements from all observable sequences in the given enumerable sequence into a single observable sequence. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + Enumerable sequence of observable sequences. + The observable sequence that merges the elements of the observable sequences. + + is null. + + + + Merges elements from all inner observable sequences into a single observable sequence, limiting the number of concurrent subscriptions to inner sequences. + + The type of the elements in the source sequences. + Observable sequence of inner observable sequences. + Maximum number of inner observable sequences being subscribed to concurrently. + The observable sequence that merges the elements of the inner sequences. + + is null. + + is less than or equal to zero. + + + + Merges elements from all observable sequences in the given enumerable sequence into a single observable sequence, limiting the number of concurrent subscriptions to inner sequences. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + Enumerable sequence of observable sequences. + Maximum number of observable sequences being subscribed to concurrently. + The observable sequence that merges the elements of the observable sequences. + + is null. + + is less than or equal to zero. + + + + Merges elements from all observable sequences in the given enumerable sequence into a single observable sequence, limiting the number of concurrent subscriptions to inner sequences, and using the specified scheduler for enumeration of and subscription to the sources. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + Enumerable sequence of observable sequences. + Maximum number of observable sequences being subscribed to concurrently. + Scheduler to run the enumeration of the sequence of sources on. + The observable sequence that merges the elements of the observable sequences. + + or is null. + + is less than or equal to zero. + + + + Merges elements from all observable sequences in the given enumerable sequence into a single observable sequence, using the specified scheduler for enumeration of and subscription to the sources. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + Enumerable sequence of observable sequences. + Scheduler to run the enumeration of the sequence of sources on. + The observable sequence that merges the elements of the observable sequences. + + or is null. + + + + Returns the minimum value in an observable sequence of values. + + A sequence of values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of values. + + A sequence of values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of values. + + A sequence of values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of values. + + A sequence of values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of nullable values. + + A sequence of nullable values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum value in an observable sequence of values. + + A sequence of values to determine the minimum value of. + An observable sequence containing a single element with the minimum value in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum element in an observable sequence. + + The type of the elements in the source sequence. + An observable sequence to determine the minimum element of. + An observable sequence containing a single element with the minimum element in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the minimum element in an observable sequence according to the specified comparer. + + The type of the elements in the source sequence. + An observable sequence to determine the minimum element of. + Comparer used to compare elements. + An observable sequence containing a single element with the minimum element in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum nullable value. + + The type of the elements in the source sequence. + A sequence of values to determine the minimum value of. + A transform function to apply to each element. + An observable sequence containing a single element with the value of type that corresponds to the minimum value in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum value. + + The type of the elements in the source sequence. + The type of the objects derived from the elements in the source sequence to determine the minimum of. + An observable sequence to determine the minimum element of. + A transform function to apply to each element. + An observable sequence containing a single element with the value that corresponds to the minimum element in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Invokes a transform function on each element of a sequence and returns the minimum value according to the specified comparer. + + The type of the elements in the source sequence. + The type of the objects derived from the elements in the source sequence to determine the minimum of. + An observable sequence to determine the minimum element of. + A transform function to apply to each element. + Comparer used to compare elements. + An observable sequence containing a single element with the value that corresponds to the minimum element in the source sequence. + + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the elements in an observable sequence with the minimum key value. + + The type of the elements in the source sequence. + The type of the key computed for each element in the source sequence. + An observable sequence to get the minimum elements for. + Key selector function. + An observable sequence containing a list of zero or more elements that have a minimum key value. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the elements in an observable sequence with the minimum key value according to the specified comparer. + + The type of the elements in the source sequence. + The type of the key computed for each element in the source sequence. + An observable sequence to get the minimum elements for. + Key selector function. + Comparer used to compare key values. + An observable sequence containing a list of zero or more elements that have a minimum key value. + + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns an enumerable sequence whose enumeration returns the most recently observed element in the source observable sequence, using the specified initial value in case no element has been sampled yet. + Enumerators on the resulting sequence never block and can produce the same element repeatedly. + + The type of the elements in the source sequence. + Source observable sequence. + Initial value that will be yielded by the enumerable sequence if no element has been sampled yet. + The enumerable sequence that returns the last sampled element upon each iteration. + + is null. + This operator requires the source's object (see ) to implement . + + + + Multicasts the source sequence notifications through an instantiated subject into all uses of the sequence within a selector function. Each + subscription to the resulting sequence causes a separate multicast invocation, exposing the sequence resulting from the selector function's + invocation. For specializations with fixed subject types, see Publish, PublishLast, and Replay. + + The type of the elements in the source sequence. + The type of the elements produced by the intermediate subject. + The type of the elements in the result sequence. + Source sequence which will be multicasted in the specified selector function. + Factory function to create an intermediate subject through which the source sequence's elements will be multicast to the selector function. + Selector function which can use the multicasted source sequence subject to the policies enforced by the created subject. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + + or or is null. + + + + Returns a non-terminating observable sequence, which can be used to denote an infinite duration (e.g. when using reactive joins). + + Query provider used to construct the data source. + The type used for the type parameter of the resulting sequence. + An observable sequence whose observers will never get called. + + + + Returns a non-terminating observable sequence, which can be used to denote an infinite duration (e.g. when using reactive joins). + + Query provider used to construct the data source. + The type used for the type parameter of the resulting sequence. + Object solely used to infer the type of the type parameter. This parameter is typically used when creating a sequence of anonymously typed elements. + An observable sequence whose observers will never get called. + + + + Returns an enumerable sequence whose enumeration blocks until the next element in the source observable sequence becomes available. + Enumerators on the resulting sequence will block until the next element becomes available. + + The type of the elements in the source sequence. + Source observable sequence. + The enumerable sequence that blocks upon each iteration until the next element in the observable source sequence becomes available. + + is null. + This operator requires the source's object (see ) to implement . + + + + Wraps the source sequence in order to run its observer callbacks on the specified synchronization context. + + The type of the elements in the source sequence. + Source sequence. + Synchronization context to notify observers on. + The source sequence whose observations happen on the specified synchronization context. + + or is null. + + This only invokes observer callbacks on a synchronization context. In case the subscription and/or unsubscription actions have side-effects + that require to be run on a synchronization context, use . + + + + + Wraps the source sequence in order to run its observer callbacks on the specified scheduler. + + The type of the elements in the source sequence. + Source sequence. + Scheduler to notify observers on. + The source sequence whose observations happen on the specified scheduler. + + or is null. + + This only invokes observer callbacks on a scheduler. In case the subscription and/or unsubscription actions have side-effects + that require to be run on a scheduler, use . + + + + + Filters the elements of an observable sequence based on the specified type. + + The type to filter the elements in the source sequence on. + The observable sequence that contains the elements to be filtered. + An observable sequence that contains elements from the input sequence of type TResult. + + is null. + + + + Concatenates the second observable sequence to the first observable sequence upon successful or exceptional termination of the first. + + The type of the elements in the source sequences. + First observable sequence whose exception (if any) is caught. + Second observable sequence used to produce results after the first sequence terminates. + An observable sequence that concatenates the first and second sequence, even if the first sequence terminates exceptionally. + + or is null. + + + + Concatenates all of the specified observable sequences, even if the previous observable sequence terminated exceptionally. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + Observable sequences to concatenate. + An observable sequence that concatenates the source sequences, even if a sequence terminates exceptionally. + + is null. + + + + Concatenates all observable sequences in the given enumerable sequence, even if the previous observable sequence terminated exceptionally. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + Observable sequences to concatenate. + An observable sequence that concatenates the source sequences, even if a sequence terminates exceptionally. + + is null. + + + + Prepend a value to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to prepend the value to. + Value to prepend to the specified sequence. + The source sequence prepended with the specified value. + + is null. + + + + Prepend a value to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to prepend the value to. + Value to prepend to the specified sequence. + Scheduler to emit the prepend values on. + The source sequence prepended with the specified value. + + is null. + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence. + This operator is a specialization of Multicast using a regular . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all notifications of the source from the time of the subscription on. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + + or is null. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence and starts with initialValue. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive immediately receive the initial value, followed by all notifications of the source from the time of the subscription on. + Initial value received by observers upon subscription. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + + or is null. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence containing only the last notification. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will only receive the last notification of the source. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + + or is null. + + + + + Generates an observable sequence of integral numbers within a specified range. + + Query provider used to construct the data source. + The value of the first integer in the sequence. + The number of sequential integers to generate. + An observable sequence that contains a range of sequential integral numbers. + + is less than zero. -or- + - 1 is larger than . + + + + Generates an observable sequence of integral numbers within a specified range, using the specified scheduler to send out observer messages. + + Query provider used to construct the data source. + The value of the first integer in the sequence. + The number of sequential integers to generate. + Scheduler to run the generator loop on. + An observable sequence that contains a range of sequential integral numbers. + + is less than zero. -or- + - 1 is larger than . + + is null. + + + + Returns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + Query provider used to construct the data source. + The type of the elements in the source sequence. + Connectable observable sequence. + An observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + is null. + + + + Returns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + Query provider used to construct the data source. + The type of the elements in the source sequence. + Connectable observable sequence. + The time span that should be waited before possibly unsubscribing from the connectable observable. + An observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + is null. + + + + Returns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + Query provider used to construct the data source. + The type of the elements in the source sequence. + Connectable observable sequence. + The time span that should be waited before possibly unsubscribing from the connectable observable. + The scheduler to use for delayed unsubscription. + An observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + is null. + + + + Returns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + Query provider used to construct the data source. + The type of the elements in the source sequence. + Connectable observable sequence. + The minimum number of observers required to subscribe before establishing the connection to the source. + An observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + is null. + is non-positive. + + + + Returns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + Query provider used to construct the data source. + The type of the elements in the source sequence. + Connectable observable sequence. + The minimum number of observers required to subscribe before establishing the connection to the source. + The time span that should be waited before possibly unsubscribing from the connectable observable. + An observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + is null. + is non-positive. + + + + Returns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + Query provider used to construct the data source. + The type of the elements in the source sequence. + Connectable observable sequence. + The minimum number of observers required to subscribe before establishing the connection to the source. + The time span that should be waited before possibly unsubscribing from the connectable observable. + The scheduler to use for delayed unsubscription. + An observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence. + + is null. + is non-positive. + + + + Generates an observable sequence that repeats the given element infinitely. + + Query provider used to construct the data source. + The type of the element that will be repeated in the produced sequence. + Element to repeat. + An observable sequence that repeats the given element infinitely. + + + + Generates an observable sequence that repeats the given element the specified number of times. + + Query provider used to construct the data source. + The type of the element that will be repeated in the produced sequence. + Element to repeat. + Number of times to repeat the element. + An observable sequence that repeats the given element the specified number of times. + + is less than zero. + + + + Generates an observable sequence that repeats the given element the specified number of times, using the specified scheduler to send out observer messages. + + Query provider used to construct the data source. + The type of the element that will be repeated in the produced sequence. + Element to repeat. + Number of times to repeat the element. + Scheduler to run the producer loop on. + An observable sequence that repeats the given element the specified number of times. + + is less than zero. + + is null. + + + + Generates an observable sequence that repeats the given element infinitely, using the specified scheduler to send out observer messages. + + Query provider used to construct the data source. + The type of the element that will be repeated in the produced sequence. + Element to repeat. + Scheduler to run the producer loop on. + An observable sequence that repeats the given element infinitely. + + is null. + + + + Repeats the observable sequence indefinitely. + + The type of the elements in the source sequence. + Observable sequence to repeat. + The observable sequence producing the elements of the given sequence repeatedly and sequentially. + + is null. + + + + Repeats the observable sequence a specified number of times. + + The type of the elements in the source sequence. + Observable sequence to repeat. + Number of times to repeat the sequence. + The observable sequence producing the elements of the given sequence repeatedly. + + is null. + + is less than zero. + + + + Repeatedly resubscribes to the source observable after a normal completion and when the observable + returned by a handler produces an arbitrary item. + + The type of the elements in the source sequence. + The arbitrary element type signaled by the handler observable. + Observable sequence to keep repeating when it successfully terminates. + The function that is called for each observer and takes an observable sequence objects. + It should return an observable of arbitrary items that should signal that arbitrary item in + response to receiving the completion signal from the source observable. If this observable signals + a terminal event, the sequence is terminated with that signal instead. + An observable sequence producing the elements of the given sequence repeatedly while each repetition terminates successfully. + is null. + is null. + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying all notifications. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + + or is null. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum element count for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source subject to the specified replay buffer trimming policy. + Maximum element count of the replay buffer. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + + or is null. + + is less than zero. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum element count for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source subject to the specified replay buffer trimming policy. + Maximum element count of the replay buffer. + Scheduler where connected observers within the selector function will be invoked on. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + + or or is null. + + is less than zero. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum time length and element count for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source subject to the specified replay buffer trimming policy. + Maximum element count of the replay buffer. + Maximum time length of the replay buffer. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + + or is null. + + is less than zero. + + is less than TimeSpan.Zero. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum time length and element count for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source subject to the specified replay buffer trimming policy. + Maximum element count of the replay buffer. + Maximum time length of the replay buffer. + Scheduler where connected observers within the selector function will be invoked on. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + + or or is null. + + is less than zero. + + is less than TimeSpan.Zero. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying all notifications. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source. + Scheduler where connected observers within the selector function will be invoked on. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + + or or is null. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum time length for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source subject to the specified replay buffer trimming policy. + Maximum time length of the replay buffer. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + + or is null. + + is less than TimeSpan.Zero. + + + + + Returns an observable sequence that is the result of invoking the selector on a connectable observable sequence that shares a single subscription to the underlying sequence replaying notifications subject to a maximum time length for the replay buffer. + This operator is a specialization of Multicast using a . + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence whose elements will be multicasted through a single shared subscription. + Selector function which can use the multicasted source sequence as many times as needed, without causing multiple subscriptions to the source sequence. Subscribers to the given source will receive all the notifications of the source subject to the specified replay buffer trimming policy. + Maximum time length of the replay buffer. + Scheduler where connected observers within the selector function will be invoked on. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + + or or is null. + + is less than TimeSpan.Zero. + + + + + Repeats the source observable sequence until it successfully terminates. + + The type of the elements in the source sequence. + Observable sequence to repeat until it successfully terminates. + An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully. + + is null. + + + + Repeats the source observable sequence the specified number of times or until it successfully terminates. + + The type of the elements in the source sequence. + Observable sequence to repeat until it successfully terminates. + Number of times to repeat the sequence. + An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully. + + is null. + + is less than zero. + + + + Retries (resubscribes to) the source observable after a failure and when the observable + returned by a handler produces an arbitrary item. + + The type of the elements in the source sequence. + The arbitrary element type signaled by the handler observable. + Observable sequence to repeat until it successfully terminates. + The function that is called for each observer and takes an observable sequence of + errors. It should return an observable of arbitrary items that should signal that arbitrary item in + response to receiving the failure Exception from the source observable. If this observable signals + a terminal event, the sequence is terminated with that signal instead. + An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully. + + is null. + + is null. + + + + Returns an observable sequence that contains a single element. + + Query provider used to construct the data source. + The type of the element that will be returned in the produced sequence. + Single element in the resulting observable sequence. + An observable sequence containing the single specified element. + + + + Returns an observable sequence that contains a single element, using the specified scheduler to send out observer messages. + + Query provider used to construct the data source. + The type of the element that will be returned in the produced sequence. + Single element in the resulting observable sequence. + Scheduler to send the single element on. + An observable sequence containing the single specified element. + + is null. + + + + Samples the observable sequence at each interval. + Upon each sampling tick, the latest element (if any) in the source sequence during the last sampling interval is sent to the resulting sequence. + + The type of the elements in the source sequence. + Source sequence to sample. + Interval at which to sample. If this value is equal to TimeSpan.Zero, the scheduler will continuously sample the stream. + Sampled observable sequence. + + is null. + + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for doesn't guarantee all source sequence elements will be preserved. This is a side-effect + of the asynchrony introduced by the scheduler, where the sampling action may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Samples the observable sequence at each interval, using the specified scheduler to run sampling timers. + Upon each sampling tick, the latest element (if any) in the source sequence during the last sampling interval is sent to the resulting sequence. + + The type of the elements in the source sequence. + Source sequence to sample. + Interval at which to sample. If this value is equal to TimeSpan.Zero, the scheduler will continuously sample the stream. + Scheduler to run the sampling timer on. + Sampled observable sequence. + + or is null. + + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for doesn't guarantee all source sequence elements will be preserved. This is a side-effect + of the asynchrony introduced by the scheduler, where the sampling action may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Samples the source observable sequence using a sampler observable sequence producing sampling ticks. + Upon each sampling tick, the latest element (if any) in the source sequence during the last sampling interval is sent to the resulting sequence. + + The type of the elements in the source sequence. + The type of the elements in the sampling sequence. + Source sequence to sample. + Sampling tick sequence. + Sampled observable sequence. + + or is null. + + + + Applies an accumulator function over an observable sequence and returns each intermediate result. + For aggregation behavior with no intermediate results, see . + + The type of the elements in the source sequence and the result of the aggregation. + An observable sequence to accumulate over. + An accumulator function to be invoked on each element. + An observable sequence containing the accumulated values. + + or is null. + + + + Applies an accumulator function over an observable sequence and returns each intermediate result. The specified seed value is used as the initial accumulator value. + For aggregation behavior with no intermediate results, see . + + The type of the elements in the source sequence. + The type of the result of the aggregation. + An observable sequence to accumulate over. + The initial accumulator value. + An accumulator function to be invoked on each element. + An observable sequence containing the accumulated values. + + or is null. + + + + Projects each element of an observable sequence into a new form. + + The type of the elements in the source sequence. + The type of the elements in the result sequence, obtained by running the selector function for each element in the source sequence. + A sequence of elements to invoke a transform function on. + A transform function to apply to each source element. + An observable sequence whose elements are the result of invoking the transform function on each element of source. + + or is null. + + + + Projects each element of an observable sequence into a new form by incorporating the element's index. + + The type of the elements in the source sequence. + The type of the elements in the result sequence, obtained by running the selector function for each element in the source sequence. + A sequence of elements to invoke a transform function on. + A transform function to apply to each source element; the second parameter of the function represents the index of the source element. + An observable sequence whose elements are the result of invoking the transform function on each element of source. + + or is null. + + + + Projects each element of an observable sequence to an observable sequence, invokes the result selector for the source element and each of the corresponding inner sequence's elements, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected intermediate sequences. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate sequence elements. + An observable sequence of elements to project. + A transform function to apply to each element. + A transform function to apply to each element of the intermediate sequence. + An observable sequence whose elements are the result of invoking the one-to-many transform function collectionSelector on each element of the input sequence and then mapping each of those sequence elements and their corresponding source element to a result element. + + or or is null. + + + + Projects each element of an observable sequence to an observable sequence by incorporating the element's index, invokes the result selector for the source element and each of the corresponding inner sequence's elements, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected intermediate sequences. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate sequence elements. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + A transform function to apply to each element of the intermediate sequence; the second parameter of the function represents the index of the source element and the fourth parameter represents the index of the intermediate element. + An observable sequence whose elements are the result of invoking the one-to-many transform function collectionSelector on each element of the input sequence and then mapping each of those sequence elements and their corresponding source element to a result element. + + or or is null. + + + + Projects each element of an observable sequence to an enumerable sequence, invokes the result selector for the source element and each of the corresponding inner sequence's elements, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected intermediate enumerable sequences. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate sequence elements. + An observable sequence of elements to project. + A transform function to apply to each element. + A transform function to apply to each element of the intermediate sequence. + An observable sequence whose elements are the result of invoking the one-to-many transform function collectionSelector on each element of the input sequence and then mapping each of those sequence elements and their corresponding source element to a result element. + + or or is null. + The projected sequences are enumerated synchronously within the OnNext call of the source sequence. In order to do a concurrent, non-blocking merge, change the selector to return an observable sequence obtained using the conversion. + + + + Projects each element of an observable sequence to an enumerable sequence by incorporating the element's index, invokes the result selector for the source element and each of the corresponding inner sequence's elements, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected intermediate enumerable sequences. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate sequence elements. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + A transform function to apply to each element of the intermediate sequence; the second parameter of the function represents the index of the source element and the fourth parameter represents the index of the intermediate element. + An observable sequence whose elements are the result of invoking the one-to-many transform function collectionSelector on each element of the input sequence and then mapping each of those sequence elements and their corresponding source element to a result element. + + or or is null. + The projected sequences are enumerated synchronously within the OnNext call of the source sequence. In order to do a concurrent, non-blocking merge, change the selector to return an observable sequence obtained using the conversion. + + + + Projects each element of the source observable sequence to the other observable sequence and merges the resulting observable sequences into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the other sequence and the elements in the result sequence. + An observable sequence of elements to project. + An observable sequence to project each element from the source sequence onto. + An observable sequence whose elements are the result of projecting each source element onto the other sequence and merging all the resulting sequences together. + + or is null. + + + + Projects each notification of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected inner sequences and the elements in the merged result sequence. + An observable sequence of notifications to project. + A transform function to apply to each element. + A transform function to apply when an error occurs in the source sequence. + A transform function to apply when the end of the source sequence is reached. + An observable sequence whose elements are the result of invoking the one-to-many transform function corresponding to each notification in the input sequence. + + or or or is null. + + + + Projects each notification of an observable sequence to an observable sequence by incorporating the element's index and merges the resulting observable sequences into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected inner sequences and the elements in the merged result sequence. + An observable sequence of notifications to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + A transform function to apply when an error occurs in the source sequence. + A transform function to apply when the end of the source sequence is reached. + An observable sequence whose elements are the result of invoking the one-to-many transform function corresponding to each notification in the input sequence. + + or or or is null. + + + + Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected inner sequences and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element. + An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence. + + or is null. + + + + Projects each element of an observable sequence to an observable sequence by incorporating the element's index and merges the resulting observable sequences into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected inner sequences and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence. + + or is null. + + + + Projects each element of an observable sequence to a task and merges all of the task results into one observable sequence. + + The type of the elements in the source sequence. + The type of the result produced by the projected tasks and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element. + An observable sequence whose elements are the result of the tasks executed for each element of the input sequence. + This overload supports composition of observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + + or is null. + + + + Projects each element of an observable sequence to a task by incorporating the element's index and merges all of the task results into one observable sequence. + + The type of the elements in the source sequence. + The type of the result produced by the projected tasks and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + An observable sequence whose elements are the result of the tasks executed for each element of the input sequence. + This overload supports composition of observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + + or is null. + + + + Projects each element of an observable sequence to a task with cancellation support and merges all of the task results into one observable sequence. + + The type of the elements in the source sequence. + The type of the result produced by the projected tasks and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element. + An observable sequence whose elements are the result of the tasks executed for each element of the input sequence. + This overload supports composition of observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + + or is null. + + + + Projects each element of an observable sequence to a task by incorporating the element's index with cancellation support and merges all of the task results into one observable sequence. + + The type of the elements in the source sequence. + The type of the result produced by the projected tasks and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + An observable sequence whose elements are the result of the tasks executed for each element of the input sequence. + This overload supports composition of observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + + or is null. + + + + Projects each element of an observable sequence to an enumerable sequence and concatenates the resulting enumerable sequences into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected inner enumerable sequences and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element. + An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence. + + or is null. + The projected sequences are enumerated synchronously within the OnNext call of the source sequence. In order to do a concurrent, non-blocking merge, change the selector to return an observable sequence obtained using the conversion. + + + + Projects each element of an observable sequence to an enumerable sequence by incorporating the element's index and concatenates the resulting enumerable sequences into one observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the projected inner enumerable sequences and the elements in the merged result sequence. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence. + + or is null. + The projected sequences are enumerated synchronously within the OnNext call of the source sequence. In order to do a concurrent, non-blocking merge, change the selector to return an observable sequence obtained using the conversion. + + + + Projects each element of an observable sequence to a task, invokes the result selector for the source element and the task result, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the results produced by the projected intermediate tasks. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate task results. + An observable sequence of elements to project. + A transform function to apply to each element. + A transform function to apply to each element of the intermediate sequence. + An observable sequence whose elements are the result of obtaining a task for each element of the input sequence and then mapping the task's result and its corresponding source element to a result element. + + or or is null. + This overload supports using LINQ query comprehension syntax in C# and Visual Basic to compose observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + + + + Projects each element of an observable sequence to a task by incorporating the element's index, invokes the result selector for the source element and the task result, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the results produced by the projected intermediate tasks. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate task results. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + A transform function to apply to each element of the intermediate sequence; the second parameter of the function represents the index of the source element. + An observable sequence whose elements are the result of obtaining a task for each element of the input sequence and then mapping the task's result and its corresponding source element to a result element. + + or or is null. + This overload supports using LINQ query comprehension syntax in C# and Visual Basic to compose observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + + + + Projects each element of an observable sequence to a task with cancellation support, invokes the result selector for the source element and the task result, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the results produced by the projected intermediate tasks. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate task results. + An observable sequence of elements to project. + A transform function to apply to each element. + A transform function to apply to each element of the intermediate sequence. + An observable sequence whose elements are the result of obtaining a task for each element of the input sequence and then mapping the task's result and its corresponding source element to a result element. + + or or is null. + This overload supports using LINQ query comprehension syntax in C# and Visual Basic to compose observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + + + + Projects each element of an observable sequence to a task by incorporating the element's index with cancellation support, invokes the result selector for the source element and the task result, and merges the results into one observable sequence. + + The type of the elements in the source sequence. + The type of the results produced by the projected intermediate tasks. + The type of the elements in the result sequence, obtained by using the selector to combine source sequence elements with their corresponding intermediate task results. + An observable sequence of elements to project. + A transform function to apply to each element; the second parameter of the function represents the index of the source element. + A transform function to apply to each element of the intermediate sequence; the second parameter of the function represents the index of the source element. + An observable sequence whose elements are the result of obtaining a task for each element of the input sequence and then mapping the task's result and its corresponding source element to a result element. + + or or is null. + This overload supports using LINQ query comprehension syntax in C# and Visual Basic to compose observable sequences and tasks, without requiring manual conversion of the tasks to observable sequences using . + + + + Determines whether two sequences are equal by comparing the elements pairwise. + + The type of the elements in the source sequence. + First observable sequence to compare. + Second observable sequence to compare. + An observable sequence that contains a single element which indicates whether both sequences are of equal length and their corresponding elements are equal according to the default equality comparer for their type. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Determines whether an observable and enumerable sequence are equal by comparing the elements pairwise. + + The type of the elements in the source sequence. + First observable sequence to compare. + Second observable sequence to compare. + An observable sequence that contains a single element which indicates whether both sequences are of equal length and their corresponding elements are equal according to the default equality comparer for their type. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Determines whether two sequences are equal by comparing the elements pairwise using a specified equality comparer. + + The type of the elements in the source sequence. + First observable sequence to compare. + Second observable sequence to compare. + Comparer used to compare elements of both sequences. + An observable sequence that contains a single element which indicates whether both sequences are of equal length and their corresponding elements are equal according to the specified equality comparer. + + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Determines whether an observable and enumerable sequence are equal by comparing the elements pairwise using a specified equality comparer. + + The type of the elements in the source sequence. + First observable sequence to compare. + Second observable sequence to compare. + Comparer used to compare elements of both sequences. + An observable sequence that contains a single element which indicates whether both sequences are of equal length and their corresponding elements are equal according to the specified equality comparer. + + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Returns the only element of an observable sequence, and reports an exception if there is not exactly one element in the observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + Sequence containing the single element in the observable sequence. + + is null. + (Asynchronous) The source sequence contains more than one element. -or- The source sequence is empty. + + + + Returns the only element of an observable sequence that satisfies the condition in the predicate, and reports an exception if there is not exactly one element in the observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + Sequence containing the single element in the observable sequence that satisfies the condition in the predicate. + + or is null. + (Asynchronous) No element satisfies the condition in the predicate. -or- More than one element satisfies the condition in the predicate. -or- The source sequence is empty. + + + + Returns the only element of an observable sequence, or a default value if the observable sequence is empty; this method reports an exception if there is more than one element in the observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + Sequence containing the single element in the observable sequence, or a default value if no such element exists. + + is null. + (Asynchronous) The source sequence contains more than one element. + + + + Returns the only element of an observable sequence that matches the predicate, or a default value if no such element exists; this method reports an exception if there is more than one element in the observable sequence. + + The type of the elements in the source sequence. + Source observable sequence. + A predicate function to evaluate for elements in the source sequence. + Sequence containing the single element in the observable sequence that satisfies the condition in the predicate, or a default value if no such element exists. + + or is null. + (Asynchronous) The sequence contains more than one element that satisfies the condition in the predicate. + + + + Bypasses a specified number of elements in an observable sequence and then returns the remaining elements. + + The type of the elements in the source sequence. + The sequence to take elements from. + The number of elements to skip before returning the remaining elements. + An observable sequence that contains the elements that occur after the specified index in the input sequence. + + is null. + + is less than zero. + + + + Skips elements for the specified duration from the start of the observable source sequence. + + The type of the elements in the source sequence. + Source sequence to skip elements for. + Duration for skipping elements from the start of the sequence. + An observable sequence with the elements skipped during the specified duration from the start of the source sequence. + + is null. + + is less than TimeSpan.Zero. + + + Specifying a TimeSpan.Zero value for doesn't guarantee no elements will be dropped from the start of the source sequence. + This is a side-effect of the asynchrony introduced by the scheduler, where the action that causes callbacks from the source sequence to be forwarded + may not execute immediately, despite the TimeSpan.Zero due time. + + + Errors produced by the source sequence are always forwarded to the result sequence, even if the error occurs before the . + + + + + + Skips elements for the specified duration from the start of the observable source sequence, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to skip elements for. + Duration for skipping elements from the start of the sequence. + Scheduler to run the timer on. + An observable sequence with the elements skipped during the specified duration from the start of the source sequence. + + or is null. + + is less than TimeSpan.Zero. + + + Specifying a TimeSpan.Zero value for doesn't guarantee no elements will be dropped from the start of the source sequence. + This is a side-effect of the asynchrony introduced by the scheduler, where the action that causes callbacks from the source sequence to be forwarded + may not execute immediately, despite the TimeSpan.Zero due time. + + + Errors produced by the source sequence are always forwarded to the result sequence, even if the error occurs before the . + + + + + + Bypasses a specified number of elements at the end of an observable sequence. + + The type of the elements in the source sequence. + Source sequence. + Number of elements to bypass at the end of the source sequence. + An observable sequence containing the source sequence elements except for the bypassed ones at the end. + + is null. + + is less than zero. + + This operator accumulates a queue with a length enough to store the first elements. As more elements are + received, elements are taken from the front of the queue and produced on the result sequence. This causes elements to be delayed. + + + + + Skips elements for the specified duration from the end of the observable source sequence. + + The type of the elements in the source sequence. + Source sequence to skip elements for. + Duration for skipping elements from the end of the sequence. + An observable sequence with the elements skipped during the specified duration from the end of the source sequence. + + is null. + + is less than TimeSpan.Zero. + + This operator accumulates a queue with a length enough to store elements received during the initial window. + As more elements are received, elements older than the specified are taken from the queue and produced on the + result sequence. This causes elements to be delayed with . + + + + + Skips elements for the specified duration from the end of the observable source sequence, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to skip elements for. + Duration for skipping elements from the end of the sequence. + Scheduler to run the timer on. + An observable sequence with the elements skipped during the specified duration from the end of the source sequence. + + or is null. + + is less than TimeSpan.Zero. + + This operator accumulates a queue with a length enough to store elements received during the initial window. + As more elements are received, elements older than the specified are taken from the queue and produced on the + result sequence. This causes elements to be delayed with . + + + + + Skips elements from the observable source sequence until the specified start time. + + The type of the elements in the source sequence. + Source sequence to skip elements for. + Time to start taking elements from the source sequence. If this value is less than or equal to DateTimeOffset.UtcNow, no elements will be skipped. + An observable sequence with the elements skipped until the specified start time. + + is null. + + Errors produced by the source sequence are always forwarded to the result sequence, even if the error occurs before the . + + + + + Skips elements from the observable source sequence until the specified start time, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to skip elements for. + Time to start taking elements from the source sequence. If this value is less than or equal to DateTimeOffset.UtcNow, no elements will be skipped. + Scheduler to run the timer on. + An observable sequence with the elements skipped until the specified start time. + + or is null. + + Errors produced by the source sequence are always forwarded to the result sequence, even if the error occurs before the . + + + + + Returns the elements from the source observable sequence only after the other observable sequence produces an element. + Starting from Rx.NET 4.0, this will subscribe to before subscribing to + so in case emits an element right away, elements from are not missed. + + The type of the elements in the source sequence. + The type of the elements in the other sequence that indicates the end of skip behavior. + Source sequence to propagate elements for. + Observable sequence that triggers propagation of elements of the source sequence. + An observable sequence containing the elements of the source sequence starting from the point the other sequence triggered propagation. + + or is null. + + + + Bypasses elements in an observable sequence as long as a specified condition is true and then returns the remaining elements. + + The type of the elements in the source sequence. + An observable sequence to return elements from. + A function to test each element for a condition. + An observable sequence that contains the elements from the input sequence starting at the first element in the linear series that does not pass the test specified by predicate. + + or is null. + + + + Bypasses elements in an observable sequence as long as a specified condition is true and then returns the remaining elements. + The element's index is used in the logic of the predicate function. + + The type of the elements in the source sequence. + An observable sequence to return elements from. + A function to test each element for a condition; the second parameter of the function represents the index of the source element. + An observable sequence that contains the elements from the input sequence starting at the first element in the linear series that does not pass the test specified by predicate. + + or is null. + + + + Invokes the action asynchronously, surfacing the result through an observable sequence. + + Query provider used to construct the data source. + Action to run asynchronously. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + + is null. + + + + The action is called immediately, not during the subscription of the resulting sequence. + + + Multiple subscriptions to the resulting sequence can observe the action's outcome. + + + + + + + Invokes the action asynchronously on the specified scheduler, surfacing the result through an observable sequence. + + Query provider used to construct the data source. + Action to run asynchronously. + Scheduler to run the action on. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + + or is null. + + + + The action is called immediately, not during the subscription of the resulting sequence. + + + Multiple subscriptions to the resulting sequence can observe the action's outcome. + + + + + + + Invokes the specified function asynchronously, surfacing the result through an observable sequence. + + Query provider used to construct the data source. + The type of the result returned by the function. + Function to run asynchronously. + An observable sequence exposing the function's result value, or an exception. + + is null. + + + + The function is called immediately, not during the subscription of the resulting sequence. + + + Multiple subscriptions to the resulting sequence can observe the function's result. + + + + + + + Invokes the specified function asynchronously on the specified scheduler, surfacing the result through an observable sequence + + Query provider used to construct the data source. + The type of the result returned by the function. + Function to run asynchronously. + Scheduler to run the function on. + An observable sequence exposing the function's result value, or an exception. + + or is null. + + + + The function is called immediately, not during the subscription of the resulting sequence. + + + Multiple subscriptions to the resulting sequence can observe the function's result. + + + + + + + Invokes the asynchronous action, surfacing the result through an observable sequence. + + Query provider used to construct the data source. + Asynchronous action to run. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + + is null. + + + + The action is started immediately, not during the subscription of the resulting sequence. + + + Multiple subscriptions to the resulting sequence can observe the action's outcome. + + + + + + + Invokes the asynchronous action, surfacing the result through an observable sequence. + + Query provider used to construct the data source. + Asynchronous action to run. + Scheduler on which to notify observers. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + + is null or is null. + + + + The action is started immediately, not during the subscription of the resulting sequence. + + + Multiple subscriptions to the resulting sequence can observe the action's outcome. + + + + + + + Invokes the asynchronous action, surfacing the result through an observable sequence. + The CancellationToken is shared by all subscriptions on the resulting observable sequence. See the remarks section for more information. + + Query provider used to construct the data source. + Asynchronous action to run. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + + is null. + + + + The action is started immediately, not during the subscription of the resulting sequence. + + + Multiple subscriptions to the resulting sequence can observe the action's outcome. + + + + If any subscription to the resulting sequence is disposed, the CancellationToken is set. The observer associated to the disposed + subscription won't see the TaskCanceledException, but other observers will. You can protect against this using the Catch operator. + Be careful when handing out the resulting sequence because of this behavior. The most common use is to have a single subscription + to the resulting sequence, which controls the CancellationToken state. Alternatively, you can control subscription behavior using + multicast operators. + + + + + + + + Invokes the asynchronous action, surfacing the result through an observable sequence. + The CancellationToken is shared by all subscriptions on the resulting observable sequence. See the remarks section for more information. + + Query provider used to construct the data source. + Asynchronous action to run. + Scheduler on which to notify observers. + An observable sequence exposing a Unit value upon completion of the action, or an exception. + + is null or is null. + + + + The action is started immediately, not during the subscription of the resulting sequence. + + + Multiple subscriptions to the resulting sequence can observe the action's outcome. + + + + If any subscription to the resulting sequence is disposed, the CancellationToken is set. The observer associated to the disposed + subscription won't see the TaskCanceledException, but other observers will. You can protect against this using the Catch operator. + Be careful when handing out the resulting sequence because of this behavior. The most common use is to have a single subscription + to the resulting sequence, which controls the CancellationToken state. Alternatively, you can control subscription behavior using + multicast operators. + + + + + + + + Invokes the asynchronous function, surfacing the result through an observable sequence. + + Query provider used to construct the data source. + The type of the result returned by the asynchronous function. + Asynchronous function to run. + An observable sequence exposing the function's result value, or an exception. + + is null. + + + + The function is started immediately, not during the subscription of the resulting sequence. + + + Multiple subscriptions to the resulting sequence can observe the function's result. + + + + + + + Invokes the asynchronous function, surfacing the result through an observable sequence. + The CancellationToken is shared by all subscriptions on the resulting observable sequence. See the remarks section for more information. + + Query provider used to construct the data source. + The type of the result returned by the asynchronous function. + Asynchronous function to run. + An observable sequence exposing the function's result value, or an exception. + + is null. + + + + The function is started immediately, not during the subscription of the resulting sequence. + + + Multiple subscriptions to the resulting sequence can observe the function's result. + + + + If any subscription to the resulting sequence is disposed, the CancellationToken is set. The observer associated to the disposed + subscription won't see the TaskCanceledException, but other observers will. You can protect against this using the Catch operator. + Be careful when handing out the resulting sequence because of this behavior. The most common use is to have a single subscription + to the resulting sequence, which controls the CancellationToken state. Alternatively, you can control subscription behavior using + multicast operators. + + + + + + + + Invokes the asynchronous function, surfacing the result through an observable sequence. + + Query provider used to construct the data source. + The type of the result returned by the asynchronous function. + Asynchronous function to run. + Scheduler on which to notify observers. + An observable sequence exposing the function's result value, or an exception. + + is null or is null. + + + + The function is started immediately, not during the subscription of the resulting sequence. + + + Multiple subscriptions to the resulting sequence can observe the function's result. + + + + + + + Invokes the asynchronous function, surfacing the result through an observable sequence. + The CancellationToken is shared by all subscriptions on the resulting observable sequence. See the remarks section for more information. + + Query provider used to construct the data source. + The type of the result returned by the asynchronous function. + Asynchronous function to run. + Scheduler on which to notify observers. + An observable sequence exposing the function's result value, or an exception. + + is null or is null. + + + + The function is started immediately, not during the subscription of the resulting sequence. + + + Multiple subscriptions to the resulting sequence can observe the function's result. + + + + If any subscription to the resulting sequence is disposed, the CancellationToken is set. The observer associated to the disposed + subscription won't see the TaskCanceledException, but other observers will. You can protect against this using the Catch operator. + Be careful when handing out the resulting sequence because of this behavior. The most common use is to have a single subscription + to the resulting sequence, which controls the CancellationToken state. Alternatively, you can control subscription behavior using + multicast operators. + + + + + + + + Prepends a sequence of values to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to prepend values to. + Scheduler to emit the prepended values on. + Values to prepend to the specified sequence. + The source sequence prepended with the specified values. + + or or is null. + + + + Prepends a sequence of values to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to prepend values to. + Scheduler to emit the prepended values on. + Values to prepend to the specified sequence. + The source sequence prepended with the specified values. + + or or is null. + + + + Prepends a sequence of values to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to prepend values to. + Values to prepend to the specified sequence. + The source sequence prepended with the specified values. + + or is null. + + + + Prepends a sequence of values to an observable sequence. + + The type of the elements in the source sequence. + Source sequence to prepend values to. + Values to prepend to the specified sequence. + The source sequence prepended with the specified values. + + or is null. + + + + Wraps the source sequence in order to run its subscription and unsubscription logic on the specified synchronization context. This operation is not commonly used; + see the remarks section for more information on the distinction between SubscribeOn and ObserveOn. + + The type of the elements in the source sequence. + Source sequence. + Synchronization context to perform subscription and unsubscription actions on. + The source sequence whose subscriptions and unsubscriptions happen on the specified synchronization context. + + or is null. + + This only performs the side-effects of subscription and unsubscription on the specified synchronization context. In order to invoke observer + callbacks on a synchronization context, use . + + + + + Wraps the source sequence in order to run its subscription and unsubscription logic on the specified scheduler. This operation is not commonly used; + see the remarks section for more information on the distinction between SubscribeOn and ObserveOn. + + The type of the elements in the source sequence. + Source sequence. + Scheduler to perform subscription and unsubscription actions on. + The source sequence whose subscriptions and unsubscriptions happen on the specified scheduler. + + or is null. + + This only performs the side-effects of subscription and unsubscription on the specified scheduler. In order to invoke observer + callbacks on a scheduler, use . + + + + + Computes the sum of a sequence of values. + + A sequence of values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + + is null. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values. + + A sequence of values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values. + + A sequence of values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + + is null. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values. + + A sequence of values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + + is null. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values. + + A sequence of nullable values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + + is null. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values. + + A sequence of nullable values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values. + + A sequence of nullable values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + + is null. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values. + + A sequence of nullable values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + + is null. + (Asynchronous) The sum of the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values. + + A sequence of nullable values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values. + + A sequence of values to calculate the sum of. + An observable sequence containing a single element with the sum of the values in the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + + or is null. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + + or is null. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + + or is null. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + + or is null. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + + or is null. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Computes the sum of a sequence of nullable values that are obtained by invoking a transform function on each element of the input sequence. + + The type of the elements in the source sequence. + A sequence of values that are used to calculate a sum. + A transform function to apply to each element. + An observable sequence containing a single element with the sum of the values in the source sequence. + + or is null. + (Asynchronous) The sum of the projected values for the elements in the source sequence is larger than . + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Transforms an observable sequence of observable sequences into an observable sequence + producing values only from the most recent observable sequence. + Each time a new inner observable sequence is received, unsubscribe from the + previous inner observable sequence. + + The type of the elements in the source sequences. + Observable sequence of inner observable sequences. + The observable sequence that at any point in time produces the elements of the most recent inner observable sequence that has been received. + + is null. + + + + Transforms an observable sequence of tasks into an observable sequence + producing values only from the most recent observable sequence. + Each time a new task is received, the previous task's result is ignored. + + The type of the results produced by the source tasks. + Observable sequence of tasks. + The observable sequence that at any point in time produces the result of the most recent task that has been received. + + is null. + If the tasks support cancellation, consider manual conversion of the tasks using , followed by a switch operation using . + + + + Synchronizes the observable sequence such that observer notifications cannot be delivered concurrently. + This overload is useful to "fix" an observable sequence that exhibits concurrent callbacks on individual observers, which is invalid behavior for the query processor. + + The type of the elements in the source sequence. + Source sequence. + The source sequence whose outgoing calls to observers are synchronized. + + is null. + + It's invalid behavior - according to the observer grammar - for a sequence to exhibit concurrent callbacks on a given observer. + This operator can be used to "fix" a source that doesn't conform to this rule. + + + + + Synchronizes the observable sequence such that observer notifications cannot be delivered concurrently, using the specified gate object. + This overload is useful when writing n-ary query operators, in order to prevent concurrent callbacks from different sources by synchronizing on a common gate object. + + The type of the elements in the source sequence. + Source sequence. + Gate object to synchronize each observer call on. + The source sequence whose outgoing calls to observers are synchronized on the given gate object. + + or is null. + + + + Returns a specified number of contiguous elements from the start of an observable sequence. + + The type of the elements in the source sequence. + The sequence to take elements from. + The number of elements to return. + An observable sequence that contains the specified number of elements from the start of the input sequence. + + is null. + + is less than zero. + + + + Returns a specified number of contiguous elements from the start of an observable sequence, using the specified scheduler for the edge case of Take(0). + + The type of the elements in the source sequence. + The sequence to take elements from. + The number of elements to return. + Scheduler used to produce an OnCompleted message in case count is set to 0. + An observable sequence that contains the specified number of elements from the start of the input sequence. + + or is null. + + is less than zero. + + + + Takes elements for the specified duration from the start of the observable source sequence. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Duration for taking elements from the start of the sequence. + An observable sequence with the elements taken during the specified duration from the start of the source sequence. + + is null. + + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for doesn't guarantee an empty sequence will be returned. This is a side-effect + of the asynchrony introduced by the scheduler, where the action that stops forwarding callbacks from the source sequence may not execute + immediately, despite the TimeSpan.Zero due time. + + + + + Takes elements for the specified duration from the start of the observable source sequence, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Duration for taking elements from the start of the sequence. + Scheduler to run the timer on. + An observable sequence with the elements taken during the specified duration from the start of the source sequence. + + or is null. + + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for doesn't guarantee an empty sequence will be returned. This is a side-effect + of the asynchrony introduced by the scheduler, where the action that stops forwarding callbacks from the source sequence may not execute + immediately, despite the TimeSpan.Zero due time. + + + + + Returns a specified number of contiguous elements from the end of an observable sequence. + + The type of the elements in the source sequence. + Source sequence. + Number of elements to take from the end of the source sequence. + An observable sequence containing the specified number of elements from the end of the source sequence. + + is null. + + is less than zero. + + This operator accumulates a buffer with a length enough to store elements elements. Upon completion of + the source sequence, this buffer is drained on the result sequence. This causes the elements to be delayed. + + + + + Returns a specified number of contiguous elements from the end of an observable sequence, using the specified scheduler to drain the queue. + + The type of the elements in the source sequence. + Source sequence. + Number of elements to take from the end of the source sequence. + Scheduler used to drain the queue upon completion of the source sequence. + An observable sequence containing the specified number of elements from the end of the source sequence. + + or is null. + + is less than zero. + + This operator accumulates a buffer with a length enough to store elements elements. Upon completion of + the source sequence, this buffer is drained on the result sequence. This causes the elements to be delayed. + + + + + Returns elements within the specified duration from the end of the observable source sequence. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Duration for taking elements from the end of the sequence. + An observable sequence with the elements taken during the specified duration from the end of the source sequence. + + is null. + + is less than TimeSpan.Zero. + + This operator accumulates a buffer with a length enough to store elements for any window during the lifetime of + the source sequence. Upon completion of the source sequence, this buffer is drained on the result sequence. This causes the result elements + to be delayed with . + + + + + Returns elements within the specified duration from the end of the observable source sequence, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Duration for taking elements from the end of the sequence. + Scheduler to run the timer on. + An observable sequence with the elements taken during the specified duration from the end of the source sequence. + + or is null. + + is less than TimeSpan.Zero. + + This operator accumulates a buffer with a length enough to store elements for any window during the lifetime of + the source sequence. Upon completion of the source sequence, this buffer is drained on the result sequence. This causes the result elements + to be delayed with . + + + + + Returns elements within the specified duration from the end of the observable source sequence, using the specified schedulers to run timers and to drain the collected elements. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Duration for taking elements from the end of the sequence. + Scheduler to run the timer on. + Scheduler to drain the collected elements. + An observable sequence with the elements taken during the specified duration from the end of the source sequence. + + or or is null. + + is less than TimeSpan.Zero. + + This operator accumulates a buffer with a length enough to store elements for any window during the lifetime of + the source sequence. Upon completion of the source sequence, this buffer is drained on the result sequence. This causes the result elements + to be delayed with . + + + + + Returns a list with the specified number of contiguous elements from the end of an observable sequence. + + The type of the elements in the source sequence. + Source sequence. + Number of elements to take from the end of the source sequence. + An observable sequence containing a single list with the specified number of elements from the end of the source sequence. + + is null. + + is less than zero. + + This operator accumulates a buffer with a length enough to store elements. Upon completion of the + source sequence, this buffer is produced on the result sequence. + + + + + Returns a list with the elements within the specified duration from the end of the observable source sequence. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Duration for taking elements from the end of the sequence. + An observable sequence containing a single list with the elements taken during the specified duration from the end of the source sequence. + + is null. + + is less than TimeSpan.Zero. + + This operator accumulates a buffer with a length enough to store elements for any window during the lifetime of + the source sequence. Upon completion of the source sequence, this buffer is produced on the result sequence. + + + + + Returns a list with the elements within the specified duration from the end of the observable source sequence, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Duration for taking elements from the end of the sequence. + Scheduler to run the timer on. + An observable sequence containing a single list with the elements taken during the specified duration from the end of the source sequence. + + or is null. + + is less than TimeSpan.Zero. + + This operator accumulates a buffer with a length enough to store elements for any window during the lifetime of + the source sequence. Upon completion of the source sequence, this buffer is produced on the result sequence. + + + + + Takes elements for the specified duration until the specified end time. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Time to stop taking elements from the source sequence. If this value is less than or equal to DateTimeOffset.UtcNow, the result stream will complete immediately. + An observable sequence with the elements taken until the specified end time. + + is null. + + + + Takes elements for the specified duration until the specified end time, using the specified scheduler to run timers. + + The type of the elements in the source sequence. + Source sequence to take elements from. + Time to stop taking elements from the source sequence. If this value is less than or equal to DateTimeOffset.UtcNow, the result stream will complete immediately. + Scheduler to run the timer on. + An observable sequence with the elements taken until the specified end time. + + or is null. + + + + Returns the elements from the source observable sequence until the other observable sequence produces an element. + + The type of the elements in the source sequence. + The type of the elements in the other sequence that indicates the end of take behavior. + Source sequence to propagate elements for. + Observable sequence that terminates propagation of elements of the source sequence. + An observable sequence containing the elements of the source sequence up to the point the other sequence interrupted further propagation. + + or is null. + + + + Relays elements from the source observable sequence and calls the predicate after an + emission to check if the sequence should stop after that specific item. + + The type of the elements in the source and result sequences. + The source sequence to relay elements of. + Called after each upstream item has been emitted with + that upstream item and should return true to indicate the sequence should + complete. + The observable sequence with the source elements until the stop predicate returns true. + + The following sequence will stop after the value 5 has been encountered: + + Observable.Range(1, 10) + .TakeUntil(item => item == 5) + .Subscribe(Console.WriteLine); + + + If or is null. + + + + Returns elements from an observable sequence as long as a specified condition is true. + + The type of the elements in the source sequence. + A sequence to return elements from. + A function to test each element for a condition. + An observable sequence that contains the elements from the input sequence that occur before the element at which the test no longer passes. + + or is null. + + + + Returns elements from an observable sequence as long as a specified condition is true. + The element's index is used in the logic of the predicate function. + + The type of the elements in the source sequence. + A sequence to return elements from. + A function to test each element for a condition; the second parameter of the function represents the index of the source element. + An observable sequence that contains the elements from the input sequence that occur before the element at which the test no longer passes. + + or is null. + + + + Ignores elements from an observable sequence which are followed by another element within a specified relative time duration. + + The type of the elements in the source sequence. + Source sequence to throttle. + Throttling duration for each element. + The throttled sequence. + + is null. + + is less than TimeSpan.Zero. + + + This operator throttles the source sequence by holding on to each element for the duration specified in . If another + element is produced within this time window, the element is dropped and a new timer is started for the current element, repeating this whole + process. For streams that never have gaps larger than or equal to between elements, the resulting stream won't + produce any elements. In order to reduce the volume of a stream whilst guaranteeing the periodic production of elements, consider using the + Observable.Sample set of operators. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing throttling timers to be scheduled + that are due immediately. However, this doesn't guarantee all elements will be retained in the result sequence. This is a side-effect of the + asynchrony introduced by the scheduler, where the action to forward the current element may not execute immediately, despite the TimeSpan.Zero + due time. In such cases, the next element may arrive before the scheduler gets a chance to run the throttling action. + + + + + + Ignores elements from an observable sequence which are followed by another element within a specified relative time duration, using the specified scheduler to run throttling timers. + + The type of the elements in the source sequence. + Source sequence to throttle. + Throttling duration for each element. + Scheduler to run the throttle timers on. + The throttled sequence. + + or is null. + + is less than TimeSpan.Zero. + + + This operator throttles the source sequence by holding on to each element for the duration specified in . If another + element is produced within this time window, the element is dropped and a new timer is started for the current element, repeating this whole + process. For streams that never have gaps larger than or equal to between elements, the resulting stream won't + produce any elements. In order to reduce the volume of a stream whilst guaranteeing the periodic production of elements, consider using the + Observable.Sample set of operators. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing throttling timers to be scheduled + that are due immediately. However, this doesn't guarantee all elements will be retained in the result sequence. This is a side-effect of the + asynchrony introduced by the scheduler, where the action to forward the current element may not execute immediately, despite the TimeSpan.Zero + due time. In such cases, the next element may arrive before the scheduler gets a chance to run the throttling action. + + + + + + Ignores elements from an observable sequence which are followed by another value within a computed throttle duration. + + The type of the elements in the source sequence. + The type of the elements in the throttle sequences selected for each element in the source sequence. + Source sequence to throttle. + Selector function to retrieve a sequence indicating the throttle duration for each given element. + The throttled sequence. + + or is null. + + This operator throttles the source sequence by holding on to each element for the duration denoted by . + If another element is produced within this time window, the element is dropped and a new timer is started for the current element, repeating this + whole process. For streams where the duration computed by applying the to each element overlaps with + the occurrence of the successor element, the resulting stream won't produce any elements. In order to reduce the volume of a stream whilst + guaranteeing the periodic production of elements, consider using the Observable.Sample set of operators. + + + + + Returns an observable sequence that terminates with an exception. + + Query provider used to construct the data source. + The type used for the type parameter of the resulting sequence. + Exception object used for the sequence's termination. + The observable sequence that terminates exceptionally with the specified exception object. + + is null. + + + + Returns an observable sequence that terminates with an exception, using the specified scheduler to send out the single OnError message. + + Query provider used to construct the data source. + The type used for the type parameter of the resulting sequence. + Exception object used for the sequence's termination. + Scheduler to send the exceptional termination call on. + The observable sequence that terminates exceptionally with the specified exception object. + + or is null. + + + + Returns an observable sequence that terminates with an exception, using the specified scheduler to send out the single OnError message. + + Query provider used to construct the data source. + The type used for the type parameter of the resulting sequence. + Exception object used for the sequence's termination. + Scheduler to send the exceptional termination call on. + Object solely used to infer the type of the type parameter. This parameter is typically used when creating a sequence of anonymously typed elements. + The observable sequence that terminates exceptionally with the specified exception object. + + or is null. + + + + Returns an observable sequence that terminates with an exception. + + Query provider used to construct the data source. + The type used for the type parameter of the resulting sequence. + Exception object used for the sequence's termination. + Object solely used to infer the type of the type parameter. This parameter is typically used when creating a sequence of anonymously typed elements. + The observable sequence that terminates exceptionally with the specified exception object. + + is null. + + + + Records the time interval between consecutive elements in an observable sequence. + + The type of the elements in the source sequence. + Source sequence to record time intervals for. + An observable sequence with time interval information on elements. + + is null. + + + + Records the time interval between consecutive elements in an observable sequence, using the specified scheduler to compute time intervals. + + The type of the elements in the source sequence. + Source sequence to record time intervals for. + Scheduler used to compute time intervals. + An observable sequence with time interval information on elements. + + or is null. + + + + Applies a timeout policy to the observable sequence based on an absolute time. + If the sequence doesn't terminate before the specified absolute due time, a TimeoutException is propagated to the observer. + + The type of the elements in the source sequence. + Source sequence to perform a timeout for. + Time when a timeout occurs. If this value is less than or equal to DateTimeOffset.UtcNow, the timeout occurs immediately. + The source sequence with a TimeoutException in case of a timeout. + + is null. + (Asynchronous) If the sequence hasn't terminated before . + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + + + Applies a timeout policy to the observable sequence based on an absolute time. + If the sequence doesn't terminate before the specified absolute due time, the other observable sequence is used to produce future messages from that point on. + + The type of the elements in the source sequence and the other sequence used upon a timeout. + Source sequence to perform a timeout for. + Time when a timeout occurs. If this value is less than or equal to DateTimeOffset.UtcNow, the timeout occurs immediately. + Sequence to return in case of a timeout. + The source sequence switching to the other sequence in case of a timeout. + + or is null. + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + + + Applies a timeout policy to the observable sequence based on an absolute time, using the specified scheduler to run timeout timers. + If the sequence doesn't terminate before the specified absolute due time, the other observable sequence is used to produce future messages from that point on. + + The type of the elements in the source sequence and the other sequence used upon a timeout. + Source sequence to perform a timeout for. + Time when a timeout occurs. If this value is less than or equal to DateTimeOffset.UtcNow, the timeout occurs immediately. + Sequence to return in case of a timeout. + Scheduler to run the timeout timers on. + The source sequence switching to the other sequence in case of a timeout. + + or or is null. + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + + + Applies a timeout policy to the observable sequence based on an absolute time, using the specified scheduler to run timeout timers. + If the sequence doesn't terminate before the specified absolute due time, a TimeoutException is propagated to the observer. + + The type of the elements in the source sequence. + Source sequence to perform a timeout for. + Time when a timeout occurs. If this value is less than or equal to DateTimeOffset.UtcNow, the timeout occurs immediately. + Scheduler to run the timeout timers on. + The source sequence with a TimeoutException in case of a timeout. + + or is null. + (Asynchronous) If the sequence hasn't terminated before . + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + + + Applies a timeout policy for each element in the observable sequence. + If the next element isn't received within the specified timeout duration starting from its predecessor, a TimeoutException is propagated to the observer. + + The type of the elements in the source sequence. + Source sequence to perform a timeout for. + Maximum duration between values before a timeout occurs. + The source sequence with a TimeoutException in case of a timeout. + + is null. + + is less than TimeSpan.Zero. + (Asynchronous) If no element is produced within from the previous element. + + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing timeout timers to be scheduled that are due + immediately. However, this doesn't guarantee a timeout will occur, even for the first element. This is a side-effect of the asynchrony introduced by the + scheduler, where the action to propagate a timeout may not execute immediately, despite the TimeSpan.Zero due time. In such cases, the next element may + arrive before the scheduler gets a chance to run the timeout action. + + + + + + Applies a timeout policy for each element in the observable sequence. + If the next element isn't received within the specified timeout duration starting from its predecessor, the other observable sequence is used to produce future messages from that point on. + + The type of the elements in the source sequence and the other sequence used upon a timeout. + Source sequence to perform a timeout for. + Maximum duration between values before a timeout occurs. + Sequence to return in case of a timeout. + The source sequence switching to the other sequence in case of a timeout. + + or is null. + + is less than TimeSpan.Zero. + + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing timeout timers to be scheduled that are due + immediately. However, this doesn't guarantee a timeout will occur, even for the first element. This is a side-effect of the asynchrony introduced by the + scheduler, where the action to propagate a timeout may not execute immediately, despite the TimeSpan.Zero due time. In such cases, the next element may + arrive before the scheduler gets a chance to run the timeout action. + + + + + + Applies a timeout policy for each element in the observable sequence, using the specified scheduler to run timeout timers. + If the next element isn't received within the specified timeout duration starting from its predecessor, the other observable sequence is used to produce future messages from that point on. + + The type of the elements in the source sequence and the other sequence used upon a timeout. + Source sequence to perform a timeout for. + Maximum duration between values before a timeout occurs. + Sequence to return in case of a timeout. + Scheduler to run the timeout timers on. + The source sequence switching to the other sequence in case of a timeout. + + or or is null. + + is less than TimeSpan.Zero. + + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing timeout timers to be scheduled that are due + immediately. However, this doesn't guarantee a timeout will occur, even for the first element. This is a side-effect of the asynchrony introduced by the + scheduler, where the action to propagate a timeout may not execute immediately, despite the TimeSpan.Zero due time. In such cases, the next element may + arrive before the scheduler gets a chance to run the timeout action. + + + + + + Applies a timeout policy for each element in the observable sequence, using the specified scheduler to run timeout timers. + If the next element isn't received within the specified timeout duration starting from its predecessor, a TimeoutException is propagated to the observer. + + The type of the elements in the source sequence. + Source sequence to perform a timeout for. + Maximum duration between values before a timeout occurs. + Scheduler to run the timeout timers on. + The source sequence with a TimeoutException in case of a timeout. + + or is null. + + is less than TimeSpan.Zero. + (Asynchronous) If no element is produced within from the previous element. + + + In case you only want to timeout on the first element, consider using the + operator applied to the source sequence and a delayed sequence. Alternatively, the general-purpose overload + of Timeout, can be used. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing timeout timers to be scheduled that are due + immediately. However, this doesn't guarantee a timeout will occur, even for the first element. This is a side-effect of the asynchrony introduced by the + scheduler, where the action to propagate a timeout may not execute immediately, despite the TimeSpan.Zero due time. In such cases, the next element may + arrive before the scheduler gets a chance to run the timeout action. + + + + + + Applies a timeout policy to the observable sequence based on an initial timeout duration for the first element, and a timeout duration computed for each subsequent element. + If the next element isn't received within the computed duration starting from its predecessor, a TimeoutException is propagated to the observer. + + The type of the elements in the source sequence. + The type of the elements in the timeout sequences used to indicate the timeout duration for each element in the source sequence. + Source sequence to perform a timeout for. + Observable sequence that represents the timeout for the first element. + Selector to retrieve an observable sequence that represents the timeout between the current element and the next element. + The source sequence with a TimeoutException in case of a timeout. + + or or is null. + + + + Applies a timeout policy to the observable sequence based on an initial timeout duration for the first element, and a timeout duration computed for each subsequent element. + If the next element isn't received within the computed duration starting from its predecessor, the other observable sequence is used to produce future messages from that point on. + + The type of the elements in the source sequence and the other sequence used upon a timeout. + The type of the elements in the timeout sequences used to indicate the timeout duration for each element in the source sequence. + Source sequence to perform a timeout for. + Observable sequence that represents the timeout for the first element. + Selector to retrieve an observable sequence that represents the timeout between the current element and the next element. + Sequence to return in case of a timeout. + The source sequence switching to the other sequence in case of a timeout. + + or or or is null. + + + + Applies a timeout policy to the observable sequence based on a timeout duration computed for each element. + If the next element isn't received within the computed duration starting from its predecessor, a TimeoutException is propagated to the observer. + + The type of the elements in the source sequence. + The type of the elements in the timeout sequences used to indicate the timeout duration for each element in the source sequence. + Source sequence to perform a timeout for. + Selector to retrieve an observable sequence that represents the timeout between the current element and the next element. + The source sequence with a TimeoutException in case of a timeout. + + or is null. + + + + Applies a timeout policy to the observable sequence based on a timeout duration computed for each element. + If the next element isn't received within the computed duration starting from its predecessor, the other observable sequence is used to produce future messages from that point on. + + The type of the elements in the source sequence and the other sequence used upon a timeout. + The type of the elements in the timeout sequences used to indicate the timeout duration for each element in the source sequence. + Source sequence to perform a timeout for. + Selector to retrieve an observable sequence that represents the timeout between the current element and the next element. + Sequence to return in case of a timeout. + The source sequence switching to the other sequence in case of a timeout. + + or or is null. + + + + Returns an observable sequence that produces a single value at the specified absolute due time. + + Query provider used to construct the data source. + Absolute time at which to produce the value. If this value is less than or equal to DateTimeOffset.UtcNow, the timer will fire as soon as possible. + An observable sequence that produces a value at due time. + + + + Returns an observable sequence that periodically produces a value starting at the specified initial absolute due time. + + Query provider used to construct the data source. + Absolute time at which to produce the first value. If this value is less than or equal to DateTimeOffset.UtcNow, the timer will fire as soon as possible. + Period to produce subsequent values. If this value is equal to TimeSpan.Zero, the timer will recur as fast as possible. + An observable sequence that produces a value at due time and then after each period. + + is less than TimeSpan.Zero. + + + + Returns an observable sequence that periodically produces a value starting at the specified initial absolute due time, using the specified scheduler to run timers. + + Query provider used to construct the data source. + Absolute time at which to produce the first value. If this value is less than or equal to DateTimeOffset.UtcNow, the timer will fire as soon as possible. + Period to produce subsequent values. If this value is equal to TimeSpan.Zero, the timer will recur as fast as possible. + Scheduler to run timers on. + An observable sequence that produces a value at due time and then after each period. + + is less than TimeSpan.Zero. + + is null. + + + + Returns an observable sequence that produces a single value at the specified absolute due time, using the specified scheduler to run the timer. + + Query provider used to construct the data source. + Absolute time at which to produce the value. If this value is less than or equal to DateTimeOffset.UtcNow, the timer will fire as soon as possible. + Scheduler to run the timer on. + An observable sequence that produces a value at due time. + + is null. + + + + Returns an observable sequence that produces a single value after the specified relative due time has elapsed. + + Query provider used to construct the data source. + Relative time at which to produce the value. If this value is less than or equal to TimeSpan.Zero, the timer will fire as soon as possible. + An observable sequence that produces a value after the due time has elapsed. + + + + Returns an observable sequence that periodically produces a value after the specified initial relative due time has elapsed. + + Query provider used to construct the data source. + Relative time at which to produce the first value. If this value is less than or equal to TimeSpan.Zero, the timer will fire as soon as possible. + Period to produce subsequent values. If this value is equal to TimeSpan.Zero, the timer will recur as fast as possible. + An observable sequence that produces a value after due time has elapsed and then after each period. + + is less than TimeSpan.Zero. + + + + Returns an observable sequence that periodically produces a value after the specified initial relative due time has elapsed, using the specified scheduler to run timers. + + Query provider used to construct the data source. + Relative time at which to produce the first value. If this value is less than or equal to TimeSpan.Zero, the timer will fire as soon as possible. + Period to produce subsequent values. If this value is equal to TimeSpan.Zero, the timer will recur as fast as possible. + Scheduler to run timers on. + An observable sequence that produces a value after due time has elapsed and then each period. + + is less than TimeSpan.Zero. + + is null. + + + + Returns an observable sequence that produces a single value after the specified relative due time has elapsed, using the specified scheduler to run the timer. + + Query provider used to construct the data source. + Relative time at which to produce the value. If this value is less than or equal to TimeSpan.Zero, the timer will fire as soon as possible. + Scheduler to run the timer on. + An observable sequence that produces a value after the due time has elapsed. + + is null. + + + + Timestamps each element in an observable sequence using the local system clock. + + The type of the elements in the source sequence. + Source sequence to timestamp elements for. + An observable sequence with timestamp information on elements. + + is null. + + + + Timestamp each element in an observable sequence using the clock of the specified scheduler. + + The type of the elements in the source sequence. + Source sequence to timestamp elements for. + Scheduler used to compute timestamps. + An observable sequence with timestamp information on elements. + + or is null. + + + + Creates an array from an observable sequence. + + The type of the elements in the source sequence. + The source observable sequence to get an array of elements for. + An observable sequence containing a single element with an array containing all the elements of the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a dictionary from an observable sequence according to a specified key selector function. + + The type of the elements in the source sequence. + The type of the dictionary key computed for each element in the source sequence. + An observable sequence to create a dictionary for. + A function to extract a key from each element. + An observable sequence containing a single element with a dictionary mapping unique key values onto the corresponding source sequence's element. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a dictionary from an observable sequence according to a specified key selector function, and a comparer. + + The type of the elements in the source sequence. + The type of the dictionary key computed for each element in the source sequence. + An observable sequence to create a dictionary for. + A function to extract a key from each element. + An equality comparer to compare keys. + An observable sequence containing a single element with a dictionary mapping unique key values onto the corresponding source sequence's element. + + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a dictionary from an observable sequence according to a specified key selector function, and an element selector function. + + The type of the elements in the source sequence. + The type of the dictionary key computed for each element in the source sequence. + The type of the dictionary value computed for each element in the source sequence. + An observable sequence to create a dictionary for. + A function to extract a key from each element. + A transform function to produce a result element value from each element. + An observable sequence containing a single element with a dictionary mapping unique key values onto the corresponding source sequence's element. + + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a dictionary from an observable sequence according to a specified key selector function, a comparer, and an element selector function. + + The type of the elements in the source sequence. + The type of the dictionary key computed for each element in the source sequence. + The type of the dictionary value computed for each element in the source sequence. + An observable sequence to create a dictionary for. + A function to extract a key from each element. + A transform function to produce a result element value from each element. + An equality comparer to compare keys. + An observable sequence containing a single element with a dictionary mapping unique key values onto the corresponding source sequence's element. + + or or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Converts an observable sequence to an enumerable sequence. + + The type of the elements in the source sequence. + An observable sequence to convert to an enumerable sequence. + The enumerable sequence containing the elements in the observable sequence. + + is null. + This operator requires the source's object (see ) to implement . + + + + Creates a list from an observable sequence. + + The type of the elements in the source sequence. + The source observable sequence to get a list of elements for. + An observable sequence containing a single element with a list containing all the elements of the source sequence. + + is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a lookup from an observable sequence according to a specified key selector function. + + The type of the elements in the source sequence. + The type of the lookup key computed for each element in the source sequence. + An observable sequence to create a lookup for. + A function to extract a key from each element. + An observable sequence containing a single element with a lookup mapping unique key values onto the corresponding source sequence's elements. + + or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a lookup from an observable sequence according to a specified key selector function, and a comparer. + + The type of the elements in the source sequence. + The type of the lookup key computed for each element in the source sequence. + An observable sequence to create a lookup for. + A function to extract a key from each element. + An equality comparer to compare keys. + An observable sequence containing a single element with a lookup mapping unique key values onto the corresponding source sequence's elements. + + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a lookup from an observable sequence according to a specified key selector function, and an element selector function. + + The type of the elements in the source sequence. + The type of the lookup key computed for each element in the source sequence. + The type of the lookup value computed for each element in the source sequence. + An observable sequence to create a lookup for. + A function to extract a key from each element. + A transform function to produce a result element value from each element. + An observable sequence containing a single element with a lookup mapping unique key values onto the corresponding source sequence's elements. + + or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Creates a lookup from an observable sequence according to a specified key selector function, a comparer, and an element selector function. + + The type of the elements in the source sequence. + The type of the lookup key computed for each element in the source sequence. + The type of the lookup value computed for each element in the source sequence. + An observable sequence to create a lookup for. + A function to extract a key from each element. + A transform function to produce a result element value from each element. + An equality comparer to compare keys. + An observable sequence containing a single element with a lookup mapping unique key values onto the corresponding source sequence's elements. + + or or or is null. + The return type of this operator differs from the corresponding operator on IEnumerable in order to retain asynchronous behavior. + + + + Converts an enumerable sequence to an observable sequence. + + Query provider used to construct the data source. + The type of the elements in the source sequence. + Enumerable sequence to convert to an observable sequence. + The observable sequence whose elements are pulled from the given enumerable sequence. + + is null. + + + + Converts an enumerable sequence to an observable sequence, using the specified scheduler to run the enumeration loop. + + Query provider used to construct the data source. + The type of the elements in the source sequence. + Enumerable sequence to convert to an observable sequence. + Scheduler to run the enumeration of the input sequence on. + The observable sequence whose elements are pulled from the given enumerable sequence. + + or is null. + + + + Constructs an observable sequence that depends on a resource object, whose lifetime is tied to the resulting observable sequence's lifetime. + + Query provider used to construct the data source. + The type of the elements in the produced sequence. + The type of the resource used during the generation of the resulting sequence. Needs to implement . + Factory function to obtain a resource object. + Factory function to obtain an observable sequence that depends on the obtained resource. + An observable sequence whose lifetime controls the lifetime of the dependent resource object. + + or is null. + + + + Constructs an observable sequence that depends on a resource object, whose lifetime is tied to the resulting observable sequence's lifetime. The resource is obtained and used through asynchronous methods. + The CancellationToken passed to the asynchronous methods is tied to the returned disposable subscription, allowing best-effort cancellation at any stage of the resource acquisition or usage. + + Query provider used to construct the data source. + The type of the elements in the produced sequence. + The type of the resource used during the generation of the resulting sequence. Needs to implement . + Asynchronous factory function to obtain a resource object. + Asynchronous factory function to obtain an observable sequence that depends on the obtained resource. + An observable sequence whose lifetime controls the lifetime of the dependent resource object. + + or is null. + This operator is especially useful in conjunction with the asynchronous programming features introduced in C# 5.0 and Visual Basic 11. + When a subscription to the resulting sequence is disposed, the CancellationToken that was fed to the asynchronous resource factory and observable factory functions will be signaled. + + + + Filters the elements of an observable sequence based on a predicate. + + The type of the elements in the source sequence. + An observable sequence whose elements to filter. + A function to test each source element for a condition. + An observable sequence that contains elements from the input sequence that satisfy the condition. + + or is null. + + + + Filters the elements of an observable sequence based on a predicate by incorporating the element's index. + + The type of the elements in the source sequence. + An observable sequence whose elements to filter. + A function to test each source element for a condition; the second parameter of the function represents the index of the source element. + An observable sequence that contains elements from the input sequence that satisfy the condition. + + or is null. + + + + Repeats the given as long as the specified holds, where the is evaluated before each repeated is subscribed to. + + Query provider used to construct the data source. + The type of the elements in the source sequence. + Source to repeat as long as the function evaluates to true. + Condition that will be evaluated before subscription to the , to determine whether repetition of the source is required. + The observable sequence obtained by concatenating the sequence as long as the holds. + + or is null. + + + + Projects each element of an observable sequence into consecutive non-overlapping windows which are produced based on element count information. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Length of each window. + An observable sequence of windows. + + is null. + + is less than or equal to zero. + + + + Projects each element of an observable sequence into zero or more windows which are produced based on element count information. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Length of each window. + Number of elements to skip between creation of consecutive windows. + An observable sequence of windows. + + is null. + + or is less than or equal to zero. + + + + Projects each element of an observable sequence into consecutive non-overlapping windows which are produced based on timing information. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Length of each window. + The sequence of windows. + + is null. + + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows as fast as it can. + Because all source sequence elements end up in one of the windows, some windows won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current window and to create a new window may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Projects each element of an observable sequence into a window that is completed when either it's full or a given amount of time has elapsed. + A useful real-world analogy of this overload is the behavior of a ferry leaving the dock when all seats are taken, or at the scheduled time of departure, whichever event occurs first. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Maximum time length of a window. + Maximum element count of a window. + An observable sequence of windows. + + is null. + + is less than TimeSpan.Zero. -or- is less than or equal to zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows as fast as it can. + Because all source sequence elements end up in one of the windows, some windows won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current window and to create a new window may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Projects each element of an observable sequence into a window that is completed when either it's full or a given amount of time has elapsed, using the specified scheduler to run timers. + A useful real-world analogy of this overload is the behavior of a ferry leaving the dock when all seats are taken, or at the scheduled time of departure, whichever event occurs first. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Maximum time length of a window. + Maximum element count of a window. + Scheduler to run windowing timers on. + An observable sequence of windows. + + or is null. + + is less than TimeSpan.Zero. -or- is less than or equal to zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows as fast as it can. + Because all source sequence elements end up in one of the windows, some windows won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current window and to create a new window may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Projects each element of an observable sequence into consecutive non-overlapping windows which are produced based on timing information, using the specified scheduler to run timers. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Length of each window. + Scheduler to run windowing timers on. + An observable sequence of windows. + + or is null. + + is less than TimeSpan.Zero. + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows as fast as it can. + Because all source sequence elements end up in one of the windows, some windows won't have a zero time span. This is a side-effect of the asynchrony introduced + by the scheduler, where the action to close the current window and to create a new window may not execute immediately, despite the TimeSpan.Zero due time. + + + + + Projects each element of an observable sequence into zero or more windows which are produced based on timing information. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Length of each window. + Interval between creation of consecutive windows. + An observable sequence of windows. + + is null. + + or is less than TimeSpan.Zero. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows with minimum duration + length. However, some windows won't have a zero time span. This is a side-effect of the asynchrony introduced by the scheduler, where the action to close the + current window may not execute immediately, despite the TimeSpan.Zero due time. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows as fast as it can. + However, this doesn't mean all windows will start at the beginning of the source sequence. This is a side-effect of the asynchrony introduced by the scheduler, + where the action to create a new window may not execute immediately, despite the TimeSpan.Zero due time. + + + + + + Projects each element of an observable sequence into zero or more windows which are produced based on timing information, using the specified scheduler to run timers. + + The type of the elements in the source sequence, and in the windows in the result sequence. + Source sequence to produce windows over. + Length of each window. + Interval between creation of consecutive windows. + Scheduler to run windowing timers on. + An observable sequence of windows. + + or is null. + + or is less than TimeSpan.Zero. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows with minimum duration + length. However, some windows won't have a zero time span. This is a side-effect of the asynchrony introduced by the scheduler, where the action to close the + current window may not execute immediately, despite the TimeSpan.Zero due time. + + + Specifying a TimeSpan.Zero value for is not recommended but supported, causing the scheduler to create windows as fast as it can. + However, this doesn't mean all windows will start at the beginning of the source sequence. This is a side-effect of the asynchrony introduced by the scheduler, + where the action to create a new window may not execute immediately, despite the TimeSpan.Zero due time. + + + + + + Projects each element of an observable sequence into consecutive non-overlapping windows. + + The type of the elements in the source sequence, and in the windows in the result sequence. + The type of the elements in the sequences indicating window boundary events. + Source sequence to produce windows over. + Sequence of window boundary markers. The current window is closed and a new window is opened upon receiving a boundary marker. + An observable sequence of windows. + + or is null. + + + + Projects each element of an observable sequence into consecutive non-overlapping windows. + + The type of the elements in the source sequence, and in the windows in the result sequence. + The type of the elements in the sequences indicating window closing events. + Source sequence to produce windows over. + A function invoked to define the boundaries of the produced windows. A new window is started when the previous one is closed. + An observable sequence of windows. + + or is null. + + + + Projects each element of an observable sequence into zero or more windows. + + The type of the elements in the source sequence, and in the windows in the result sequence. + The type of the elements in the sequence indicating window opening events, also passed to the closing selector to obtain a sequence of window closing events. + The type of the elements in the sequences indicating window closing events. + Source sequence to produce windows over. + Observable sequence whose elements denote the creation of new windows. + A function invoked to define the closing of each produced window. + An observable sequence of windows. + + or or is null. + + + + Merges two observable sequences into one observable sequence by combining each element from the first source with the latest element from the second source, if any. + Starting from Rx.NET 4.0, this will subscribe to before subscribing to to have a latest element readily available + in case emits an element right away. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Function to invoke for each element from the first source combined with the latest element from the second source, if any. + An observable sequence containing the result of combining each element of the first source with the latest element from the second source, if any, using the specified result selector function. + + or or is null. + + + + Merges the specified observable sequences into one observable sequence by emitting a list with the elements of the observable sequences at corresponding indexes. + + Query provider used to construct the data source. + The type of the elements in the source sequences, and in the lists in the result sequence. + Observable sources. + An observable sequence containing lists of elements at corresponding indexes. + + is null. + + + + Merges the specified observable sequences into one observable sequence by emitting a list with the elements of the observable sequences at corresponding indexes. + + Query provider used to construct the data source. + The type of the elements in the source sequences, and in the lists in the result sequence. + Observable sources. + An observable sequence containing lists of elements at corresponding indexes. + + is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + The type of the elements in the result sequence, returned by the selector function. + Observable sources. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or is null. + + + + Merges two observable sequences into one observable sequence by combining their elements in a pairwise fashion. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Function to invoke for each consecutive pair of elements from the first and second source. + An observable sequence containing the result of pairwise combining the elements of the first and second source using the specified result selector function. + + or or is null. + + + + Merges an observable sequence and an enumerable sequence into one observable sequence by using the selector function. + + The type of the elements in the first observable source sequence. + The type of the elements in the second enumerable source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second enumerable source. + Function to invoke for each consecutive pair of elements from the first and second source. + An observable sequence containing the result of pairwise combining the elements of the first and second source using the specified result selector function. + + or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Fifteenth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + The type of the elements in the sixteenth source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Fifteenth observable source. + Sixteenth observable source. + Function to invoke for each series of elements at corresponding indexes in the sources. + An observable sequence containing the result of combining elements of the sources using the specified result selector function. + + or or or or or or or or or or or or or or or or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + The type of the fourteenth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + The type of the fourteenth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + The type of the fourteenth argument passed to the action. + The type of the fifteenth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + The type of the fourteenth argument passed to the action. + The type of the fifteenth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the default scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + The type of the fourteenth argument passed to the action. + The type of the fifteenth argument passed to the action. + The type of the sixteenth argument passed to the action. + Action to convert to an asynchronous action. + Asynchronous action. + + is null. + + + + Converts the function into an asynchronous action. Each invocation of the resulting asynchronous action causes an invocation of the original synchronous action on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the action. + The type of the second argument passed to the action. + The type of the third argument passed to the action. + The type of the fourth argument passed to the action. + The type of the fifth argument passed to the action. + The type of the sixth argument passed to the action. + The type of the seventh argument passed to the action. + The type of the eighth argument passed to the action. + The type of the ninth argument passed to the action. + The type of the tenth argument passed to the action. + The type of the eleventh argument passed to the action. + The type of the twelfth argument passed to the action. + The type of the thirteenth argument passed to the action. + The type of the fourteenth argument passed to the action. + The type of the fifteenth argument passed to the action. + The type of the sixteenth argument passed to the action. + Action to convert to an asynchronous action. + Scheduler to invoke the original action on. + Asynchronous action. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the fourteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the fourteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the fourteenth argument passed to the function. + The type of the fifteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the fourteenth argument passed to the function. + The type of the fifteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the fourteenth argument passed to the function. + The type of the fifteenth argument passed to the function. + The type of the sixteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Asynchronous function. + + is null. + + + + Converts the function into an asynchronous function. Each invocation of the resulting asynchronous function causes an invocation of the original synchronous function on the specified scheduler. + + Query provider used to construct the data source. + The type of the first argument passed to the function. + The type of the second argument passed to the function. + The type of the third argument passed to the function. + The type of the fourth argument passed to the function. + The type of the fifth argument passed to the function. + The type of the sixth argument passed to the function. + The type of the seventh argument passed to the function. + The type of the eighth argument passed to the function. + The type of the ninth argument passed to the function. + The type of the tenth argument passed to the function. + The type of the eleventh argument passed to the function. + The type of the twelfth argument passed to the function. + The type of the thirteenth argument passed to the function. + The type of the fourteenth argument passed to the function. + The type of the fifteenth argument passed to the function. + The type of the sixteenth argument passed to the function. + The type of the result returned by the function. + Function to convert to an asynchronous function. + Scheduler to invoke the original function on. + Asynchronous function. + + or is null. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The type of the twelfth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The type of the twelfth argument passed to the begin delegate. + The type of the thirteenth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The type of the twelfth argument passed to the begin delegate. + The type of the thirteenth argument passed to the begin delegate. + The type of the fourteenth argument passed to the begin delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result (represented as a Unit value) as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The type of the twelfth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The type of the twelfth argument passed to the begin delegate. + The type of the thirteenth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Converts a Begin/End invoke function pair into an asynchronous function. + + Query provider used to construct the data source. + The type of the first argument passed to the begin delegate. + The type of the second argument passed to the begin delegate. + The type of the third argument passed to the begin delegate. + The type of the fourth argument passed to the begin delegate. + The type of the fifth argument passed to the begin delegate. + The type of the sixth argument passed to the begin delegate. + The type of the seventh argument passed to the begin delegate. + The type of the eighth argument passed to the begin delegate. + The type of the ninth argument passed to the begin delegate. + The type of the tenth argument passed to the begin delegate. + The type of the eleventh argument passed to the begin delegate. + The type of the twelfth argument passed to the begin delegate. + The type of the thirteenth argument passed to the begin delegate. + The type of the fourteenth argument passed to the begin delegate. + The type of the result returned by the end delegate. + The delegate that begins the asynchronous operation. + The delegate that ends the asynchronous operation. + Function that can be used to start the asynchronous operation and retrieve the result as an observable sequence. + + or is null. + Each invocation of the resulting function will cause the asynchronous operation to be started. Subscription to the resulting sequence has no observable side-effect, and each subscription will produce the asynchronous operation's result. + + + + Creates a pattern that matches when both observable sequences have an available element. + + The type of the elements in the left sequence. + The type of the elements in the right sequence. + Observable sequence to match with the right sequence. + Observable sequence to match with the left sequence. + Pattern object that matches when both observable sequences have an available element. + or is null. + + + + Matches when the observable sequence has an available element and projects the element by invoking the selector function. + + The type of the elements in the source sequence. + The type of the elements in the result sequence, returned by the selector function. + Observable sequence to apply the selector on. + Selector that will be invoked for elements in the source sequence. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + or is null. + + + + Joins together the results from several patterns. + + The type of the elements in the result sequence, obtained from the specified patterns. + Query provider used to construct the data source. + A series of plans created by use of the Then operator on patterns. + An observable sequence with the results from matching several patterns. + or is null. + + + + Joins together the results from several patterns. + + The type of the elements in the result sequence, obtained from the specified patterns. + Query provider used to construct the data source. + A series of plans created by use of the Then operator on patterns. + An observable sequence with the results form matching several patterns. + or is null. + + + + Try winning the race for the right of emission. + + If true, the contender is the left source. + True if the contender has won the race. + + + + If true, this observer won the race and now can emit + on a fast path. + + + + + Automatically connect the upstream IConnectableObservable once the + specified number of IObservers have subscribed to this IObservable. + + The upstream value type. + + + + The only instance for a TResult type: this source + is completely stateless and has a constant behavior. + + + + + No need for instantiating this more than once per TResult. + + + + + Contains the current active connection's state or null + if no connection is active at the moment. + Should be manipulated while holding the lock. + + + + + Contains the connection reference the downstream observer + has subscribed to. Its purpose is to + avoid subscribing, connecting and disconnecting + while holding a lock. + + + + + Holds an individual connection state: the observer count and + the connection's IDisposable. + + + + + Relays items to the downstream until the predicate returns true. + + The element type of the sequence + + + + Provides a set of static methods for writing queries over observable sequences, allowing translation to a target query language. + + + + + Subscribes to each observable sequence returned by the iteratorMethod in sequence and produces a Unit value on the resulting sequence for each step of the iteration. + + Query provider used to construct the data source. + Iterator method that drives the resulting observable sequence. + An observable sequence obtained by running the iterator and returning Unit values for each iteration step. + + is null. + + + + Subscribes to each observable sequence returned by the iteratorMethod in sequence and returns the observable sequence of values sent to the observer given to the iteratorMethod. + + Query provider used to construct the data source. + The type of the elements in the produced sequence. + Iterator method that produces elements in the resulting sequence by calling the given observer. + An observable sequence obtained by running the iterator and returning the elements that were sent to the observer. + + is null. + + + + Expands an observable sequence by recursively invoking selector. + + The type of the elements in the source sequence and each of the recursively expanded sources obtained by running the selector function. + Source sequence with the initial elements. + Selector function to invoke for each produced element, resulting in another sequence to which the selector will be invoked recursively again. + An observable sequence containing all the elements produced by the recursive expansion. + + or is null. + + + + Expands an observable sequence by recursively invoking selector, using the specified scheduler to enumerate the queue of obtained sequences. + + The type of the elements in the source sequence and each of the recursively expanded sources obtained by running the selector function. + Source sequence with the initial elements. + Selector function to invoke for each produced element, resulting in another sequence to which the selector will be invoked recursively again. + Scheduler on which to perform the expansion by enumerating the internal queue of obtained sequences. + An observable sequence containing all the elements produced by the recursive expansion. + + or or is null. + + + + Runs all specified observable sequences in parallel and collects their last elements. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + Observable sequence to collect the last elements for. + An observable sequence with an array collecting the last elements of all the input sequences. + + is null. + + + + Runs all observable sequences in the enumerable sources sequence in parallel and collect their last elements. + + Query provider used to construct the data source. + The type of the elements in the source sequences. + Observable sequence to collect the last elements for. + An observable sequence with an array collecting the last elements of all the input sequences. + + is null. + + + + Runs two observable sequences in parallel and combines their last elements. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the result sequence, returned by the selector function. + First observable sequence. + Second observable sequence. + Result selector function to invoke with the last elements of both sequences. + An observable sequence with the result of calling the selector function with the last elements of both input sequences. + + or or is null. + + + + Returns an observable sequence that is the result of invoking the selector on the source sequence, without sharing subscriptions. + This operator allows for a fluent style of writing queries that use the same sequence multiple times. + + The type of the elements in the source sequence. + The type of the elements in the result sequence. + Source sequence that will be shared in the selector function. + Selector function which can use the source sequence as many times as needed, without sharing subscriptions to the source sequence. + An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. + + or is null. + + + + Comonadic bind operator. + + + + + Comonadic bind operator. + + + + + Merges two observable sequences into one observable sequence by combining each element from the first source with the latest element from the second source, if any. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + First observable source. + Second observable source. + An observable sequence containing the result of combining each element of the first source with the latest element from the second source, if any, as a tuple value. + or is null. + + + + Merges an observable sequence and an enumerable sequence into one observable sequence of tuple values. + + The type of the elements in the first observable source sequence. + The type of the elements in the second enumerable source sequence. + First observable source. + Second enumerable source. + An observable sequence containing the result of pairwise combining the elements of the first and second source as a tuple value. + or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + First observable source. + Second observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + First observable source. + Second observable source. + Third observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Fifteenth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever any of the observable sequences produces an element. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + The type of the elements in the sixteenth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Fifteenth observable source. + Sixteenth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + First observable source. + Second observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + First observable source. + Second observable source. + Third observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Fifteenth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or or or or or or or is null. + + + + Merges the specified observable sequences into one observable sequence of tuple values whenever all of the observable sequences have produced an element at a corresponding index. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + The type of the elements in the sixteenth source sequence. + First observable source. + Second observable source. + Third observable source. + Fourth observable source. + Fifth observable source. + Sixth observable source. + Seventh observable source. + Eighth observable source. + Ninth observable source. + Tenth observable source. + Eleventh observable source. + Twelfth observable source. + Thirteenth observable source. + Fourteenth observable source. + Fifteenth observable source. + Sixteenth observable source. + An observable sequence containing the result of combining elements of the sources using tuple values. + or or or or or or or or or or or or or or or is null. + + + + (Infrastructure) Implement query debugger services. + + + + + The System.Reactive.Linq namespace contains interfaces and classes that support expressing queries over observable sequences, using Language Integrated Query (LINQ). + Query operators are made available as extension methods for and defined on the Observable and Qbservable classes, respectively. + + + + + An ObserveOn operator implementation that uses lock-free + techniques to signal events to the downstream. + + The element type of the sequence. + + + + The current task representing a running drain operation. + + + + + Indicates the work-in-progress state of this operator, + zero means no work is currently being done. + + + + + If true, the upstream has issued OnCompleted. + + + + + If is true and this is non-null, the upstream + failed with an OnError. + + + + + Indicates a dispose has been requested. + + + + + Remove remaining elements from the queue upon + cancellation or failure. + + The queue to use. The argument ensures that the + _queue field is not re-read from memory unnecessarily + due to the memory barriers inside TryDequeue mandating it + despite the field is read-only. + + + + Submit the drain task via the appropriate scheduler if + there is no drain currently running (wip > 0). + + + + + The static action to be scheduled on a simple scheduler. + Avoids creating a delegate that captures this + whenever the signals have to be drained. + + + + + Emits at most one signal per run on a scheduler that doesn't like + long running tasks. + + The scheduler to use for scheduling the next signal emission if necessary. + The IDisposable of the recursively scheduled task or an empty disposable. + + + + Executes a drain step by checking the disposed state, + checking for the terminated state and for an + empty queue, issuing the appropriate signals to the + given downstream. + + The queue to use. The argument ensures that the + _queue field is not re-read from memory due to the memory barriers + inside TryDequeue mandating it despite the field is read-only. + In addition, the DrainStep is invoked from the DrainLongRunning's loop + so reading _queue inside this method would still incur the same barrier + overhead otherwise. + + + + Signals events on a ISchedulerLongRunning by blocking the emission thread while waiting + for them from the upstream. + + The element type of the sequence. + + + + This will run a suspending drain task, hogging the backing thread + until the sequence terminates or gets disposed. + + + + + The queue for holding the OnNext items, terminal signals have their own fields. + + + + + Protects the suspension and resumption of the long running drain task. + + + + + The work-in-progress counter. If it jumps from 0 to 1, the drain task is resumed, + if it reaches 0 again, the drain task is suspended. + + + + + Set to true if the upstream terminated. + + + + + Set to a non-null Exception if the upstream terminated with OnError. + + + + + Indicates the sequence has been disposed and the drain task should quit. + + + + + Makes sure the drain task is scheduled only once, when the first signal + from upstream arrives. + + + + + The disposable tracking the drain task. + + + + + Static reference to the Drain method, saves allocation. + + + + + Override this method to dispose additional resources. + The method is guaranteed to be called at most once. + + If true, the method was called from . + + + + Base class for implementation of query operators, providing a lightweight sink that can be disposed to mute the outgoing observer. + + Type of the resulting sequence's elements. + + Implementations of sinks are responsible to enforce the message grammar on the associated observer. Upon sending a terminal message, a pairing Dispose call should be made to trigger cancellation of related resources and to mute the outgoing observer. + + + + Holds onto a singleton IDisposable indicating a ready state. + + + + + This indicates the operation has been prepared and ready for + the next step. + + + + + Provides a mechanism for receiving push-based notifications and returning a response. + + + The type of the elements received by the observer. + This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. + + + The type of the result returned from the observer's notification handlers. + This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. + + + + + Notifies the observer of a new element in the sequence. + + The new element in the sequence. + Result returned upon observation of a new element. + + + + Notifies the observer that an exception has occurred. + + The exception that occurred. + Result returned upon observation of an error. + + + + Notifies the observer of the end of the sequence. + + Result returned upon observation of the sequence completion. + + + + Abstract base class for join patterns. + + + + + Represents a join pattern over one observable sequence. + + The type of the elements in the first source sequence. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over two observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + + + + Creates a pattern that matches when all three observable sequences have an available element. + + The type of the elements in the third observable sequence. + Observable sequence to match with the two previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over three observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + + + + Creates a pattern that matches when all four observable sequences have an available element. + + The type of the elements in the fourth observable sequence. + Observable sequence to match with the three previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over four observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + + + + Creates a pattern that matches when all five observable sequences have an available element. + + The type of the elements in the fifth observable sequence. + Observable sequence to match with the four previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over five observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + + + + Creates a pattern that matches when all six observable sequences have an available element. + + The type of the elements in the sixth observable sequence. + Observable sequence to match with the five previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over six observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + + + + Creates a pattern that matches when all seven observable sequences have an available element. + + The type of the elements in the seventh observable sequence. + Observable sequence to match with the six previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over seven observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + + + + Creates a pattern that matches when all eight observable sequences have an available element. + + The type of the elements in the eighth observable sequence. + Observable sequence to match with the seven previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over eight observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + + + + Creates a pattern that matches when all nine observable sequences have an available element. + + The type of the elements in the ninth observable sequence. + Observable sequence to match with the eight previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over nine observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + + + + Creates a pattern that matches when all ten observable sequences have an available element. + + The type of the elements in the tenth observable sequence. + Observable sequence to match with the nine previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over ten observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + + + + Creates a pattern that matches when all eleven observable sequences have an available element. + + The type of the elements in the eleventh observable sequence. + Observable sequence to match with the ten previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over eleven observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + + + + Creates a pattern that matches when all twelve observable sequences have an available element. + + The type of the elements in the twelfth observable sequence. + Observable sequence to match with the eleven previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over twelve observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + + + + Creates a pattern that matches when all thirteen observable sequences have an available element. + + The type of the elements in the thirteenth observable sequence. + Observable sequence to match with the twelve previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over thirteen observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + + + + Creates a pattern that matches when all fourteen observable sequences have an available element. + + The type of the elements in the fourteenth observable sequence. + Observable sequence to match with the thirteen previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over fourteen observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + + + + Creates a pattern that matches when all fifteen observable sequences have an available element. + + The type of the elements in the fifteenth observable sequence. + Observable sequence to match with the fourteen previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over fifteen observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + + + + Creates a pattern that matches when all sixteen observable sequences have an available element. + + The type of the elements in the sixteenth observable sequence. + Observable sequence to match with the fifteen previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over sixteen observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + The type of the elements in the sixteenth source sequence. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents an execution plan for join patterns. + + The type of the results produced by the plan. + + + + Abstract base class for join patterns represented by an expression tree. + + + + + Creates a new join pattern object using the specified expression tree representation. + + Expression tree representing the join pattern. + + + + Gets the expression tree representing the join pattern. + + + + + Represents a join pattern over two observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + + + + Creates a pattern that matches when all three observable sequences have an available element. + + The type of the elements in the third observable sequence. + Observable sequence to match with the two previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over three observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + + + + Creates a pattern that matches when all four observable sequences have an available element. + + The type of the elements in the fourth observable sequence. + Observable sequence to match with the three previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over four observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + + + + Creates a pattern that matches when all five observable sequences have an available element. + + The type of the elements in the fifth observable sequence. + Observable sequence to match with the four previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over five observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + + + + Creates a pattern that matches when all six observable sequences have an available element. + + The type of the elements in the sixth observable sequence. + Observable sequence to match with the five previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over six observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + + + + Creates a pattern that matches when all seven observable sequences have an available element. + + The type of the elements in the seventh observable sequence. + Observable sequence to match with the six previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over seven observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + + + + Creates a pattern that matches when all eight observable sequences have an available element. + + The type of the elements in the eighth observable sequence. + Observable sequence to match with the seven previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over eight observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + + + + Creates a pattern that matches when all nine observable sequences have an available element. + + The type of the elements in the ninth observable sequence. + Observable sequence to match with the eight previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over nine observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + + + + Creates a pattern that matches when all ten observable sequences have an available element. + + The type of the elements in the tenth observable sequence. + Observable sequence to match with the nine previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over ten observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + + + + Creates a pattern that matches when all eleven observable sequences have an available element. + + The type of the elements in the eleventh observable sequence. + Observable sequence to match with the ten previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over eleven observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + + + + Creates a pattern that matches when all twelve observable sequences have an available element. + + The type of the elements in the twelfth observable sequence. + Observable sequence to match with the eleven previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over twelve observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + + + + Creates a pattern that matches when all thirteen observable sequences have an available element. + + The type of the elements in the thirteenth observable sequence. + Observable sequence to match with the twelve previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over thirteen observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + + + + Creates a pattern that matches when all fourteen observable sequences have an available element. + + The type of the elements in the fourteenth observable sequence. + Observable sequence to match with the thirteen previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over fourteen observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + + + + Creates a pattern that matches when all fifteen observable sequences have an available element. + + The type of the elements in the fifteenth observable sequence. + Observable sequence to match with the fourteen previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over fifteen observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + + + + Creates a pattern that matches when all sixteen observable sequences have an available element. + + The type of the elements in the sixteenth observable sequence. + Observable sequence to match with the fifteen previous sequences. + Pattern object that matches when all observable sequences have an available element. + is null. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents a join pattern over sixteen observable sequences. + + The type of the elements in the first source sequence. + The type of the elements in the second source sequence. + The type of the elements in the third source sequence. + The type of the elements in the fourth source sequence. + The type of the elements in the fifth source sequence. + The type of the elements in the sixth source sequence. + The type of the elements in the seventh source sequence. + The type of the elements in the eighth source sequence. + The type of the elements in the ninth source sequence. + The type of the elements in the tenth source sequence. + The type of the elements in the eleventh source sequence. + The type of the elements in the twelfth source sequence. + The type of the elements in the thirteenth source sequence. + The type of the elements in the fourteenth source sequence. + The type of the elements in the fifteenth source sequence. + The type of the elements in the sixteenth source sequence. + + + + Matches when all observable sequences have an available element and projects the elements by invoking the selector function. + + The type of the elements in the result sequence, returned by the selector function. + Selector that will be invoked for elements in the source sequences. + Plan that produces the projected results, to be fed (with other plans) to the When operator. + is null. + + + + Represents an execution plan for join patterns represented by an expression tree. + + The type of the results produced by the plan. + + + + Gets the expression tree representing the join pattern execution plan. + + + + + The System.Reactive.Joins namespace contains classes used to express join patterns over observable sequences using fluent method syntax. + + + + + Represents an object that retains the elements of the observable sequence and signals the end of the sequence. + + The type of elements received from the source sequence. + + + + Constructs an object that retains the values of source and signals the end of the sequence. + + The observable sequence whose elements will be retained in the list. + is null. + + + + Returns the last value of the observable sequence. + + + + + Determines the index of a specific item in the ListObservable. + + The element to determine the index for. + The index of the specified item in the list; -1 if not found. + + + + Inserts an item to the ListObservable at the specified index. + + The index to insert the item at. + The item to insert in the list. + + + + Removes the ListObservable item at the specified index. + + The index of the item to remove. + + + + Gets or sets the element at the specified index. + + The index of the item to retrieve or set. + + + + Adds an item to the ListObservable. + + The item to add to the list. + + + + Removes all items from the ListObservable. + + + + + Determines whether the ListObservable contains a specific value. + + The item to search for in the list. + true if found; false otherwise. + + + + Copies the elements of the ListObservable to an System.Array, starting at a particular System.Array index. + + The array to copy elements to. + The start index in the array to start copying elements to. + + + + Gets the number of elements contained in the ListObservable. + + + + + Gets a value that indicates whether the ListObservable is read-only. + + + + + Removes the first occurrence of a specific object from the ListObservable. + + The item to remove from the list. + true if the item was found; false otherwise. + + + + Returns an enumerator that iterates through the collection. + + Enumerator over the list. + + + + Subscribes an observer to the ListObservable which will be notified upon completion. + + The observer to send completion or error messages to. + The disposable resource that can be used to unsubscribe. + is null. + + + + The System.Reactive namespace contains interfaces and classes used throughout the Reactive Extensions library. + + + + + The System.Reactive.Subjects namespace contains interfaces and classes to represent subjects, which are objects implementing both and . + Subjects are often used as sources of events, allowing one party to raise events and allowing another party to write queries over the event stream. Because of their ability to + have multiple registered observers, subjects are also used as a facility to provide multicast behavior for event streams in queries. + + + + + Represents the result of an asynchronous operation. + The last value before the OnCompleted notification, or the error received through OnError, is sent to all subscribed observers. + + The type of the elements processed by the subject. + + + + A pre-allocated empty array indicating the AsyncSubject has terminated. + + + + + A pre-allocated empty array indicating the AsyncSubject has been disposed. + + + + + Creates a subject that can only receive one value and that value is cached for all future observations. + + + + + Indicates whether the subject has observers subscribed to it. + + + + + Indicates whether the subject has been disposed. + + + + + Notifies all subscribed observers about the end of the sequence, also causing the last received value to be sent out (if any). + + + + + Notifies all subscribed observers about the exception. + + The exception to send to all observers. + is null. + + + + Sends a value to the subject. The last value received before successful termination will be sent to all subscribed and future observers. + + The value to store in the subject. + + + + Subscribes an observer to the subject. + + Observer to subscribe to the subject. + Disposable object that can be used to unsubscribe the observer from the subject. + is null. + + + + A disposable connecting the AsyncSubject and an IObserver. + + + + + Unsubscribe all observers and release resources. + + + + + Gets an awaitable object for the current AsyncSubject. + + Object that can be awaited. + + + + Specifies a callback action that will be invoked when the subject completes. + + Callback action that will be invoked when the subject completes. + is null. + + + + Gets whether the AsyncSubject has completed. + + + + + Gets the last element of the subject, potentially blocking until the subject completes successfully or exceptionally. + + The last element of the subject. Throws an InvalidOperationException if no element was received. + The source sequence is empty. + + + + Represents a value that changes over time. + Observers can subscribe to the subject to receive the last (or initial) value and all subsequent notifications. + + The type of the elements processed by the subject. + + + + Initializes a new instance of the class which creates a subject that caches its last value and starts with the specified value. + + Initial value sent to observers when no other value has been received by the subject yet. + + + + Indicates whether the subject has observers subscribed to it. + + + + + Indicates whether the subject has been disposed. + + + + + Gets the current value or throws an exception. + + The initial value passed to the constructor until is called; after which, the last value passed to . + + is frozen after is called. + After is called, always throws the specified exception. + An exception is always thrown after is called. + + Reading is a thread-safe operation, though there's a potential race condition when or are being invoked concurrently. + In some cases, it may be necessary for a caller to use external synchronization to avoid race conditions. + + + Dispose was called. + + + + Tries to get the current value or throws an exception. + + The initial value passed to the constructor until is called; after which, the last value passed to . + true if a value is available; false if the subject was disposed. + + The value returned from is frozen after is called. + After is called, always throws the specified exception. + + Calling is a thread-safe operation, though there's a potential race condition when or are being invoked concurrently. + In some cases, it may be necessary for a caller to use external synchronization to avoid race conditions. + + + + + + Notifies all subscribed observers about the end of the sequence. + + + + + Notifies all subscribed observers about the exception. + + The exception to send to all observers. + is null. + + + + Notifies all subscribed observers about the arrival of the specified element in the sequence. + + The value to send to all observers. + + + + Subscribes an observer to the subject. + + Observer to subscribe to the subject. + Disposable object that can be used to unsubscribe the observer from the subject. + is null. + + + + Unsubscribe all observers and release resources. + + + + + Represents an observable wrapper that can be connected and disconnected from its underlying observable sequence. + + The type of the elements in the source sequence. + The type of the elements in the resulting sequence, after transformation through the subject. + + + + Creates an observable that can be connected and disconnected from its source. + + Underlying observable source sequence that can be connected and disconnected from the wrapper. + Subject exposed by the connectable observable, receiving data from the underlying source sequence upon connection. + + + + Connects the observable wrapper to its source. All subscribed observers will receive values from the underlying observable sequence as long as the connection is established. + + Disposable object used to disconnect the observable wrapper from its source, causing subscribed observer to stop receiving values from the underlying observable sequence. + + + + Subscribes an observer to the observable sequence. No values from the underlying observable source will be received unless a connection was established through the Connect method. + + Observer that will receive values from the underlying observable source when the current ConnectableObservable instance is connected through a call to Connect. + Disposable used to unsubscribe from the observable sequence. + + + + Represents an observable wrapper that can be connected and disconnected from its underlying observable sequence. + + + The type of the elements in the sequence. + This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. + + + + + Connects the observable wrapper to its source. All subscribed observers will receive values from the underlying observable sequence as long as the connection is established. + + Disposable used to disconnect the observable wrapper from its source, causing subscribed observer to stop receiving values from the underlying observable sequence. + + + + Represents an object that is both an observable sequence as well as an observer. + + The type of the elements processed by the subject. + + + + Represents an object that is both an observable sequence as well as an observer. + + + The type of the elements received by the subject. + This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. + + + The type of the elements produced by the subject. + This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. For more information about covariance and contravariance, see Covariance and Contravariance in Generics. + + + + + Represents an object that is both an observable sequence as well as an observer. + Each notification is broadcasted to all subscribed and future observers, subject to buffer trimming policies. + + The type of the elements processed by the subject. + + + + Underlying optimized implementation of the replay subject. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified scheduler. + + Scheduler the observers are invoked on. + is null. + + + + Initializes a new instance of the class with the specified buffer size. + + Maximum element count of the replay buffer. + is less than zero. + + + + Initializes a new instance of the class with the specified buffer size and scheduler. + + Maximum element count of the replay buffer. + Scheduler the observers are invoked on. + is null. + is less than zero. + + + + Initializes a new instance of the class with the specified window. + + Maximum time length of the replay buffer. + is less than . + + + + Initializes a new instance of the class with the specified window and scheduler. + + Maximum time length of the replay buffer. + Scheduler the observers are invoked on. + is null. + is less than . + + + + Initializes a new instance of the class with the specified buffer size and window. + + Maximum element count of the replay buffer. + Maximum time length of the replay buffer. + is less than zero. -or- is less than . + + + + Initializes a new instance of the class with the specified buffer size, window and scheduler. + + Maximum element count of the replay buffer. + Maximum time length of the replay buffer. + Scheduler the observers are invoked on. + is less than zero. -or- is less than . + is null. + + + + Indicates whether the subject has observers subscribed to it. + + + + + Indicates whether the subject has been disposed. + + + + + Notifies all subscribed and future observers about the arrival of the specified element in the sequence. + + The value to send to all observers. + + + + Notifies all subscribed and future observers about the specified exception. + + The exception to send to all observers. + is null. + + + + Notifies all subscribed and future observers about the end of the sequence. + + + + + Subscribes an observer to the subject. + + Observer to subscribe to the subject. + Disposable object that can be used to unsubscribe the observer from the subject. + is null. + + + + Releases all resources used by the current instance of the class and unsubscribe all observers. + + + + + Original implementation of the ReplaySubject with time based operations (Scheduling, Stopwatch, buffer-by-time). + + + + + Specialized scheduled observer similar to a scheduled observer for the immediate scheduler. + + Type of the elements processed by the observer. + + + + Gate to control ownership transfer and protect data structures. + + + + + Observer to forward notifications to. + + + + + Queue to enqueue OnNext notifications into. + + + + + Standby queue to swap out for _queue when transferring ownership. This allows to reuse + queues in case of busy subjects where the initial replay doesn't suffice to catch up. + + + + + Exception passed to an OnError notification, if any. + + + + + Indicates whether an OnCompleted notification was received. + + + + + Indicates whether the observer is busy, i.e. some thread is actively draining the + notifications that were queued up. + + + + + Indicates whether a failure occurred when the owner was draining the queue. This will + prevent future work to be processed. + + + + + Creates a new scheduled observer that proxies to the specified observer. + + Observer to forward notifications to. + + + + Disposes the observer. + + + + + Notifies the observer of pending work. This will either cause the current owner to + process the newly enqueued notifications, or it will cause the calling thread to + become the owner and start processing the notification queue. + + + + + Notifies the observer of pending work. This will either cause the current owner to + process the newly enqueued notifications, or it will cause the calling thread to + become the owner and start processing the notification queue. + + The number of enqueued notifications to process (ignored). + + + + Enqueues an OnCompleted notification. + + + + + Enqueues an OnError notification. + + Error of the notification. + + + + Enqueues an OnNext notification. + + Value of the notification. + + + + Terminates the observer upon receiving terminal notifications, thus preventing + future notifications to go out. + + Observer to send terminal notifications to. + + + + Represents an object that is both an observable sequence as well as an observer. + Each notification is broadcasted to all subscribed observers. + + The type of the elements processed by the subject. + + + + Creates a subject. + + + + + Indicates whether the subject has observers subscribed to it. + + + + + Indicates whether the subject has been disposed. + + + + + Notifies all subscribed observers about the end of the sequence. + + + + + Notifies all subscribed observers about the specified exception. + + The exception to send to all currently subscribed observers. + is null. + + + + Notifies all subscribed observers about the arrival of the specified element in the sequence. + + The value to send to all currently subscribed observers. + + + + Subscribes an observer to the subject. + + Observer to subscribe to the subject. + Disposable object that can be used to unsubscribe the observer from the subject. + is null. + + + + Releases all resources used by the current instance of the class and unsubscribes all observers. + + + + + Provides a set of static methods for creating subjects. + + + + + Creates a subject from the specified observer and observable. + + The type of the elements received by the observer. + The type of the elements produced by the observable sequence. + The observer used to send messages to the subject. + The observable used to subscribe to messages sent from the subject. + Subject implemented using the given observer and observable. + or is null. + + + + Creates a subject from the specified observer and observable. + + The type of the elements received by the observer and produced by the observable sequence. + The observer used to send messages to the subject. + The observable used to subscribe to messages sent from the subject. + Subject implemented using the given observer and observable. + or is null. + + + + Synchronizes the messages sent to the subject. + + The type of the elements received by the subject. + The type of the elements produced by the subject. + The subject to synchronize. + Subject whose messages are synchronized. + is null. + + + + Synchronizes the messages sent to the subject. + + The type of the elements received and produced by the subject. + The subject to synchronize. + Subject whose messages are synchronized. + is null. + + + + Synchronizes the messages sent to the subject and notifies observers on the specified scheduler. + + The type of the elements received by the subject. + The type of the elements produced by the subject. + The subject to synchronize. + Scheduler to notify observers on. + Subject whose messages are synchronized and whose observers are notified on the given scheduler. + or is null. + + + + Synchronizes the messages sent to the subject and notifies observers on the specified scheduler. + + The type of the elements received and produced by the subject. + The subject to synchronize. + Scheduler to notify observers on. + Subject whose messages are synchronized and whose observers are notified on the given scheduler. + or is null. + + + + Base class for objects that are both an observable sequence as well as an observer. + + The type of the elements processed by the subject. + + + + Indicates whether the subject has observers subscribed to it. + + + + + Indicates whether the subject has been disposed. + + + + + Releases all resources used by the current instance of the subject and unsubscribes all observers. + + + + + Notifies all subscribed observers about the end of the sequence. + + + + + Notifies all subscribed observers about the specified exception. + + The exception to send to all currently subscribed observers. + is null. + + + + Notifies all subscribed observers about the arrival of the specified element in the sequence. + + The value to send to all currently subscribed observers. + + + + Subscribes an observer to the subject. + + Observer to subscribe to the subject. + Disposable object that can be used to unsubscribe the observer from the subject. + is null. + + + + Indicates the type of a notification. + + + + + Represents an OnNext notification. + + + + + Represents an OnError notification. + + + + + Represents an OnCompleted notification. + + + + + Represents a notification to an observer. + + The type of the elements received by the observer. + + + + Default constructor used by derived types. + + + + + Returns the value of an OnNext notification or throws an exception. + + + + + Returns a value that indicates whether the notification has a value. + + + + + Returns the exception of an OnError notification or returns null. + + + + + Gets the kind of notification that is represented. + + + + + Represents an OnNext notification to an observer. + + + + + Constructs a notification of a new value. + + + + + Returns the value of an OnNext notification. + + + + + Returns null. + + + + + Returns true. + + + + + Returns . + + + + + Returns the hash code for this instance. + + + + + Indicates whether this instance and a specified object are equal. + + + + + Returns a string representation of this instance. + + + + + Invokes the observer's method corresponding to the notification. + + Observer to invoke the notification on. + + + + Invokes the observer's method corresponding to the notification and returns the produced result. + + Observer to invoke the notification on. + Result produced by the observation. + + + + Invokes the delegate corresponding to the notification. + + Delegate to invoke for an OnNext notification. + Delegate to invoke for an OnError notification. + Delegate to invoke for an OnCompleted notification. + + + + Invokes the delegate corresponding to the notification and returns the produced result. + + Delegate to invoke for an OnNext notification. + Delegate to invoke for an OnError notification. + Delegate to invoke for an OnCompleted notification. + Result produced by the observation. + + + + Represents an OnError notification to an observer. + + + + + Constructs a notification of an exception. + + + + + Throws the exception. + + + + + Returns the exception. + + + + + Returns false. + + + + + Returns . + + + + + Returns the hash code for this instance. + + + + + Indicates whether this instance and other are equal. + + + + + Returns a string representation of this instance. + + + + + Invokes the observer's method corresponding to the notification. + + Observer to invoke the notification on. + + + + Invokes the observer's method corresponding to the notification and returns the produced result. + + Observer to invoke the notification on. + Result produced by the observation. + + + + Invokes the delegate corresponding to the notification. + + Delegate to invoke for an OnNext notification. + Delegate to invoke for an OnError notification. + Delegate to invoke for an OnCompleted notification. + + + + Invokes the delegate corresponding to the notification and returns the produced result. + + Delegate to invoke for an OnNext notification. + Delegate to invoke for an OnError notification. + Delegate to invoke for an OnCompleted notification. + Result produced by the observation. + + + + Represents an OnCompleted notification to an observer. + + + + + Complete notifications are stateless thus only one instance + can ever exist per type. + + + + + Constructs a notification of the end of a sequence. + + + + + Throws an . + + + + + Returns null. + + + + + Returns false. + + + + + Returns . + + + + + Returns the hash code for this instance. + + + + + Indicates whether this instance and other are equal. + + + + + Returns a string representation of this instance. + + + + + Invokes the observer's method corresponding to the notification. + + Observer to invoke the notification on. + + + + Invokes the observer's method corresponding to the notification and returns the produced result. + + Observer to invoke the notification on. + Result produced by the observation. + + + + Invokes the delegate corresponding to the notification. + + Delegate to invoke for an OnNext notification. + Delegate to invoke for an OnError notification. + Delegate to invoke for an OnCompleted notification. + + + + Invokes the delegate corresponding to the notification and returns the produced result. + + Delegate to invoke for an OnNext notification. + Delegate to invoke for an OnError notification. + Delegate to invoke for an OnCompleted notification. + Result produced by the observation. + + + + Determines whether the current object has the same observer message payload as a specified value. + + An object to compare to the current object. + true if both objects have the same observer message payload; otherwise, false. + + Equality of objects is based on the equality of the observer message payload they represent, including the notification Kind and the Value or Exception (if any). + This means two objects can be equal even though they don't represent the same observer method call, but have the same Kind and have equal parameters passed to the observer method. + In case one wants to determine whether two objects represent the same observer method call, use Object.ReferenceEquals identity equality instead. + + + + + Determines whether the two specified objects have the same observer message payload. + + The first to compare, or null. + The second to compare, or null. + true if the first value has the same observer message payload as the second value; otherwise, false. + + Equality of objects is based on the equality of the observer message payload they represent, including the notification Kind and the Value or Exception (if any). + This means two objects can be equal even though they don't represent the same observer method call, but have the same Kind and have equal parameters passed to the observer method. + In case one wants to determine whether two objects represent the same observer method call, use Object.ReferenceEquals identity equality instead. + + + + + Determines whether the two specified objects have a different observer message payload. + + The first to compare, or null. + The second to compare, or null. + true if the first value has a different observer message payload as the second value; otherwise, false. + + Equality of objects is based on the equality of the observer message payload they represent, including the notification Kind and the Value or Exception (if any). + This means two objects can be equal even though they don't represent the same observer method call, but have the same Kind and have equal parameters passed to the observer method. + In case one wants to determine whether two objects represent a different observer method call, use Object.ReferenceEquals identity equality instead. + + + + + Determines whether the specified System.Object is equal to the current . + + The System.Object to compare with the current . + true if the specified System.Object is equal to the current ; otherwise, false. + + Equality of objects is based on the equality of the observer message payload they represent, including the notification Kind and the Value or Exception (if any). + This means two objects can be equal even though they don't represent the same observer method call, but have the same Kind and have equal parameters passed to the observer method. + In case one wants to determine whether two objects represent the same observer method call, use Object.ReferenceEquals identity equality instead. + + + + + Invokes the observer's method corresponding to the notification. + + Observer to invoke the notification on. + + + + Invokes the observer's method corresponding to the notification and returns the produced result. + + The type of the result returned from the observer's notification handlers. + Observer to invoke the notification on. + Result produced by the observation. + + + + Invokes the delegate corresponding to the notification. + + Delegate to invoke for an OnNext notification. + Delegate to invoke for an OnError notification. + Delegate to invoke for an OnCompleted notification. + + + + Invokes the delegate corresponding to the notification and returns the produced result. + + The type of the result returned from the notification handler delegates. + Delegate to invoke for an OnNext notification. + Delegate to invoke for an OnError notification. + Delegate to invoke for an OnCompleted notification. + Result produced by the observation. + + + + Returns an observable sequence with a single notification, using the immediate scheduler. + + The observable sequence that surfaces the behavior of the notification upon subscription. + + + + Returns an observable sequence with a single notification. + + Scheduler to send out the notification calls on. + The observable sequence that surfaces the behavior of the notification upon subscription. + + + + Provides a set of static methods for constructing notifications. + + + + + Creates an object that represents an OnNext notification to an observer. + + The type of the elements received by the observer. Upon dematerialization of the notifications into an observable sequence, this type is used as the element type for the sequence. + The value contained in the notification. + The OnNext notification containing the value. + + + + Creates an object that represents an OnError notification to an observer. + + The type of the elements received by the observer. Upon dematerialization of the notifications into an observable sequence, this type is used as the element type for the sequence. + The exception contained in the notification. + The OnError notification containing the exception. + is null. + + + + Creates an object that represents an OnCompleted notification to an observer. + + The type of the elements received by the observer. Upon dematerialization of the notifications into an observable sequence, this type is used as the element type for the sequence. + The OnCompleted notification. + + + + Abstract base class for implementations of the interface. + + + If you don't need a named type to create an observable sequence (i.e. you rather need + an instance rather than a reusable type), use the Observable.Create method to create + an observable sequence with specified subscription behavior. + + The type of the elements in the sequence. + + + + Subscribes the given observer to the observable sequence. + + Observer that will receive notifications from the observable sequence. + Disposable object representing an observer's subscription to the observable sequence. + is null. + + + + Implement this method with the core subscription logic for the observable sequence. + + Observer to send notifications to. + Disposable object representing an observer's subscription to the observable sequence. + + + + Provides a set of static methods for creating observers. + + + + + Creates an observer from a notification callback. + + The type of the elements received by the observer. + Action that handles a notification. + The observer object that invokes the specified handler using a notification corresponding to each message it receives. + is null. + + + + Creates a notification callback from an observer. + + The type of the elements received by the observer. + Observer object. + The action that forwards its input notification to the underlying observer. + is null. + + + + Creates an observer from the specified OnNext action. + + The type of the elements received by the observer. + Observer's OnNext action implementation. + The observer object implemented using the given actions. + is null. + + + + Creates an observer from the specified OnNext and OnError actions. + + The type of the elements received by the observer. + Observer's OnNext action implementation. + Observer's OnError action implementation. + The observer object implemented using the given actions. + or is null. + + + + Creates an observer from the specified OnNext and OnCompleted actions. + + The type of the elements received by the observer. + Observer's OnNext action implementation. + Observer's OnCompleted action implementation. + The observer object implemented using the given actions. + or is null. + + + + Creates an observer from the specified OnNext, OnError, and OnCompleted actions. + + The type of the elements received by the observer. + Observer's OnNext action implementation. + Observer's OnError action implementation. + Observer's OnCompleted action implementation. + The observer object implemented using the given actions. + or or is null. + + + + Hides the identity of an observer. + + The type of the elements received by the source observer. + An observer whose identity to hide. + An observer that hides the identity of the specified observer. + is null. + + + + Checks access to the observer for grammar violations. This includes checking for multiple OnError or OnCompleted calls, as well as reentrancy in any of the observer methods. + If a violation is detected, an InvalidOperationException is thrown from the offending observer method call. + + The type of the elements received by the source observer. + The observer whose callback invocations should be checked for grammar violations. + An observer that checks callbacks invocations against the observer grammar and, if the checks pass, forwards those to the specified observer. + is null. + + + + Synchronizes access to the observer such that its callback methods cannot be called concurrently from multiple threads. This overload is useful when coordinating access to an observer. + Notice reentrant observer callbacks on the same thread are still possible. + + The type of the elements received by the source observer. + The observer whose callbacks should be synchronized. + An observer that delivers callbacks to the specified observer in a synchronized manner. + is null. + + Because a Monitor is used to perform the synchronization, there's no protection against reentrancy from the same thread. + Hence, overlapped observer callbacks are still possible, which is invalid behavior according to the observer grammar. In order to protect against this behavior as + well, use the overload, passing true for the second parameter. + + + + + Synchronizes access to the observer such that its callback methods cannot be called concurrently. This overload is useful when coordinating access to an observer. + The parameter configures the type of lock used for synchronization. + + The type of the elements received by the source observer. + The observer whose callbacks should be synchronized. + If set to true, reentrant observer callbacks will be queued up and get delivered to the observer in a sequential manner. + An observer that delivers callbacks to the specified observer in a synchronized manner. + is null. + + When the parameter is set to false, behavior is identical to the overload which uses + a Monitor for synchronization. When the parameter is set to true, an + is used to queue up callbacks to the specified observer if a reentrant call is made. + + + + + Synchronizes access to the observer such that its callback methods cannot be called concurrently by multiple threads, using the specified gate object for use by a Monitor-based lock. + This overload is useful when coordinating multiple observers that access shared state by synchronizing on a common gate object. + Notice reentrant observer callbacks on the same thread are still possible. + + The type of the elements received by the source observer. + The observer whose callbacks should be synchronized. + Gate object to synchronize each observer call on. + An observer that delivers callbacks to the specified observer in a synchronized manner. + or is null. + + Because a Monitor is used to perform the synchronization, there's no protection against reentrancy from the same thread. + Hence, overlapped observer callbacks are still possible, which is invalid behavior according to the observer grammar. In order to protect against this behavior as + well, use the overload. + + + + + Synchronizes access to the observer such that its callback methods cannot be called concurrently, using the specified asynchronous lock to protect against concurrent and reentrant access. + This overload is useful when coordinating multiple observers that access shared state by synchronizing on a common asynchronous lock. + + The type of the elements received by the source observer. + The observer whose callbacks should be synchronized. + Gate object to synchronize each observer call on. + An observer that delivers callbacks to the specified observer in a synchronized manner. + or is null. + + + + Schedules the invocation of observer methods on the given scheduler. + + The type of the elements received by the source observer. + The observer to schedule messages for. + Scheduler to schedule observer messages on. + Observer whose messages are scheduled on the given scheduler. + or is null. + + + + Schedules the invocation of observer methods on the given synchronization context. + + The type of the elements received by the source observer. + The observer to schedule messages for. + Synchronization context to schedule observer messages on. + Observer whose messages are scheduled on the given synchronization context. + or is null. + + + + Converts an observer to a progress object. + + The type of the progress objects received by the source observer. + The observer to convert. + Progress object whose Report messages correspond to the observer's OnNext messages. + is null. + + + + Converts an observer to a progress object, using the specified scheduler to invoke the progress reporting method. + + The type of the progress objects received by the source observer. + The observer to convert. + Scheduler to report progress on. + Progress object whose Report messages correspond to the observer's OnNext messages. + or is null. + + + + Converts a progress object to an observer. + + The type of the progress objects received by the progress reporter. + The progress object to convert. + Observer whose OnNext messages correspond to the progress object's Report messages. + is null. + + + + Abstract base class for implementations of the interface. + + This base class enforces the grammar of observers where and are terminal messages. + The type of the elements in the sequence. + + + + Creates a new observer in a non-stopped state. + + + + + Notifies the observer of a new element in the sequence. + + Next element in the sequence. + + + + Implement this method to react to the receival of a new element in the sequence. + + Next element in the sequence. + This method only gets called when the observer hasn't stopped yet. + + + + Notifies the observer that an exception has occurred. + + The error that has occurred. + is null. + + + + Implement this method to react to the occurrence of an exception. + + The error that has occurred. + This method only gets called when the observer hasn't stopped yet, and causes the observer to stop. + + + + Notifies the observer of the end of the sequence. + + + + + Implement this method to react to the end of the sequence. + + This method only gets called when the observer hasn't stopped yet, and causes the observer to stop. + + + + Disposes the observer, causing it to transition to the stopped state. + + + + + Core implementation of . + + true if the Dispose call was triggered by the method; false if it was triggered by the finalizer. + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Using the Scheduler.{0} property is no longer supported due to refactoring of the API surface and elimination of platform-specific dependencies. Please include System.Reactive.PlatformServices for your target platform and use the {0}Scheduler type instead. If you're building a Windows Store app, notice some schedulers are no longer supported. Consider using Scheduler.Default instead.. + + + + + Looks up a localized string similar to OnCompleted notification doesn't have a value.. + + + + + Looks up a localized string similar to Disposable has already been assigned.. + + + + + Looks up a localized string similar to Disposables collection can not contain null values.. + + + + + Looks up a localized string similar to Failed to start monitoring system clock changes.. + + + + + Looks up a localized string similar to Heap is empty.. + + + + + Looks up a localized string similar to Observer has already terminated.. + + + + + Looks up a localized string similar to Reentrancy has been detected.. + + + + + Looks up a localized string similar to This scheduler operation has already been awaited.. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to {0} cannot be called when the scheduler is already running. Try using Sleep instead.. + + + + + Looks up a localized string similar to Could not find event '{0}' on object of type '{1}'.. + + + + + Looks up a localized string similar to Could not find event '{0}' on type '{1}'.. + + + + + Looks up a localized string similar to Add method should take 1 parameter.. + + + + + Looks up a localized string similar to The second parameter of the event delegate must be assignable to '{0}'.. + + + + + Looks up a localized string similar to Event is missing the add method.. + + + + + Looks up a localized string similar to Event is missing the remove method.. + + + + + Looks up a localized string similar to The event delegate must have a void return type.. + + + + + Looks up a localized string similar to The event delegate must have exactly two parameters.. + + + + + Looks up a localized string similar to Remove method should take 1 parameter.. + + + + + Looks up a localized string similar to The first parameter of the event delegate must be assignable to '{0}'.. + + + + + Looks up a localized string similar to Remove method of a WinRT event should take an EventRegistrationToken.. + + + + + Looks up a localized string similar to Sequence contains more than one element.. + + + + + Looks up a localized string similar to Sequence contains more than one matching element.. + + + + + Looks up a localized string similar to Sequence contains no elements.. + + + + + Looks up a localized string similar to Sequence contains no matching element.. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to The WinRT thread pool doesn't support creating periodic timers with a period below 1 millisecond.. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Expected Qbservable.ToQueryable.. + + + + + Looks up a localized string similar to Invalid expression tree type.. + + + + + Looks up a localized string similar to There is no method '{0}' on type '{1}' that matches the specified arguments.. + + + + + Extension of the interface compatible with async method return types. + + + This class implements a "task-like" type that can be used as the return type of an asynchronous + method in C# 7.0 and beyond. For example: + + async ITaskObservable<int> RxAsync() + { + var res = await Observable.Return(21).Delay(TimeSpan.FromSeconds(1)); + return res * 2; + } + + + The type of the elements in the sequence. + + + + Gets an awaiter that can be used to await the eventual completion of the observable sequence. + + An awaiter that can be used to await the eventual completion of the observable sequence. + + + + Interface representing an awaiter for an . + + The type of the elements in the sequence. + + + + Gets a Boolean indicating whether the observable sequence has completed. + + + + + Gets the result produced by the observable sequence. + + The result produced by the observable sequence. + + + + The System.Reactive.Threading.Tasks namespace contains helpers for the conversion between tasks and observable sequences. + + + + + Provides a set of static methods for converting tasks to observable sequences. + + + + + Returns an observable sequence that signals when the task completes. + + Task to convert to an observable sequence. + An observable sequence that produces a unit value when the task completes, or propagates the exception produced by the task. + is null. + If the specified task object supports cancellation, consider using instead. + + + + Returns an observable sequence that signals when the task completes. + + Task to convert to an observable sequence. + Scheduler on which to notify observers about completion, cancellation or failure. + An observable sequence that produces a unit value when the task completes, or propagates the exception produced by the task. + is null or is null. + If the specified task object supports cancellation, consider using instead. + + + + Returns an observable sequence that propagates the result of the task. + + The type of the result produced by the task. + Task to convert to an observable sequence. + An observable sequence that produces the task's result, or propagates the exception produced by the task. + is null. + If the specified task object supports cancellation, consider using instead. + + + + Returns an observable sequence that propagates the result of the task. + + The type of the result produced by the task. + Task to convert to an observable sequence. + Scheduler on which to notify observers about completion, cancellation or failure. + An observable sequence that produces the task's result, or propagates the exception produced by the task. + is null or is null. + If the specified task object supports cancellation, consider using instead. + + + + Returns a task that will receive the last value or the exception produced by the observable sequence. + + The type of the elements in the source sequence. + Observable sequence to convert to a task. + A task that will receive the last element or the exception produced by the observable sequence. + is null. + + + + Returns a task that will receive the last value or the exception produced by the observable sequence. + + The type of the elements in the source sequence. + Observable sequence to convert to a task. + The scheduler used for overriding where the task completion signals will be issued. + A task that will receive the last element or the exception produced by the observable sequence. + or is null. + + + + Returns a task that will receive the last value or the exception produced by the observable sequence. + + The type of the elements in the source sequence. + Observable sequence to convert to a task. + The state to use as the underlying task's AsyncState. + A task that will receive the last element or the exception produced by the observable sequence. + is null. + + + + Returns a task that will receive the last value or the exception produced by the observable sequence. + + The type of the elements in the source sequence. + Observable sequence to convert to a task. + The state to use as the underlying task's AsyncState. + The scheduler used for overriding where the task completion signals will be issued. + A task that will receive the last element or the exception produced by the observable sequence. + or is null. + + + + Returns a task that will receive the last value or the exception produced by the observable sequence. + + The type of the elements in the source sequence. + Observable sequence to convert to a task. + Cancellation token that can be used to cancel the task, causing unsubscription from the observable sequence. + A task that will receive the last element or the exception produced by the observable sequence. + is null. + + + + Returns a task that will receive the last value or the exception produced by the observable sequence. + + The type of the elements in the source sequence. + Observable sequence to convert to a task. + Cancellation token that can be used to cancel the task, causing unsubscription from the observable sequence. + The scheduler used for overriding where the task completion signals will be issued. + A task that will receive the last element or the exception produced by the observable sequence. + or is null. + + + + Returns a task that will receive the last value or the exception produced by the observable sequence. + + The type of the elements in the source sequence. + Observable sequence to convert to a task. + Cancellation token that can be used to cancel the task, causing unsubscription from the observable sequence. + The state to use as the underlying task's . + A task that will receive the last element or the exception produced by the observable sequence. + is null. + + + + Returns a task that will receive the last value or the exception produced by the observable sequence. + + The type of the elements in the source sequence. + Observable sequence to convert to a task. + Cancellation token that can be used to cancel the task, causing unsubscription from the observable sequence. + The state to use as the underlying task's . + The scheduler used for overriding where the task completion signals will be issued. + A task that will receive the last element or the exception produced by the observable sequence. + or is null. + + + + Represents a value associated with time interval information. + The time interval can represent the time it took to produce the value, the interval relative to a previous value, the value's delivery time relative to a base, etc. + + The type of the value being annotated with time interval information. + + + + Constructs a time interval value. + + The value to be annotated with a time interval. + Time interval associated with the value. + + + + Gets the value. + + + + + Gets the interval. + + + + + Deconstructs the time interval value into a value and a time interval. + + The value. + Time interval associated with the value. + + + + Determines whether the current value has the same and as a specified value. + + An object to compare to the current value. + true if both values have the same and ; otherwise, false. + + + + Determines whether the two specified values have the same and . + + The first value to compare. + The second value to compare. + true if the first value has the same and as the second value; otherwise, false. + + + + Determines whether the two specified values don't have the same and . + + The first value to compare. + The second value to compare. + true if the first value has a different or as the second value; otherwise, false. + + + + Determines whether the specified System.Object is equal to the current . + + The System.Object to compare with the current . + true if the specified System.Object is equal to the current ; otherwise, false. + + + + Returns the hash code for the current value. + + A hash code for the current value. + + + + Returns a string representation of the current value. + + String representation of the current value. + + + + Represents value with a timestamp on it. + The timestamp typically represents the time the value was received, using an IScheduler's clock to obtain the current time. + + The type of the value being timestamped. + + + + Constructs a timestamped value. + + The value to be annotated with a timestamp. + Timestamp associated with the value. + + + + Gets the value. + + + + + Gets the timestamp. + + + + + Deconstructs the timestamped value into a value and a timestamp. + + The value. + Timestamp associated with the value. + + + + Determines whether the current value has the same and as a specified value. + + An object to compare to the current value. + true if both values have the same and ; otherwise, false. + + + + Determines whether the two specified values have the same and . + + The first value to compare. + The second value to compare. + true if the first value has the same and as the second value; otherwise, false. + + + + Determines whether the two specified values don't have the same and . + + The first value to compare. + The second value to compare. + true if the first value has a different or as the second value; otherwise, false. + + + + Determines whether the specified System.Object is equal to the current . + + The System.Object to compare with the current . + true if the specified System.Object is equal to the current ; otherwise, false. + + + + Returns the hash code for the current value. + + A hash code for the current value. + + + + Returns a string representation of the current value. + + String representation of the current value. + + + + A helper class with a factory method for creating instances. + + + + + Creates an instance of a . This is syntactic sugar that uses type inference + to avoid specifying a type in a constructor call, which is very useful when using anonymous types. + + The value to be annotated with a timestamp. + Timestamp associated with the value. + Creates a new timestamped value. + + + + Represents a type with a single value. This type is often used to denote the successful completion of a void-returning method (C#) or a Sub procedure (Visual Basic). + + + + + Determines whether the specified value is equal to the current . Because has a single value, this always returns true. + + An object to compare to the current value. + Because has a single value, this always returns true. + + + + Determines whether the specified System.Object is equal to the current . + + The System.Object to compare with the current . + true if the specified System.Object is a value; otherwise, false. + + + + Returns the hash code for the current value. + + A hash code for the current value. + + + + Returns a string representation of the current value. + + String representation of the current value. + + + + Determines whether the two specified values are equal. Because has a single value, this always returns true. + + The first value to compare. + The second value to compare. + Because has a single value, this always returns true. + + + + Determines whether the two specified values are not equal. Because has a single value, this always returns false. + + The first value to compare. + The second value to compare. + Because has a single value, this always returns false. + + + + Gets the single value. + + + + Specifies that null is allowed as an input even if the corresponding type disallows it. + + + Specifies that null is disallowed as an input even if the corresponding type allows it. + + + Specifies that an output may be null even if the corresponding type disallows it. + + + Specifies that an output will not be null even if the corresponding type allows it. Specifies that an input argument was not null when the call returns. + + + Specifies that when a method returns , the parameter may be null even if the corresponding type disallows it. + + + Initializes the attribute with the specified return value condition. + + The return value condition. If the method returns this value, the associated parameter may be null. + + + + Gets the return value condition. + + + Specifies that when a method returns , the parameter will not be null even if the corresponding type allows it. + + + Initializes the attribute with the specified return value condition. + + The return value condition. If the method returns this value, the associated parameter will not be null. + + + + Gets the return value condition. + + + Specifies that the output will be non-null if the named parameter is non-null. + + + Initializes the attribute with the associated parameter name. + + The associated parameter name. The output will be non-null if the argument to the parameter specified is non-null. + + + + Gets the associated parameter name. + + + Applied to a method that will never return under any circumstance. + + + Specifies that the method will not return if the associated Boolean parameter is passed the specified value. + + + Initializes the attribute with the specified parameter value. + + The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to + the associated parameter matches this value. + + + + Gets the condition parameter value. + + + Specifies that the method or property will ensure that the listed field and property members have not-null values. + + + Initializes the attribute with a field or property member. + + The field or property member that is promised to be not-null. + + + + Initializes the attribute with the list of field and property members. + + The list of field and property members that are promised to be not-null. + + + + Gets field or property member names. + + + Specifies that the method or property will ensure that the listed field and property members have not-null values when returning with the specified return value condition. + + + Initializes the attribute with the specified return value condition and a field or property member. + + The return value condition. If the method returns this value, the associated parameter will not be null. + + + The field or property member that is promised to be not-null. + + + + Initializes the attribute with the specified return value condition and list of field and property members. + + The return value condition. If the method returns this value, the associated parameter will not be null. + + + The list of field and property members that are promised to be not-null. + + + + Gets the return value condition. + + + Gets field or property member names. + + + + Provides a set of static methods for subscribing delegates to observables. + + + + + Subscribes to the observable sequence without specifying any handlers. + This method can be used to evaluate the observable sequence for its side-effects only. + + The type of the elements in the source sequence. + Observable sequence to subscribe to. + object used to unsubscribe from the observable sequence. + is null. + + + + Subscribes an element handler to an observable sequence. + + The type of the elements in the source sequence. + Observable sequence to subscribe to. + Action to invoke for each element in the observable sequence. + object used to unsubscribe from the observable sequence. + or is null. + + + + Subscribes an element handler and an exception handler to an observable sequence. + + The type of the elements in the source sequence. + Observable sequence to subscribe to. + Action to invoke for each element in the observable sequence. + Action to invoke upon exceptional termination of the observable sequence. + object used to unsubscribe from the observable sequence. + or or is null. + + + + Subscribes an element handler and a completion handler to an observable sequence. + + The type of the elements in the source sequence. + Observable sequence to subscribe to. + Action to invoke for each element in the observable sequence. + Action to invoke upon graceful termination of the observable sequence. + object used to unsubscribe from the observable sequence. + or or is null. + + + + Subscribes an element handler, an exception handler, and a completion handler to an observable sequence. + + The type of the elements in the source sequence. + Observable sequence to subscribe to. + Action to invoke for each element in the observable sequence. + Action to invoke upon exceptional termination of the observable sequence. + Action to invoke upon graceful termination of the observable sequence. + object used to unsubscribe from the observable sequence. + or or or is null. + + + + Subscribes an observer to an observable sequence, using a to support unsubscription. + + The type of the elements in the source sequence. + Observable sequence to subscribe to. + Observer to subscribe to the sequence. + CancellationToken that can be signaled to unsubscribe from the source sequence. + or is null. + + + + Subscribes to the observable sequence without specifying any handlers, using a to support unsubscription. + This method can be used to evaluate the observable sequence for its side-effects only. + + The type of the elements in the source sequence. + Observable sequence to subscribe to. + CancellationToken that can be signaled to unsubscribe from the source sequence. + is null. + + + + Subscribes an element handler to an observable sequence, using a to support unsubscription. + + The type of the elements in the source sequence. + Observable sequence to subscribe to. + Action to invoke for each element in the observable sequence. + CancellationToken that can be signaled to unsubscribe from the source sequence. + or is null. + + + + Subscribes an element handler and an exception handler to an observable sequence, using a to support unsubscription. + + The type of the elements in the source sequence. + Observable sequence to subscribe to. + Action to invoke for each element in the observable sequence. + Action to invoke upon exceptional termination of the observable sequence. + CancellationToken that can be signaled to unsubscribe from the source sequence. + or or is null. + + + + Subscribes an element handler and a completion handler to an observable sequence, using a to support unsubscription. + + The type of the elements in the source sequence. + Observable sequence to subscribe to. + Action to invoke for each element in the observable sequence. + Action to invoke upon graceful termination of the observable sequence. + CancellationToken that can be signaled to unsubscribe from the source sequence. + or or is null. + + + + Subscribes an element handler, an exception handler, and a completion handler to an observable sequence, using a to support unsubscription. + + The type of the elements in the source sequence. + Observable sequence to subscribe to. + Action to invoke for each element in the observable sequence. + Action to invoke upon exceptional termination of the observable sequence. + Action to invoke upon graceful termination of the observable sequence. + CancellationToken that can be signaled to unsubscribe from the source sequence. + or or or is null. + + + + Subscribes to the specified source, re-routing synchronous exceptions during invocation of the method to the observer's channel. + This method is typically used when writing query operators. + + The type of the elements in the source sequence. + Observable sequence to subscribe to. + Observer that will be passed to the observable sequence, and that will be used for exception propagation. + object used to unsubscribe from the observable sequence. + or is null. + + + + Represents a builder for asynchronous methods that return a task-like . + + The type of the elements in the sequence. + + + + The compiler-generated asynchronous state machine representing the execution flow of the asynchronous + method whose return type is a task-like . + + + + + The underlying observable sequence representing the result produced by the asynchronous method. + + + + + Creates an instance of the struct. + + A new instance of the struct. + + + + Begins running the builder with the associated state machine. + + The type of the state machine. + The state machine instance, passed by reference. + is null. + + + + Associates the builder with the specified state machine. + + The state machine instance to associate with the builder. + is null. + The state machine was previously set. + + + + Marks the observable as successfully completed. + + The result to use to complete the observable sequence. + The observable has already completed. + + + + Marks the observable as failed and binds the specified exception to the observable sequence. + + The exception to bind to the observable sequence. + is null. + The observable has already completed. + + + + Gets the observable sequence for this builder. + + + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. + + The type of the awaiter. + The type of the state machine. + The awaiter. + The state machine. + + + + Schedules the state machine to proceed to the next action when the specified awaiter completes. + + The type of the awaiter. + The type of the state machine. + The awaiter. + The state machine. + + + + Rethrows an exception that was thrown from an awaiter's OnCompleted methods. + + The exception to rethrow. + + + + Implementation of the IObservable<T> interface compatible with async method return types. + + + This class implements a "task-like" type that can be used as the return type of an asynchronous + method in C# 7.0 and beyond. For example: + + async Observable<int> RxAsync() + { + var res = await Observable.Return(21).Delay(TimeSpan.FromSeconds(1)); + return res * 2; + } + + + + + + The underlying observable sequence to subscribe to in case the asynchronous method did not + finish synchronously. + + + + + The result returned by the asynchronous method in case the method finished synchronously. + + + + + The exception thrown by the asynchronous method in case the method finished synchronously. + + + + + Creates a new for an asynchronous method that has not finished yet. + + + + + Creates a new for an asynchronous method that synchronously returned + the specified value. + + The result returned by the asynchronous method. + + + + Creates a new for an asynchronous method that synchronously threw + the specified . + + The exception thrown by the asynchronous method. + + + + Marks the observable as successfully completed. + + The result to use to complete the observable sequence. + The observable has already completed. + + + + Marks the observable as failed and binds the specified exception to the observable sequence. + + The exception to bind to the observable sequence. + is null. + The observable has already completed. + + + + Subscribes the given observer to the observable sequence. + + Observer that will receive notifications from the observable sequence. + Disposable object representing an observer's subscription to the observable sequence. + is null. + + + + Gets an awaiter that can be used to await the eventual completion of the observable sequence. + + An awaiter that can be used to await the eventual completion of the observable sequence. + + + + Gets a Boolean indicating whether the observable sequence has completed. + + + + + Gets the result produced by the observable sequence. + + The result produced by the observable sequence. + + + + Attaches the specified to the observable sequence. + + The continuation to attach. + + + diff --git a/Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0/System.Reactive.xml.meta b/Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0/System.Reactive.xml.meta new file mode 100644 index 0000000..4fc5062 --- /dev/null +++ b/Assets/Packages/System.Reactive.5.0.0/lib/netstandard2.0/System.Reactive.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ff60b58f126da5e40b5c49ccec92b310 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1.meta new file mode 100644 index 0000000..3fe73fc --- /dev/null +++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 680935aaf9589304e9e4cfc98933ddb7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/.signature.p7s b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..97878390b799439a60e4c0542aaeb0a3b825b1a3 GIT binary patch literal 18702 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 YF}Dz#fq&^*?+6h + + + System.Runtime.CompilerServices.Unsafe + 4.7.1 + System.Runtime.CompilerServices.Unsafe + Microsoft + microsoft,dotnetframework + false + MIT + https://licenses.nuget.org/MIT + Icon.png + https://github.com/dotnet/corefx + http://go.microsoft.com/fwlink/?LinkID=288859 + Provides the System.Runtime.CompilerServices.Unsafe class, which provides generic, low-level functionality for manipulating pointers. + +Commonly Used Types: +System.Runtime.CompilerServices.Unsafe + +When using NuGet 3.x this package requires at least version 3.4. + https://go.microsoft.com/fwlink/?LinkID=799421 + © Microsoft Corporation. All rights reserved. + true + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/System.Runtime.CompilerServices.Unsafe.nuspec.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/System.Runtime.CompilerServices.Unsafe.nuspec.meta new file mode 100644 index 0000000..a683ebe --- /dev/null +++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/System.Runtime.CompilerServices.Unsafe.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a926f9dae0dc294408668fef6b3af383 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/THIRD-PARTY-NOTICES.TXT b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/THIRD-PARTY-NOTICES.TXT new file mode 100644 index 0000000..77a243e --- /dev/null +++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/THIRD-PARTY-NOTICES.TXT @@ -0,0 +1,375 @@ +.NET Core uses third-party libraries or other resources that may be +distributed under licenses different than the .NET Core software. + +In the event that we accidentally failed to list a required notice, please +bring it to our attention. Post an issue or email us: + + dotnet@microsoft.com + +The attached notices are provided for information only. + +License notice for ASP.NET +------------------------------- + +Copyright (c) .NET Foundation. All rights reserved. +Licensed under the Apache License, Version 2.0. + +Available at +https://github.com/aspnet/AspNetCore/blob/master/LICENSE.txt + +License notice for Slicing-by-8 +------------------------------- + +http://sourceforge.net/projects/slicing-by-8/ + +Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + + +This software program is licensed subject to the BSD License, available at +http://www.opensource.org/licenses/bsd-license.html. + + +License notice for Unicode data +------------------------------- + +http://www.unicode.org/copyright.html#License + +Copyright © 1991-2017 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in http://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Unicode data files and any associated documentation +(the "Data Files") or Unicode software and any associated documentation +(the "Software") to deal in the Data Files or Software +without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, and/or sell copies of +the Data Files or Software, and to permit persons to whom the Data Files +or Software are furnished to do so, provided that either +(a) this copyright and permission notice appear with all copies +of the Data Files or Software, or +(b) this copyright and permission notice appear in associated +Documentation. + +THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in these Data Files or Software without prior +written authorization of the copyright holder. + +License notice for Zlib +----------------------- + +https://github.com/madler/zlib +http://zlib.net/zlib_license.html + +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.11, January 15th, 2017 + + Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +*/ + +License notice for Mono +------------------------------- + +http://www.mono-project.com/docs/about-mono/ + +Copyright (c) .NET Foundation Contributors + +MIT License + +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. + +License notice for International Organization for Standardization +----------------------------------------------------------------- + +Portions (C) International Organization for Standardization 1986: + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +License notice for Intel +------------------------ + +"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Xamarin and Novell +------------------------------------- + +Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) + +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. + +Copyright (c) 2011 Novell, Inc (http://www.novell.com) + +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. + +Third party notice for W3C +-------------------------- + +"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. +This work is being provided by the copyright holders under the following license. +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders." + +License notice for Bit Twiddling Hacks +-------------------------------------- + +Bit Twiddling Hacks + +By Sean Eron Anderson +seander@cs.stanford.edu + +Individually, the code snippets here are in the public domain (unless otherwise +noted) — feel free to use them however you please. The aggregate collection and +descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are +distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and +without even the implied warranty of merchantability or fitness for a particular +purpose. + +License notice for Brotli +-------------------------------------- + +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors. + +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. + +compress_fragment.c: +Copyright (c) 2011, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +decode_fuzzer.c: +Copyright (c) 2015 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." + +License notice for Json.NET +------------------------------- + +https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md + +The MIT License (MIT) + +Copyright (c) 2007 James Newton-King + +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. + +License notice for vectorized base64 encoding / decoding +-------------------------------------------------------- + +Copyright (c) 2005-2007, Nick Galbreath +Copyright (c) 2013-2017, Alfred Klomp +Copyright (c) 2015-2017, Wojciech Mula +Copyright (c) 2016-2017, Matthieu Darbois +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +- Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/THIRD-PARTY-NOTICES.TXT.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/THIRD-PARTY-NOTICES.TXT.meta new file mode 100644 index 0000000..3a8bd5b --- /dev/null +++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/THIRD-PARTY-NOTICES.TXT.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bf72bd84e5a6adc4eb4d72900ad17296 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib.meta new file mode 100644 index 0000000..5fd7d8a --- /dev/null +++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b0ddb0da227924f4fa50962502c608cb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0.meta new file mode 100644 index 0000000..b67ea08 --- /dev/null +++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f9ec601a48e73042ad89bb2f06eafd7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll new file mode 100644 index 0000000000000000000000000000000000000000..02d9849738f2db2d1f0af1bc04ad60f42c7cd32e GIT binary patch literal 16976 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 TwK_jK&{`4JZ~g?*7efC7!TgPv literal 0 HcmV?d00001 diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll.meta new file mode 100644 index 0000000..dad9c8f --- /dev/null +++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: f03ea8940728c8f42b26dc6dc1cd83bc +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 3 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml new file mode 100644 index 0000000..7aa4e5d --- /dev/null +++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml @@ -0,0 +1,244 @@ + + + + System.Runtime.CompilerServices.Unsafe + + + + Contains generic, low-level functionality for manipulating pointers. + + + Adds an element offset to the given reference. + The reference to add the offset to. + The offset to add. + The type of reference. + A new reference that reflects the addition of offset to pointer. + + + Adds an element offset to the given reference. + The reference to add the offset to. + The offset to add. + The type of reference. + A new reference that reflects the addition of offset to pointer. + + + Adds an element offset to the given void pointer. + The void pointer to add the offset to. + The offset to add. + The type of void pointer. + A new void pointer that reflects the addition of offset to the specified pointer. + + + Adds a byte offset to the given reference. + The reference to add the offset to. + The offset to add. + The type of reference. + A new reference that reflects the addition of byte offset to pointer. + + + Determines whether the specified references point to the same location. + The first reference to compare. + The second reference to compare. + The type of reference. + + if and point to the same location; otherwise, . + + + Casts the given object to the specified type. + The object to cast. + The type which the object will be cast to. + The original object, casted to the given type. + + + Reinterprets the given reference as a reference to a value of type . + The reference to reinterpret. + The type of reference to reinterpret. + The desired type of the reference. + A reference to a value of type . + + + Returns a pointer to the given by-ref parameter. + The object whose pointer is obtained. + The type of object. + A pointer to the given value. + + + Reinterprets the given read-only reference as a reference. + The read-only reference to reinterpret. + The type of reference. + A reference to a value of type . + + + Reinterprets the given location as a reference to a value of type . + The location of the value to reference. + The type of the interpreted location. + A reference to a value of type . + + + Determines the byte offset from origin to target from the given references. + The reference to origin. + The reference to target. + The type of reference. + Byte offset from origin to target i.e. - . + + + Copies a value of type to the given location. + The location to copy to. + A pointer to the value to copy. + The type of value to copy. + + + Copies a value of type to the given location. + The location to copy to. + A reference to the value to copy. + The type of value to copy. + + + Copies bytes from the source address to the destination address. + The destination address to copy to. + The source address to copy from. + The number of bytes to copy. + + + Copies bytes from the source address to the destination address. + The destination address to copy to. + The source address to copy from. + The number of bytes to copy. + + + Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses. + The destination address to copy to. + The source address to copy from. + The number of bytes to copy. + + + Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses. + The destination address to copy to. + The source address to copy from. + The number of bytes to copy. + + + Initializes a block of memory at the given location with a given initial value. + The address of the start of the memory block to initialize. + The value to initialize the block to. + The number of bytes to initialize. + + + Initializes a block of memory at the given location with a given initial value. + The address of the start of the memory block to initialize. + The value to initialize the block to. + The number of bytes to initialize. + + + Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address. + The address of the start of the memory block to initialize. + The value to initialize the block to. + The number of bytes to initialize. + + + Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address. + The address of the start of the memory block to initialize. + The value to initialize the block to. + The number of bytes to initialize. + + + Returns a value that indicates whether a specified reference is greater than another specified reference. + The first value to compare. + The second value to compare. + The type of the reference. + + if is greater than ; otherwise, . + + + Returns a value that indicates whether a specified reference is less than another specified reference. + The first value to compare. + The second value to compare. + The type of the reference. + + if is less than ; otherwise, . + + + Reads a value of type from the given location. + The location to read from. + The type to read. + An object of type read from the given location. + + + Reads a value of type from the given location without assuming architecture dependent alignment of the addresses. + The location to read from. + The type to read. + An object of type read from the given location. + + + Reads a value of type from the given location without assuming architecture dependent alignment of the addresses. + The location to read from. + The type to read. + An object of type read from the given location. + + + Returns the size of an object of the given type parameter. + The type of object whose size is retrieved. + The size of an object of type . + + + Subtracts an element offset from the given reference. + The reference to subtract the offset from. + The offset to subtract. + The type of reference. + A new reference that reflects the subtraction of offset from pointer. + + + Subtracts an element offset from the given reference. + The reference to subtract the offset from. + The offset to subtract. + The type of reference. + A new reference that reflects the subtraction of offset from pointer. + + + Subtracts an element offset from the given void pointer. + The void pointer to subtract the offset from. + The offset to subtract. + The type of the void pointer. + A new void pointer that reflects the subtraction of offset from the specified pointer. + + + Subtracts a byte offset from the given reference. + The reference to subtract the offset from. + The offset to subtract. + The type of reference. + A new reference that reflects the subtraction of byte offset from pointer. + + + Returns a to a boxed value. + The value to unbox. + The type to be unboxed. + A to the boxed value . + + is , and is a non-nullable value type. + + is not a boxed value type. +-or- + is not a boxed . + + cannot be found. + + + Writes a value of type to the given location. + The location to write to. + The value to write. + The type of value to write. + + + Writes a value of type to the given location without assuming architecture dependent alignment of the addresses. + The location to write to. + The value to write. + The type of value to write. + + + Writes a value of type to the given location without assuming architecture dependent alignment of the addresses. + The location to write to. + The value to write. + The type of value to write. + + + \ No newline at end of file diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml.meta new file mode 100644 index 0000000..ff50a57 --- /dev/null +++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cc4417923d97cad4492583d3ec7d6626 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/useSharedDesignerContext.txt b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/useSharedDesignerContext.txt new file mode 100644 index 0000000..e69de29 diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/useSharedDesignerContext.txt.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/useSharedDesignerContext.txt.meta new file mode 100644 index 0000000..169b726 --- /dev/null +++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/useSharedDesignerContext.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c5c4a5badb3b951489a5718b7f5caf36 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/version.txt b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/version.txt new file mode 100644 index 0000000..e9c0a7c --- /dev/null +++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/version.txt @@ -0,0 +1 @@ +8a3ffed558ddf943c1efa87d693227722d6af094 diff --git a/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/version.txt.meta b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/version.txt.meta new file mode 100644 index 0000000..5795098 --- /dev/null +++ b/Assets/Packages/System.Runtime.CompilerServices.Unsafe.4.7.1/version.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b5b8291324a8a4a4089a922232b4cdba +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Security.Cryptography.Cng.4.5.0.meta b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0.meta new file mode 100644 index 0000000..5b1ac3a --- /dev/null +++ b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 16548313c59e33e409656ea22e420493 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/.signature.p7s b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..24713fe6b7f077c71dde9fabeeed324af3f6481b GIT binary patch literal 22354 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 literal 0 HcmV?d00001 diff --git a/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/LICENSE.TXT b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/LICENSE.TXT new file mode 100644 index 0000000..984713a --- /dev/null +++ b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/LICENSE.TXT @@ -0,0 +1,23 @@ +The MIT License (MIT) + +Copyright (c) .NET Foundation and Contributors + +All rights reserved. + +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/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/LICENSE.TXT.meta b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/LICENSE.TXT.meta new file mode 100644 index 0000000..8b9c9e8 --- /dev/null +++ b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/LICENSE.TXT.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 10d8d4d8873eee34da0182ddced9b2c3 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/System.Security.Cryptography.Cng.nuspec b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/System.Security.Cryptography.Cng.nuspec new file mode 100644 index 0000000..669d62d --- /dev/null +++ b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/System.Security.Cryptography.Cng.nuspec @@ -0,0 +1,90 @@ + + + + System.Security.Cryptography.Cng + 4.5.0 + System.Security.Cryptography.Cng + Microsoft + microsoft,dotnetframework + false + https://github.com/dotnet/corefx/blob/master/LICENSE.TXT + https://dot.net/ + http://go.microsoft.com/fwlink/?LinkID=288859 + Provides cryptographic algorithm implementations and key management with Windows Cryptographic Next Generation API (CNG). + +Commonly Used Types: +System.Security.Cryptography.RSACng +System.Security.Cryptography.ECDsaCng +System.Security.Cryptography.CngKey + +30ab651fcb4354552bd4891619a0bdd81e0ebdbf +When using NuGet 3.x this package requires at least version 3.4. + https://go.microsoft.com/fwlink/?LinkID=799421 + © Microsoft Corporation. All rights reserved. + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/System.Security.Cryptography.Cng.nuspec.meta b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/System.Security.Cryptography.Cng.nuspec.meta new file mode 100644 index 0000000..be0977d --- /dev/null +++ b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/System.Security.Cryptography.Cng.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7702ba670d04e314baaeb3878a9962ff +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/THIRD-PARTY-NOTICES.TXT b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/THIRD-PARTY-NOTICES.TXT new file mode 100644 index 0000000..db542ca --- /dev/null +++ b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/THIRD-PARTY-NOTICES.TXT @@ -0,0 +1,309 @@ +.NET Core uses third-party libraries or other resources that may be +distributed under licenses different than the .NET Core software. + +In the event that we accidentally failed to list a required notice, please +bring it to our attention. Post an issue or email us: + + dotnet@microsoft.com + +The attached notices are provided for information only. + +License notice for Slicing-by-8 +------------------------------- + +http://sourceforge.net/projects/slicing-by-8/ + +Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + + +This software program is licensed subject to the BSD License, available at +http://www.opensource.org/licenses/bsd-license.html. + + +License notice for Unicode data +------------------------------- + +http://www.unicode.org/copyright.html#License + +Copyright © 1991-2017 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in http://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Unicode data files and any associated documentation +(the "Data Files") or Unicode software and any associated documentation +(the "Software") to deal in the Data Files or Software +without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, and/or sell copies of +the Data Files or Software, and to permit persons to whom the Data Files +or Software are furnished to do so, provided that either +(a) this copyright and permission notice appear with all copies +of the Data Files or Software, or +(b) this copyright and permission notice appear in associated +Documentation. + +THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in these Data Files or Software without prior +written authorization of the copyright holder. + +License notice for Zlib +----------------------- + +https://github.com/madler/zlib +http://zlib.net/zlib_license.html + +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.11, January 15th, 2017 + + Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +*/ + +License notice for Mono +------------------------------- + +http://www.mono-project.com/docs/about-mono/ + +Copyright (c) .NET Foundation Contributors + +MIT License + +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. + +License notice for International Organization for Standardization +----------------------------------------------------------------- + +Portions (C) International Organization for Standardization 1986: + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +License notice for Intel +------------------------ + +"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Xamarin and Novell +------------------------------------- + +Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) + +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. + +Copyright (c) 2011 Novell, Inc (http://www.novell.com) + +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. + +Third party notice for W3C +-------------------------- + +"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. +This work is being provided by the copyright holders under the following license. +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders." + +License notice for Bit Twiddling Hacks +-------------------------------------- + +Bit Twiddling Hacks + +By Sean Eron Anderson +seander@cs.stanford.edu + +Individually, the code snippets here are in the public domain (unless otherwise +noted) — feel free to use them however you please. The aggregate collection and +descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are +distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and +without even the implied warranty of merchantability or fitness for a particular +purpose. + +License notice for Brotli +-------------------------------------- + +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors. + +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. + +compress_fragment.c: +Copyright (c) 2011, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +decode_fuzzer.c: +Copyright (c) 2015 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." + diff --git a/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/THIRD-PARTY-NOTICES.TXT.meta b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/THIRD-PARTY-NOTICES.TXT.meta new file mode 100644 index 0000000..c74d807 --- /dev/null +++ b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/THIRD-PARTY-NOTICES.TXT.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ea0cab20ccf3bc34a9de209a6dd380e2 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/lib.meta b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/lib.meta new file mode 100644 index 0000000..4b3799a --- /dev/null +++ b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4c05ead92f8c9984a8b968fc8f56a572 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/lib/netstandard2.0.meta b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/lib/netstandard2.0.meta new file mode 100644 index 0000000..9418a8d --- /dev/null +++ b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7232ecb3aeb527c46871d71da5a367a7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/lib/netstandard2.0/System.Security.Cryptography.Cng.dll b/Assets/Packages/System.Security.Cryptography.Cng.4.5.0/lib/netstandard2.0/System.Security.Cryptography.Cng.dll new file mode 100644 index 0000000000000000000000000000000000000000..fa76801d4eb4c8fa1e4647e090ff4a5097e75fda GIT binary patch literal 49288 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%0DeknMZ5!)6@gUPRT!kqcpy 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 z zMxAR0h&>W>H8{9U1<$R3ffud%NV#9}9c^%apyxu;YlbkZ* z{sHq(26Fkj`F#s=WN3HrGuqFFeL7Ib??9fCLxh7;FP!&Bv>_?TwBSS7`mtG2kmo@K zdFGc2vfK~7R}^Gn5O@SY#=`SA6yzPM{lO+Dq0;adUj9`A{X5|FToZ2G?f zLQGuTPCJvSyDl}T)581t_sLMoVD))GCKYPId5FP{$&-<^efzv%Sp4u zkNX4nX}s{=`q(7socyMMOwzkI1?2w?f&6!|%%*@$`W4=$fV?RngTKiA4|Kma1>{Wu zc~d~%6p%Ls`7qiq(e+BAot*O-VG zf@mL8U_Ex=jKzsOI=dZ(ub*K)gy7WsaZExc+d6^=Dk?2rxjTE%v#1wk9tjyslPtXB z+1_Clb-XmA-X%CxhoZ$;pjfSm?j4~*-iPJ{bzN#-ZexaqNJ9#f_baFJ>8q0>)hvd4 zownX}_1+giZ5wJ)tvc$U^L2brJ^o|_)db*PdO9QQO({dVv+m;uI(gmwCk+;j&4 zvo*zZTt>AMCAUUtY@Cfn`Im!ogzd^#WA_kDiP^M3wa^+mgbRdiGU005&rT>N&{ z@q2bF?eyK~#HpPDCHc8K0gORC=?*9mk={rEU=^rt;1zdRIl&`12>`T=z6XTzJGiv- zSwguWPf@}@lu^&>x$5yQwY8Bsfw1x1X16N@gP|bS1R{$N@@t%Wz2`lTP^7POKA~2j zxF&i=9zrv=Z4B6MYOuxK^UfJ@%EjcG)wlXKK2d7+i1X5o9hFSQ&&eJ?XOTINu|*CL z;t4V$1I}h2flsHl)Hi=AQQMu@+sX6*wQFmc0kU30MPYbQ9q>*y7m`WE7s@4A9rgo0 z(p*(~{&ljk0*y2st^32w#$iMn_cqyX`#^FwjksbO={6c|QS|c~i#k~Sl(iCI2@fJ+ z(m1h~lzK#r8S*N(fAVfz@d=$gq)nlmD{Ckz=k8EaS%Ze^Hxc4ERH*{1NWVkraDuqv zUu8M6%yBHHTE8_B#LR4_R{s|IDW)btCJz_(a+I0yI0*lTJuZ0vxsV`sDs++hZNJ`z z&@{kU>snvVXR_nM8rVKEk^guS_u1cKh%fuGV3-(j5k6*lpAW@_JMXvuNgU{v+42@u z?1#0|$tmP{#-dy_|27%)=_SjX2=Vk%xsw^8e6p9`U4ZS7ZT^n1q*HyFq=+`ePn+5YQ9sMbg& ztS2bpqQ#%fzWUhsiM9PNSK48^M%-*~ik+N6K23hF4!Q)wJqk*2;FV|i$TVp1U2Q#M zuCvafE|U=9fDk?5Fjd6fQgskcr_1h_^m%z{0$kWXrcSLVT~b%qxQW>dIT zBxem}H~gEMiRktWIx*axD^S<;U<-(GNpdu>B&7PfUdlb!vw%D?R(?u|xR|l=F9HUEK z)V(3hPW@E=OBRHH4?R;b4sK}{a3eB5E5W<_3FN50u57#Z%_^g#r_X-45t%Ox7B*n< z1{9d%DgLA+=c5dWBiXN6lAqEjlGaLBh| zFtKT2_wdR9{w%cTMWWv*2F9fAVKT8 YF}Dz#fq&^*?+6h + + + System.Text.Encodings.Web + 4.7.2 + System.Text.Encodings.Web + Microsoft + microsoft,dotnetframework + false + MIT + https://licenses.nuget.org/MIT + Icon.png + https://github.com/dotnet/corefx + http://go.microsoft.com/fwlink/?LinkID=288859 + Provides types for encoding and escaping strings for use in JavaScript, HyperText Markup Language (HTML), and uniform resource locators (URL). + +Commonly Used Types: +System.Text.Encodings.Web.HtmlEncoder +System.Text.Encodings.Web.UrlEncoder +System.Text.Encodings.Web.JavaScriptEncoder + +When using NuGet 3.x this package requires at least version 3.4. + https://go.microsoft.com/fwlink/?LinkID=799421 + © Microsoft Corporation. All rights reserved. + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/System.Text.Encodings.Web.4.7.2/System.Text.Encodings.Web.nuspec.meta b/Assets/Packages/System.Text.Encodings.Web.4.7.2/System.Text.Encodings.Web.nuspec.meta new file mode 100644 index 0000000..ddb6119 --- /dev/null +++ b/Assets/Packages/System.Text.Encodings.Web.4.7.2/System.Text.Encodings.Web.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 38cb8f17f5aed014c83407de70071834 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Text.Encodings.Web.4.7.2/THIRD-PARTY-NOTICES.TXT b/Assets/Packages/System.Text.Encodings.Web.4.7.2/THIRD-PARTY-NOTICES.TXT new file mode 100644 index 0000000..77a243e --- /dev/null +++ b/Assets/Packages/System.Text.Encodings.Web.4.7.2/THIRD-PARTY-NOTICES.TXT @@ -0,0 +1,375 @@ +.NET Core uses third-party libraries or other resources that may be +distributed under licenses different than the .NET Core software. + +In the event that we accidentally failed to list a required notice, please +bring it to our attention. Post an issue or email us: + + dotnet@microsoft.com + +The attached notices are provided for information only. + +License notice for ASP.NET +------------------------------- + +Copyright (c) .NET Foundation. All rights reserved. +Licensed under the Apache License, Version 2.0. + +Available at +https://github.com/aspnet/AspNetCore/blob/master/LICENSE.txt + +License notice for Slicing-by-8 +------------------------------- + +http://sourceforge.net/projects/slicing-by-8/ + +Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + + +This software program is licensed subject to the BSD License, available at +http://www.opensource.org/licenses/bsd-license.html. + + +License notice for Unicode data +------------------------------- + +http://www.unicode.org/copyright.html#License + +Copyright © 1991-2017 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in http://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Unicode data files and any associated documentation +(the "Data Files") or Unicode software and any associated documentation +(the "Software") to deal in the Data Files or Software +without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, and/or sell copies of +the Data Files or Software, and to permit persons to whom the Data Files +or Software are furnished to do so, provided that either +(a) this copyright and permission notice appear with all copies +of the Data Files or Software, or +(b) this copyright and permission notice appear in associated +Documentation. + +THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in these Data Files or Software without prior +written authorization of the copyright holder. + +License notice for Zlib +----------------------- + +https://github.com/madler/zlib +http://zlib.net/zlib_license.html + +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.11, January 15th, 2017 + + Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +*/ + +License notice for Mono +------------------------------- + +http://www.mono-project.com/docs/about-mono/ + +Copyright (c) .NET Foundation Contributors + +MIT License + +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. + +License notice for International Organization for Standardization +----------------------------------------------------------------- + +Portions (C) International Organization for Standardization 1986: + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +License notice for Intel +------------------------ + +"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Xamarin and Novell +------------------------------------- + +Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) + +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. + +Copyright (c) 2011 Novell, Inc (http://www.novell.com) + +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. + +Third party notice for W3C +-------------------------- + +"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. +This work is being provided by the copyright holders under the following license. +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders." + +License notice for Bit Twiddling Hacks +-------------------------------------- + +Bit Twiddling Hacks + +By Sean Eron Anderson +seander@cs.stanford.edu + +Individually, the code snippets here are in the public domain (unless otherwise +noted) — feel free to use them however you please. The aggregate collection and +descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are +distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and +without even the implied warranty of merchantability or fitness for a particular +purpose. + +License notice for Brotli +-------------------------------------- + +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors. + +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. + +compress_fragment.c: +Copyright (c) 2011, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +decode_fuzzer.c: +Copyright (c) 2015 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." + +License notice for Json.NET +------------------------------- + +https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md + +The MIT License (MIT) + +Copyright (c) 2007 James Newton-King + +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. + +License notice for vectorized base64 encoding / decoding +-------------------------------------------------------- + +Copyright (c) 2005-2007, Nick Galbreath +Copyright (c) 2013-2017, Alfred Klomp +Copyright (c) 2015-2017, Wojciech Mula +Copyright (c) 2016-2017, Matthieu Darbois +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +- Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Assets/Packages/System.Text.Encodings.Web.4.7.2/THIRD-PARTY-NOTICES.TXT.meta b/Assets/Packages/System.Text.Encodings.Web.4.7.2/THIRD-PARTY-NOTICES.TXT.meta new file mode 100644 index 0000000..2595c08 --- /dev/null +++ b/Assets/Packages/System.Text.Encodings.Web.4.7.2/THIRD-PARTY-NOTICES.TXT.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e843bc397b673b749b87a82ea338d76c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib.meta b/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib.meta new file mode 100644 index 0000000..d5a3f08 --- /dev/null +++ b/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: adee4a34ac759f642b0a03f02f31751d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1.meta b/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1.meta new file mode 100644 index 0000000..5e47edc --- /dev/null +++ b/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 96959fea984b78d41b71d58be4983622 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1/System.Text.Encodings.Web.dll b/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1/System.Text.Encodings.Web.dll new file mode 100644 index 0000000000000000000000000000000000000000..41e59b281f19ddb1c136cff95b039d6b6117a715 GIT binary patch literal 56184 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 D5SlQe literal 0 HcmV?d00001 diff --git a/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1/System.Text.Encodings.Web.dll.meta b/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1/System.Text.Encodings.Web.dll.meta new file mode 100644 index 0000000..952aace --- /dev/null +++ b/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1/System.Text.Encodings.Web.dll.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: 7f9fb51f14767894ca28633fd520910a +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 3 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1/System.Text.Encodings.Web.xml b/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1/System.Text.Encodings.Web.xml new file mode 100644 index 0000000..c5904a1 --- /dev/null +++ b/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1/System.Text.Encodings.Web.xml @@ -0,0 +1,932 @@ + + + + System.Text.Encodings.Web + + + + Represents an HTML character encoding. + + + Initializes a new instance of the class. + + + Creates a new instance of the HtmlEncoder class with the specified settings. + Settings that control how the instance encodes, primarily which characters to encode. + A new instance of the class. + + is . + + + Creates a new instance of the HtmlEncoder class that specifies characters the encoder is allowed to not encode. + The set of characters that the encoder is allowed to not encode. + A new instance of the class. + + is . + + + Gets a built-in instance of the class. + A built-in instance of the class. + + + Represents a JavaScript character encoding. + + + Initializes a new instance of the class. + + + Creates a new instance of JavaScriptEncoder class with the specified settings. + Settings that control how the instance encodes, primarily which characters to encode. + A new instance of the class. + + is . + + + Creates a new instance of the JavaScriptEncoder class that specifies characters the encoder is allowed to not encode. + The set of characters that the encoder is allowed to not encode. + A new instance of the class. + + is . + + + Gets a built-in instance of the class. + A built-in instance of the class. + + + Gets a built-in JavaScript encoder instance that is less strict about what is encoded. + A JavaScript encoder instance. + + + The base class of web encoders. + + + Initializes a new instance of the class. + + + Encodes characters from an array and writes them to a object. + The stream to which to write the encoded text. + The array of characters to encode. + The array index of the first character to encode. + The number of characters in the array to encode. + + is . + The method failed. The encoder does not implement correctly. + + is . + + is out of range. + + is out of range. + + + Encodes the specified string to a object. + The stream to which to write the encoded text. + The string to encode. + + + Encodes a substring and writes it to a object. + The stream to which to write the encoded text. + The string whose substring is to be encoded. + The index where the substring starts. + The number of characters in the substring. + + is . + The method failed. The encoder does not implement correctly. + + is . + + is out of range. + + is out of range. + + + Encodes the supplied characters. + A source buffer containing the characters to encode. + The destination buffer to which the encoded form of will be written. + The number of characters consumed from the buffer. + The number of characters written to the buffer. + + to indicate there is no further source data that needs to be encoded; otherwise, . + An enumeration value that describes the result of the encoding operation. + + + Encodes the supplied string and returns the encoded text as a new string. + The string to encode. + The encoded string. + + is . + The method failed. The encoder does not implement correctly. + + + Encodes the supplied UTF-8 text. + A source buffer containing the UTF-8 text to encode. + The destination buffer to which the encoded form of will be written. + The number of bytes consumed from the buffer. + The number of bytes written to the buffer. + + to indicate there is no further source data that needs to be encoded; otherwise, . + A status code that describes the result of the encoding operation. + + + Finds the index of the first character to encode. + The text buffer to search. + The number of characters in . + The index of the first character to encode. + + + Finds the first element in a UTF-8 text input buffer that would be escaped by the current encoder instance. + The UTF-8 text input buffer to search. + The index of the first element in that would be escaped by the current encoder instance, or -1 if no data in requires escaping. + + + Gets the maximum number of characters that this encoder can generate for each input code point. + The maximum number of characters. + + + Encodes a Unicode scalar value and writes it to a buffer. + A Unicode scalar value. + A pointer to the buffer to which to write the encoded text. + The length of the destination in characters. + When the method returns, indicates the number of characters written to the . + + if is too small to fit the encoded text; otherwise, returns . + + + Determines if a given Unicode scalar value will be encoded. + A Unicode scalar value. + + if the value will be encoded by this encoder; otherwise, returns . + + + Represents a filter that allows only certain Unicode code points. + + + Instantiates an empty filter (allows no code points through by default). + + + Instantiates a filter by cloning the allowed list of another object. + The other object to be cloned. + + + Instantiates a filter where only the character ranges specified by are allowed by the filter. + The allowed character ranges. + + is . + + + Allows the character specified by through the filter. + The allowed character. + + + Allows all characters specified by through the filter. + The allowed characters. + + is . + + + Allows all code points specified by . + The allowed code points. + + is . + + + Allows all characters specified by through the filter. + The range of characters to be allowed. + + is . + + + Allows all characters specified by through the filter. + The ranges of characters to be allowed. + + is . + + + Resets this object by disallowing all characters. + + + Disallows the character through the filter. + The disallowed character. + + + Disallows all characters specified by through the filter. + The disallowed characters. + + is . + + + Disallows all characters specified by through the filter. + The range of characters to be disallowed. + + is . + + + Disallows all characters specified by through the filter. + The ranges of characters to be disallowed. + + is . + + + Gets an enumerator of all allowed code points. + The enumerator of allowed code points. + + + Represents a URL character encoding. + + + Initializes a new instance of the class. + + + Creates a new instance of UrlEncoder class with the specified settings. + Settings that control how the instance encodes, primarily which characters to encode. + A new instance of the class. + + is . + + + Creates a new instance of the UrlEncoder class that specifies characters the encoder is allowed to not encode. + The set of characters that the encoder is allowed to not encode. + A new instance of the class. + + is . + + + Gets a built-in instance of the class. + A built-in instance of the class. + + + Represents a contiguous range of Unicode code points. + + + Creates a new that includes a specified number of characters starting at a specified Unicode code point. + The first code point in the range. + The number of code points in the range. + + is less than zero or greater than 0xFFFF. +-or- + is less than zero. +-or- + plus is greater than 0xFFFF. + + + Creates a new instance from a span of characters. + The first character in the range. + The last character in the range. + A range that includes all characters between and . + + precedes . + + + Gets the first code point in the range represented by this instance. + The first code point in the range. + + + Gets the number of code points in the range represented by this instance. + The number of code points in the range. + + + Provides static properties that return predefined instances that correspond to blocks from the Unicode specification. + + + Gets a range that consists of the entire Basic Multilingual Plane (BMP), from U+0000 to U+FFFF). + A range that consists of the entire BMP. + + + Gets the Alphabetic Presentation Forms Unicode block (U+FB00-U+FB4F). + The Alphabetic Presentation Forms Unicode block (U+FB00-U+FB4F). + + + Gets the Arabic Unicode block (U+0600-U+06FF). + The Arabic Unicode block (U+0600-U+06FF). + + + Gets the Arabic Extended-A Unicode block (U+08A0-U+08FF). + The Arabic Extended-A Unicode block (U+08A0-U+08FF). + + + Gets the Arabic Presentation Forms-A Unicode block (U+FB50-U+FDFF). + The Arabic Presentation Forms-A Unicode block (U+FB50-U+FDFF). + + + Gets the Arabic Presentation Forms-B Unicode block (U+FE70-U+FEFF). + The Arabic Presentation Forms-B Unicode block (U+FE70-U+FEFF). + + + Gets the Arabic Supplement Unicode block (U+0750-U+077F). + The Arabic Supplement Unicode block (U+0750-U+077F). + + + Gets the Armenian Unicode block (U+0530-U+058F). + The Armenian Unicode block (U+0530-U+058F). + + + Gets the Arrows Unicode block (U+2190-U+21FF). + The Arrows Unicode block (U+2190-U+21FF). + + + Gets the Balinese Unicode block (U+1B00-U+1B7F). + The Balinese Unicode block (U+1B00-U+1B7F). + + + Gets the Bamum Unicode block (U+A6A0-U+A6FF). + The Bamum Unicode block (U+A6A0-U+A6FF). + + + Gets the Basic Latin Unicode block (U+0021-U+007F). + The Basic Latin Unicode block (U+0021-U+007F). + + + Gets the Batak Unicode block (U+1BC0-U+1BFF). + The Batak Unicode block (U+1BC0-U+1BFF). + + + Gets the Bengali Unicode block (U+0980-U+09FF). + The Bengali Unicode block (U+0980-U+09FF). + + + Gets the Block Elements Unicode block (U+2580-U+259F). + The Block Elements Unicode block (U+2580-U+259F). + + + Gets the Bopomofo Unicode block (U+3100-U+312F). + The Bopomofo Unicode block (U+3105-U+312F). + + + Gets the Bopomofo Extended Unicode block (U+31A0-U+31BF). + The Bopomofo Extended Unicode block (U+31A0-U+31BF). + + + Gets the Box Drawing Unicode block (U+2500-U+257F). + The Box Drawing Unicode block (U+2500-U+257F). + + + Gets the Braille Patterns Unicode block (U+2800-U+28FF). + The Braille Patterns Unicode block (U+2800-U+28FF). + + + Gets the Buginese Unicode block (U+1A00-U+1A1F). + The Buginese Unicode block (U+1A00-U+1A1F). + + + Gets the Buhid Unicode block (U+1740-U+175F). + The Buhid Unicode block (U+1740-U+175F). + + + Gets the Cham Unicode block (U+AA00-U+AA5F). + The Cham Unicode block (U+AA00-U+AA5F). + + + Gets the Cherokee Unicode block (U+13A0-U+13FF). + The Cherokee Unicode block (U+13A0-U+13FF). + + + Gets the Cherokee Supplement Unicode block (U+AB70-U+ABBF). + The Cherokee Supplement Unicode block (U+AB70-U+ABBF). + + + Gets the CJK Compatibility Unicode block (U+3300-U+33FF). + The CJK Compatibility Unicode block (U+3300-U+33FF). + + + Gets the CJK Compatibility Forms Unicode block (U+FE30-U+FE4F). + The CJK Compatibility Forms Unicode block (U+FE30-U+FE4F). + + + Gets the CJK Compatibility Ideographs Unicode block (U+F900-U+FAD9). + The CJK Compatibility Ideographs Unicode block (U+F900-U+FAD9). + + + Gets the CJK Radicals Supplement Unicode block (U+2E80-U+2EFF). + The CJK Radicals Supplement Unicode block (U+2E80-U+2EFF). + + + Gets the CJK Strokes Unicode block (U+31C0-U+31EF). + The CJK Strokes Unicode block (U+31C0-U+31EF). + + + Gets the CJK Symbols and Punctuation Unicode block (U+3000-U+303F). + The CJK Symbols and Punctuation Unicode block (U+3000-U+303F). + + + Gets the CJK Unified Ideographs Unicode block (U+4E00-U+9FCC). + The CJK Unified Ideographs Unicode block (U+4E00-U+9FCC). + + + Gets the CJK Unitied Ideographs Extension A Unicode block (U+3400-U+4DB5). + The CJK Unitied Ideographs Extension A Unicode block (U+3400-U+4DB5). + + + Gets the Combining Diacritical Marks Unicode block (U+0300-U+036F). + The Combining Diacritical Marks Unicode block (U+0300-U+036F). + + + Gets the Combining Diacritical Marks Extended Unicode block (U+1AB0-U+1AFF). + The Combining Diacritical Marks Extended Unicode block (U+1AB0-U+1AFF). + + + Gets the Combining Diacritical Marks for Symbols Unicode block (U+20D0-U+20FF). + The Combining Diacritical Marks for Symbols Unicode block (U+20D0-U+20FF). + + + Gets the Combining Diacritical Marks Supplement Unicode block (U+1DC0-U+1DFF). + The Combining Diacritical Marks Supplement Unicode block (U+1DC0-U+1DFF). + + + Gets the Combining Half Marks Unicode block (U+FE20-U+FE2F). + The Combining Half Marks Unicode block (U+FE20-U+FE2F). + + + Gets the Common Indic Number Forms Unicode block (U+A830-U+A83F). + The Common Indic Number Forms Unicode block (U+A830-U+A83F). + + + Gets the Control Pictures Unicode block (U+2400-U+243F). + The Control Pictures Unicode block (U+2400-U+243F). + + + Gets the Coptic Unicode block (U+2C80-U+2CFF). + The Coptic Unicode block (U+2C80-U+2CFF). + + + Gets the Currency Symbols Unicode block (U+20A0-U+20CF). + The Currency Symbols Unicode block (U+20A0-U+20CF). + + + Gets the Cyrillic Unicode block (U+0400-U+04FF). + The Cyrillic Unicode block (U+0400-U+04FF). + + + Gets the Cyrillic Extended-A Unicode block (U+2DE0-U+2DFF). + The Cyrillic Extended-A Unicode block (U+2DE0-U+2DFF). + + + Gets the Cyrillic Extended-B Unicode block (U+A640-U+A69F). + The Cyrillic Extended-B Unicode block (U+A640-U+A69F). + + + A corresponding to the 'Cyrillic Extended-C' Unicode block (U+1C80..U+1C8F). + + + Gets the Cyrillic Supplement Unicode block (U+0500-U+052F). + The Cyrillic Supplement Unicode block (U+0500-U+052F). + + + Gets the Devangari Unicode block (U+0900-U+097F). + The Devangari Unicode block (U+0900-U+097F). + + + Gets the Devanagari Extended Unicode block (U+A8E0-U+A8FF). + The Devanagari Extended Unicode block (U+A8E0-U+A8FF). + + + Gets the Dingbats Unicode block (U+2700-U+27BF). + The Dingbats Unicode block (U+2700-U+27BF). + + + Gets the Enclosed Alphanumerics Unicode block (U+2460-U+24FF). + The Enclosed Alphanumerics Unicode block (U+2460-U+24FF). + + + Gets the Enclosed CJK Letters and Months Unicode block (U+3200-U+32FF). + The Enclosed CJK Letters and Months Unicode block (U+3200-U+32FF). + + + Gets the Ethiopic Unicode block (U+1200-U+137C). + The Ethiopic Unicode block (U+1200-U+137C). + + + Gets the Ethipic Extended Unicode block (U+2D80-U+2DDF). + The Ethipic Extended Unicode block (U+2D80-U+2DDF). + + + Gets the Ethiopic Extended-A Unicode block (U+AB00-U+AB2F). + The Ethiopic Extended-A Unicode block (U+AB00-U+AB2F). + + + Gets the Ethiopic Supplement Unicode block (U+1380-U+1399). + The Ethiopic Supplement Unicode block (U+1380-U+1399). + + + Gets the General Punctuation Unicode block (U+2000-U+206F). + The General Punctuation Unicode block (U+2000-U+206F). + + + Gets the Geometric Shapes Unicode block (U+25A0-U+25FF). + The Geometric Shapes Unicode block (U+25A0-U+25FF). + + + Gets the Georgian Unicode block (U+10A0-U+10FF). + The Georgian Unicode block (U+10A0-U+10FF). + + + A corresponding to the 'Georgian Extended' Unicode block (U+1C90..U+1CBF). + + + Gets the Georgian Supplement Unicode block (U+2D00-U+2D2F). + The Georgian Supplement Unicode block (U+2D00-U+2D2F). + + + Gets the Glagolitic Unicode block (U+2C00-U+2C5F). + The Glagolitic Unicode block (U+2C00-U+2C5F). + + + Gets the Greek and Coptic Unicode block (U+0370-U+03FF). + The Greek and Coptic Unicode block (U+0370-U+03FF). + + + Gets the Greek Extended Unicode block (U+1F00-U+1FFF). + The Greek Extended Unicode block (U+1F00-U+1FFF). + + + Gets the Gujarti Unicode block (U+0A81-U+0AFF). + The Gujarti Unicode block (U+0A81-U+0AFF). + + + Gets the Gurmukhi Unicode block (U+0A01-U+0A7F). + The Gurmukhi Unicode block (U+0A01-U+0A7F). + + + Gets the Halfwidth and Fullwidth Forms Unicode block (U+FF00-U+FFEE). + The Halfwidth and Fullwidth Forms Unicode block (U+FF00-U+FFEE). + + + Gets the Hangul Compatibility Jamo Unicode block (U+3131-U+318F). + The Hangul Compatibility Jamo Unicode block (U+3131-U+318F). + + + Gets the Hangul Jamo Unicode block (U+1100-U+11FF). + The Hangul Jamo Unicode block (U+1100-U+11FF). + + + Gets the Hangul Jamo Extended-A Unicode block (U+A960-U+A9F). + The Hangul Jamo Extended-A Unicode block (U+A960-U+A97F). + + + Gets the Hangul Jamo Extended-B Unicode block (U+D7B0-U+D7FF). + The Hangul Jamo Extended-B Unicode block (U+D7B0-U+D7FF). + + + Gets the Hangul Syllables Unicode block (U+AC00-U+D7AF). + The Hangul Syllables Unicode block (U+AC00-U+D7AF). + + + Gets the Hanunoo Unicode block (U+1720-U+173F). + The Hanunoo Unicode block (U+1720-U+173F). + + + Gets the Hebrew Unicode block (U+0590-U+05FF). + The Hebrew Unicode block (U+0590-U+05FF). + + + Gets the Hiragana Unicode block (U+3040-U+309F). + The Hiragana Unicode block (U+3040-U+309F). + + + Gets the Ideographic Description Characters Unicode block (U+2FF0-U+2FFF). + The Ideographic Description Characters Unicode block (U+2FF0-U+2FFF). + + + Gets the IPA Extensions Unicode block (U+0250-U+02AF). + The IPA Extensions Unicode block (U+0250-U+02AF). + + + Gets the Javanese Unicode block (U+A980-U+A9DF). + The Javanese Unicode block (U+A980-U+A9DF). + + + Gets the Kanbun Unicode block (U+3190-U+319F). + The Kanbun Unicode block (U+3190-U+319F). + + + Gets the Kangxi Radicals Supplement Unicode block (U+2F00-U+2FDF). + The Kangxi Radicals Supplement Unicode block (U+2F00-U+2FDF). + + + Gets the Kannada Unicode block (U+0C81-U+0CFF). + The Kannada Unicode block (U+0C81-U+0CFF). + + + Gets the Katakana Unicode block (U+30A0-U+30FF). + The Katakana Unicode block (U+30A0-U+30FF). + + + Gets the Katakana Phonetic Extensions Unicode block (U+31F0-U+31FF). + The Katakana Phonetic Extensions Unicode block (U+31F0-U+31FF). + + + Gets the Kayah Li Unicode block (U+A900-U+A92F). + The Kayah Li Unicode block (U+A900-U+A92F). + + + Gets the Khmer Unicode block (U+1780-U+17FF). + The Khmer Unicode block (U+1780-U+17FF). + + + Gets the Khmer Symbols Unicode block (U+19E0-U+19FF). + The Khmer Symbols Unicode block (U+19E0-U+19FF). + + + Gets the Lao Unicode block (U+0E80-U+0EDF). + The Lao Unicode block (U+0E80-U+0EDF). + + + Gets the Latin-1 Supplement Unicode block (U+00A1-U+00FF). + The Latin-1 Supplement Unicode block (U+00A1-U+00FF). + + + Gets the Latin Extended-A Unicode block (U+0100-U+017F). + The Latin Extended-A Unicode block (U+0100-U+017F). + + + Gets the Latin Extended Additional Unicode block (U+1E00-U+1EFF). + The Latin Extended Additional Unicode block (U+1E00-U+1EFF). + + + Gets the Latin Extended-B Unicode block (U+0180-U+024F). + The Latin Extended-B Unicode block (U+0180-U+024F). + + + Gets the Latin Extended-C Unicode block (U+2C60-U+2C7F). + The Latin Extended-C Unicode block (U+2C60-U+2C7F). + + + Gets the Latin Extended-D Unicode block (U+A720-U+A7FF). + The Latin Extended-D Unicode block (U+A720-U+A7FF). + + + Gets the Latin Extended-E Unicode block (U+AB30-U+AB6F). + The Latin Extended-E Unicode block (U+AB30-U+AB6F). + + + Gets the Lepcha Unicode block (U+1C00-U+1C4F). + The Lepcha Unicode block (U+1C00-U+1C4F). + + + Gets the Letterlike Symbols Unicode block (U+2100-U+214F). + The Letterlike Symbols Unicode block (U+2100-U+214F). + + + Gets the Limbu Unicode block (U+1900-U+194F). + The Limbu Unicode block (U+1900-U+194F). + + + Gets the Lisu Unicode block (U+A4D0-U+A4FF). + The Lisu Unicode block (U+A4D0-U+A4FF). + + + Gets the Malayalam Unicode block (U+0D00-U+0D7F). + The Malayalam Unicode block (U+0D00-U+0D7F). + + + Gets the Mandaic Unicode block (U+0840-U+085F). + The Mandaic Unicode block (U+0840-U+085F). + + + Gets the Mathematical Operators Unicode block (U+2200-U+22FF). + The Mathematical Operators Unicode block (U+2200-U+22FF). + + + Gets the Meetei Mayek Unicode block (U+ABC0-U+ABFF). + The Meetei Mayek Unicode block (U+ABC0-U+ABFF). + + + Gets the Meetei Mayek Extensions Unicode block (U+AAE0-U+AAFF). + The Meetei Mayek Extensions Unicode block (U+AAE0-U+AAFF). + + + Gets the Miscellaneous Mathematical Symbols-A Unicode block (U+27C0-U+27EF). + The Miscellaneous Mathematical Symbols-A Unicode block (U+27C0-U+27EF). + + + Gets the Miscellaneous Mathematical Symbols-B Unicode block (U+2980-U+29FF). + The Miscellaneous Mathematical Symbols-B Unicode block (U+2980-U+29FF). + + + Gets the Miscellaneous Symbols Unicode block (U+2600-U+26FF). + The Miscellaneous Symbols Unicode block (U+2600-U+26FF). + + + Gets the Miscellaneous Symbols and Arrows Unicode block (U+2B00-U+2BFF). + The Miscellaneous Symbols and Arrows Unicode block (U+2B00-U+2BFF). + + + Gets the Miscellaneous Technical Unicode block (U+2300-U+23FF). + The Miscellaneous Technical Unicode block (U+2300-U+23FF). + + + Gets the Modifier Tone Letters Unicode block (U+A700-U+A71F). + The Modifier Tone Letters Unicode block (U+A700-U+A71F). + + + Gets the Mongolian Unicode block (U+1800-U+18AF). + The Mongolian Unicode block (U+1800-U+18AF). + + + Gets the Myanmar Unicode block (U+1000-U+109F). + The Myanmar Unicode block (U+1000-U+109F). + + + Gets the Myanmar Extended-A Unicode block (U+AA60-U+AA7F). + The Myanmar Extended-A Unicode block (U+AA60-U+AA7F). + + + Gets the Myanmar Extended-B Unicode block (U+A9E0-U+A9FF). + The Myanmar Extended-B Unicode block (U+A9E0-U+A9FF). + + + Gets the New Tai Lue Unicode block (U+1980-U+19DF). + The New Tai Lue Unicode block (U+1980-U+19DF). + + + Gets the NKo Unicode block (U+07C0-U+07FF). + The NKo Unicode block (U+07C0-U+07FF). + + + Gets an empty Unicode range. + A Unicode range with no elements. + + + Gets the Number Forms Unicode block (U+2150-U+218F). + The Number Forms Unicode block (U+2150-U+218F). + + + Gets the Ogham Unicode block (U+1680-U+169F). + The Ogham Unicode block (U+1680-U+169F). + + + Gets the Ol Chiki Unicode block (U+1C50-U+1C7F). + The Ol Chiki Unicode block (U+1C50-U+1C7F). + + + Gets the Optical Character Recognition Unicode block (U+2440-U+245F). + The Optical Character Recognition Unicode block (U+2440-U+245F). + + + Gets the Oriya Unicode block (U+0B00-U+0B7F). + The Oriya Unicode block (U+0B00-U+0B7F). + + + Gets the Phags-pa Unicode block (U+A840-U+A87F). + The Phags-pa Unicode block (U+A840-U+A87F). + + + Gets the Phonetic Extensions Unicode block (U+1D00-U+1D7F). + The Phonetic Extensions Unicode block (U+1D00-U+1D7F). + + + Gets the Phonetic Extensions Supplement Unicode block (U+1D80-U+1DBF). + The Phonetic Extensions Supplement Unicode block (U+1D80-U+1DBF). + + + Gets the Rejang Unicode block (U+A930-U+A95F). + The Rejang Unicode block (U+A930-U+A95F). + + + Gets the Runic Unicode block (U+16A0-U+16FF). + The Runic Unicode block (U+16A0-U+16FF). + + + Gets the Samaritan Unicode block (U+0800-U+083F). + The Samaritan Unicode block (U+0800-U+083F). + + + Gets the Saurashtra Unicode block (U+A880-U+A8DF). + The Saurashtra Unicode block (U+A880-U+A8DF). + + + Gets the Sinhala Unicode block (U+0D80-U+0DFF). + The Sinhala Unicode block (U+0D80-U+0DFF). + + + Gets the Small Form Variants Unicode block (U+FE50-U+FE6F). + The Small Form Variants Unicode block (U+FE50-U+FE6F). + + + Gets the Spacing Modifier Letters Unicode block (U+02B0-U+02FF). + The Spacing Modifier Letters Unicode block (U+02B0-U+02FF). + + + Gets the Specials Unicode block (U+FFF0-U+FFFF). + The Specials Unicode block (U+FFF0-U+FFFF). + + + Gets the Sundanese Unicode block (U+1B80-U+1BBF). + The Sundanese Unicode block (U+1B80-U+1BBF). + + + Gets the Sundanese Supplement Unicode block (U+1CC0-U+1CCF). + The Sundanese Supplement Unicode block (U+1CC0-U+1CCF). + + + Gets the Superscripts and Subscripts Unicode block (U+2070-U+209F). + The Superscripts and Subscripts Unicode block (U+2070-U+209F). + + + Gets the Supplemental Arrows-A Unicode block (U+27F0-U+27FF). + The Supplemental Arrows-A Unicode block (U+27F0-U+27FF). + + + Gets the Supplemental Arrows-B Unicode block (U+2900-U+297F). + The Supplemental Arrows-B Unicode block (U+2900-U+297F). + + + Gets the Supplemental Mathematical Operators Unicode block (U+2A00-U+2AFF). + The Supplemental Mathematical Operators Unicode block (U+2A00-U+2AFF). + + + Gets the Supplemental Punctuation Unicode block (U+2E00-U+2E7F). + The Supplemental Punctuation Unicode block (U+2E00-U+2E7F). + + + Gets the Syloti Nagri Unicode block (U+A800-U+A82F). + The Syloti Nagri Unicode block (U+A800-U+A82F). + + + Gets the Syriac Unicode block (U+0700-U+074F). + The Syriac Unicode block (U+0700-U+074F). + + + A corresponding to the 'Syriac Supplement' Unicode block (U+0860..U+086F). + + + Gets the Tagalog Unicode block (U+1700-U+171F). + The Tagalog Unicode block (U+1700-U+171F). + + + Gets the Tagbanwa Unicode block (U+1760-U+177F). + The Tagbanwa Unicode block (U+1760-U+177F). + + + Gets the Tai Le Unicode block (U+1950-U+197F). + The Tai Le Unicode block (U+1950-U+197F). + + + Gets the Tai Tham Unicode block (U+1A20-U+1AAF). + The Tai Tham Unicode block (U+1A20-U+1AAF). + + + Gets the Tai Viet Unicode block (U+AA80-U+AADF). + The Tai Viet Unicode block (U+AA80-U+AADF). + + + Gets the Tamil Unicode block (U+0B80-U+0BFF). + The Tamil Unicode block (U+0B82-U+0BFA). + + + Gets the Telugu Unicode block (U+0C00-U+0C7F). + The Telugu Unicode block (U+0C00-U+0C7F). + + + Gets the Thaana Unicode block (U+0780-U+07BF). + The Thaana Unicode block (U+0780-U+07BF). + + + Gets the Thai Unicode block (U+0E00-U+0E7F). + The Thai Unicode block (U+0E00-U+0E7F). + + + Gets the Tibetan Unicode block (U+0F00-U+0FFF). + The Tibetan Unicode block (U+0F00-U+0FFF). + + + Gets the Tifinagh Unicode block (U+2D30-U+2D7F). + The Tifinagh Unicode block (U+2D30-U+2D7F). + + + Gets the Unified Canadian Aboriginal Syllabics Unicode block (U+1400-U+167F). + The Unified Canadian Aboriginal Syllabics Unicode block (U+1400-U+167F). + + + Gets the Unified Canadian Aboriginal Syllabics Extended Unicode block (U+18B0-U+18FF). + The Unified Canadian Aboriginal Syllabics Extended Unicode block (U+18B0-U+18FF). + + + Gets the Vai Unicode block (U+A500-U+A63F). + The Vai Unicode block (U+A500-U+A63F). + + + Gets the Variation Selectors Unicode block (U+FE00-U+FE0F). + The Variation Selectors Unicode block (U+FE00-U+FE0F). + + + Gets the Vedic Extensions Unicode block (U+1CD0-U+1CFF). + The Vedic Extensions Unicode block (U+1CD0-U+1CFF). + + + Gets the Vertical Forms Unicode block (U+FE10-U+FE1F). + The Vertical Forms Unicode block (U+FE10-U+FE1F). + + + Gets the Yijing Hexagram Symbols Unicode block (U+4DC0-U+4DFF). + The Yijing Hexagram Symbols Unicode block (U+4DC0-U+4DFF). + + + Gets the Yi Radicals Unicode block (U+A490-U+A4CF). + The Yi Radicals Unicode block (U+A490-U+A4CF). + + + Gets the Yi Syllables Unicode block (U+A000-U+A48F). + The Yi Syllables Unicode block (U+A000-U+A48F). + + + \ No newline at end of file diff --git a/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1/System.Text.Encodings.Web.xml.meta b/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1/System.Text.Encodings.Web.xml.meta new file mode 100644 index 0000000..cdb2aa4 --- /dev/null +++ b/Assets/Packages/System.Text.Encodings.Web.4.7.2/lib/netstandard2.1/System.Text.Encodings.Web.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8c2c2336c5503a040bee83e77948937b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Text.Encodings.Web.4.7.2/useSharedDesignerContext.txt b/Assets/Packages/System.Text.Encodings.Web.4.7.2/useSharedDesignerContext.txt new file mode 100644 index 0000000..e69de29 diff --git a/Assets/Packages/System.Text.Encodings.Web.4.7.2/useSharedDesignerContext.txt.meta b/Assets/Packages/System.Text.Encodings.Web.4.7.2/useSharedDesignerContext.txt.meta new file mode 100644 index 0000000..5c6b8b4 --- /dev/null +++ b/Assets/Packages/System.Text.Encodings.Web.4.7.2/useSharedDesignerContext.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b84a10d10a53476438a54969471e9b19 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Text.Encodings.Web.4.7.2/version.txt b/Assets/Packages/System.Text.Encodings.Web.4.7.2/version.txt new file mode 100644 index 0000000..30bd54f --- /dev/null +++ b/Assets/Packages/System.Text.Encodings.Web.4.7.2/version.txt @@ -0,0 +1 @@ +9299d909ff6c03c664a3f9a3ef995a9fa2eeec3e diff --git a/Assets/Packages/System.Text.Encodings.Web.4.7.2/version.txt.meta b/Assets/Packages/System.Text.Encodings.Web.4.7.2/version.txt.meta new file mode 100644 index 0000000..de68978 --- /dev/null +++ b/Assets/Packages/System.Text.Encodings.Web.4.7.2/version.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 07b9fcb1a493cdf4ebb9cfd4b8016783 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Text.Json.4.7.2.meta b/Assets/Packages/System.Text.Json.4.7.2.meta new file mode 100644 index 0000000..d0e3d8d --- /dev/null +++ b/Assets/Packages/System.Text.Json.4.7.2.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 845e938d44fd4c54aba13ebe827eb6e8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Text.Json.4.7.2/.signature.p7s b/Assets/Packages/System.Text.Json.4.7.2/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..0c70dc011e3b58296e0a4c6df8ad0e917ab57bb1 GIT binary patch literal 18703 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 jNI0^d62~4L%V(d7j&4 zvo*zZTt>AMCAUUtY@Cfn`Im!ogzd^#WA_kDiP^M3wa^+mgbRdiGU005&rT>N&{ z@q2bF?eyK~#HpPDCHc8K0gORC=?*9mk={rEU=^rt;1zdRIl&`12>`T=z6XTzJGiv- zSwguWPf@}@lu^&>x$5yQwY8Bsfw1x1X16N@gP|bS1R{$N@@t%Wz2`lTP^7POKA~2j zxF&i=9zrv=Z4B6MYOuxK^UfJ@%EjcG)wlXKK2d7+i1X5o9hFSQ&&eJ?XOTINu|*CL z;t4V$1I}h2flsHl)Hi=AQQMu@+sX6*wQFmc0kU30MPYbQ9q>*y7m`WE7s@4A9rgo0 z(p*(~{&ljk0*y2st^32w#$iMn_cqyX`#^FwjksbO={6c|QS|c~i#k~Sl(iCI2@fJ+ z(m1h~lzK#r8S*N(fAVfz@d=$gq)nlmD{Ckz=k8EaS%Ze^Hxc4ERH*{1NWVkraDuqv zUu8M6%yBHHTE8_B#LR4_R{s|IDW)btCJz_(a+I0yI0*lTJuZ0vxsV`sDs++hZNJ`z z&@{kU>snvVXR_nM8rVKEk^guS_u1cKh%fuGV3-(j5k6*lpAW@_JMXvuNgU{v+42@u z?1#0|$tmP{#-dy_|27%)=_SjX2=Vk%xsw^8e6p9`U4ZS7ZT^n1q*HyFq=+`ePn+5YQ9sMbg& ztS2bpqQ#%fzWUhsiM9PNSK48^M%-*~ik+N6K23hF4!Q)wJqk*2;FV|i$TVp1U2Q#M zuCvafE|U=9fDk?5Fjd6fQgskcr_1h_^m%z{0$kWXrcSLVT~b%qxQW>dIT zBxem}H~gEMiRktWIx*axD^S<;U<-(GNpdu>B&7PfUdlb!vw%D?R(?u|xR|l=F9HUEK z)V(3hPW@E=OBRHH4?R;b4sK}{a3eB5E5W<_3FN50u57#Z%_^g#r_X-45t%Ox7B*n< z1{9d%DgLA+=c5dWBiXN6lAqEjlGaLBh| zFtKT2_wdR9{w%cTMWWv*2F9fAVKT8 YF}Dz#fq&^*?+6h + + + System.Text.Json + 4.7.2 + System.Text.Json + Microsoft + microsoft,dotnetframework + false + MIT + https://licenses.nuget.org/MIT + Icon.png + https://github.com/dotnet/corefx + http://go.microsoft.com/fwlink/?LinkID=288859 + Provides high-performance and low-allocating types that serialize objects to JavaScript Object Notation (JSON) text and deserialize JSON text to objects, with UTF-8 support built-in. Also provides types to read and write JSON text encoded as UTF-8, and to create an in-memory document object model (DOM), that is read-only, for random access of the JSON elements within a structured view of the data. + +Commonly Used Types: +System.Text.Json.JsonSerializer +System.Text.Json.JsonDocument +System.Text.Json.JsonElement +System.Text.Json.Utf8JsonWriter +System.Text.Json.Utf8JsonReader + +When using NuGet 3.x this package requires at least version 3.4. + https://go.microsoft.com/fwlink/?LinkID=799421 + © Microsoft Corporation. All rights reserved. + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/System.Text.Json.4.7.2/System.Text.Json.nuspec.meta b/Assets/Packages/System.Text.Json.4.7.2/System.Text.Json.nuspec.meta new file mode 100644 index 0000000..b280d00 --- /dev/null +++ b/Assets/Packages/System.Text.Json.4.7.2/System.Text.Json.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 654bea87fc2f4654ea7d614ba15c5f61 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Text.Json.4.7.2/THIRD-PARTY-NOTICES.TXT b/Assets/Packages/System.Text.Json.4.7.2/THIRD-PARTY-NOTICES.TXT new file mode 100644 index 0000000..77a243e --- /dev/null +++ b/Assets/Packages/System.Text.Json.4.7.2/THIRD-PARTY-NOTICES.TXT @@ -0,0 +1,375 @@ +.NET Core uses third-party libraries or other resources that may be +distributed under licenses different than the .NET Core software. + +In the event that we accidentally failed to list a required notice, please +bring it to our attention. Post an issue or email us: + + dotnet@microsoft.com + +The attached notices are provided for information only. + +License notice for ASP.NET +------------------------------- + +Copyright (c) .NET Foundation. All rights reserved. +Licensed under the Apache License, Version 2.0. + +Available at +https://github.com/aspnet/AspNetCore/blob/master/LICENSE.txt + +License notice for Slicing-by-8 +------------------------------- + +http://sourceforge.net/projects/slicing-by-8/ + +Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + + +This software program is licensed subject to the BSD License, available at +http://www.opensource.org/licenses/bsd-license.html. + + +License notice for Unicode data +------------------------------- + +http://www.unicode.org/copyright.html#License + +Copyright © 1991-2017 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in http://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Unicode data files and any associated documentation +(the "Data Files") or Unicode software and any associated documentation +(the "Software") to deal in the Data Files or Software +without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, and/or sell copies of +the Data Files or Software, and to permit persons to whom the Data Files +or Software are furnished to do so, provided that either +(a) this copyright and permission notice appear with all copies +of the Data Files or Software, or +(b) this copyright and permission notice appear in associated +Documentation. + +THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in these Data Files or Software without prior +written authorization of the copyright holder. + +License notice for Zlib +----------------------- + +https://github.com/madler/zlib +http://zlib.net/zlib_license.html + +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.11, January 15th, 2017 + + Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +*/ + +License notice for Mono +------------------------------- + +http://www.mono-project.com/docs/about-mono/ + +Copyright (c) .NET Foundation Contributors + +MIT License + +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. + +License notice for International Organization for Standardization +----------------------------------------------------------------- + +Portions (C) International Organization for Standardization 1986: + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +License notice for Intel +------------------------ + +"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Xamarin and Novell +------------------------------------- + +Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) + +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. + +Copyright (c) 2011 Novell, Inc (http://www.novell.com) + +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. + +Third party notice for W3C +-------------------------- + +"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. +This work is being provided by the copyright holders under the following license. +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders." + +License notice for Bit Twiddling Hacks +-------------------------------------- + +Bit Twiddling Hacks + +By Sean Eron Anderson +seander@cs.stanford.edu + +Individually, the code snippets here are in the public domain (unless otherwise +noted) — feel free to use them however you please. The aggregate collection and +descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are +distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and +without even the implied warranty of merchantability or fitness for a particular +purpose. + +License notice for Brotli +-------------------------------------- + +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors. + +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. + +compress_fragment.c: +Copyright (c) 2011, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +decode_fuzzer.c: +Copyright (c) 2015 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." + +License notice for Json.NET +------------------------------- + +https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md + +The MIT License (MIT) + +Copyright (c) 2007 James Newton-King + +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. + +License notice for vectorized base64 encoding / decoding +-------------------------------------------------------- + +Copyright (c) 2005-2007, Nick Galbreath +Copyright (c) 2013-2017, Alfred Klomp +Copyright (c) 2015-2017, Wojciech Mula +Copyright (c) 2016-2017, Matthieu Darbois +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +- Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Assets/Packages/System.Text.Json.4.7.2/THIRD-PARTY-NOTICES.TXT.meta b/Assets/Packages/System.Text.Json.4.7.2/THIRD-PARTY-NOTICES.TXT.meta new file mode 100644 index 0000000..f6605bf --- /dev/null +++ b/Assets/Packages/System.Text.Json.4.7.2/THIRD-PARTY-NOTICES.TXT.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1fb475931ec627c45bba707bf6c06ad2 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Text.Json.4.7.2/lib.meta b/Assets/Packages/System.Text.Json.4.7.2/lib.meta new file mode 100644 index 0000000..575d1f9 --- /dev/null +++ b/Assets/Packages/System.Text.Json.4.7.2/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 67d8c0fb0c6a005489968d0348b9d438 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Text.Json.4.7.2/lib/netstandard2.0.meta b/Assets/Packages/System.Text.Json.4.7.2/lib/netstandard2.0.meta new file mode 100644 index 0000000..e5175ca --- /dev/null +++ b/Assets/Packages/System.Text.Json.4.7.2/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bd51b41a4a952444cb8b881d50fc4b03 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Text.Json.4.7.2/lib/netstandard2.0/System.Text.Json.dll b/Assets/Packages/System.Text.Json.4.7.2/lib/netstandard2.0/System.Text.Json.dll new file mode 100644 index 0000000000000000000000000000000000000000..fe2154a3bf3a7658f106424bf00f672620b14e67 GIT binary patch literal 293240 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Ȗ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≤FdeO3=4~-se&ekj|z*XnS%1eCxpe)JVs??V)!dz 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

    O zBl@G6-u7f_FqBaU%u+Cu3b-1Woj`^qz4Z6?Vw^LvFt@2A5zBOs3`M(QS4A(ZuMsO! zU@ztal0pdYfjG%T6DqXR(cKF5I!ui$vS&3358M&T#n+61uNwnj&v>2}HO!oPqIV?v zlGdcCQT#kSgc(vJP+v{fGO{t+2NcFQ8x@c&EVI2dI>KDJJ`_t?{Eu`_Jc1pAgTp+f z>^aD?3+&~HY>RQ$q11>Y(nf+5MTCb_DX^LgZSj{2o86rD5b^T}vdM0h9pgyjrlWd- zJ8Q&Hji_k}HZ`>d>T2q0S{oaJO;~dRtqnDGjde}+)m07kRkby34NbMRB3R#A+Y)SS z4z>mwYujssZ7sD8b?xmffx6oEx|(2BOLKi&V{KEdSkVtQZj1JXhU1y8*dT_(>dZ7r zIgpIan@CPQ5{(esaUcYtL7W^_7~)i{3>-aFD;ir{8iMUD%}p(V`sT)(KyyodRdZEa zYfZ4ey0JZ2UDsA!)7ny1$CIlylt?5qZP9Qt675J}qQ)XEp>(vNPGIIpv>itGwTxt< z>Go7|P+?tDkftS42GUZts30}op2IR{xRQWoat+7Ne-@w zCi*i2)PCUPqPZ%Xh^AuU?qEDhl1ocIEEUw>W0KhnCdsIBdV=uON@lFtRhKjIAf5*y z{c|JM*~u{QnN(0AqprRtAMkLcxZ=phK>qWXZ5*kT&C)a{@pthl2u8G~rV8UJ) zfgPJ=kRn^H0!oT7>ZW?pJ&;Q738eb5WF|7fz2WE(EnK~d1A4mKs~aSZ!gNB5f#^&o zY+91?E_#eu~Qfotd zsSZxkJY(M^pkGAVW2tnebs&_&8WBy=Od<~Hf%p(o#*swhAS&4%-J7w(lCnF=k;E}w zu|$773jGH%e2`{OTQnXUBmvAMPX&gi2C;S zU_JIkO|@0+RZRh`N)5GjO@Zd>hN?h&puM#z&=#nx!xdial>!ZIH7#}3&9&`~t?g|s z4UH|0Ep4?;fu^RamS9z|y|KQbu1!=2Y8z_sMMrvFXr1U9Nn^=e-qA@*g<_eGu1@;<7Tr?i>+Kc2P*~H^2sTwAu`U{o zti{%h15hz7zut0jCLGJD*hhW75gLCCv#BlCAIm_PwkL-Z5lF+%J|=;R5{sZmc})yt z>zhZkJ z?ENh?9IPL4Xs$AYwrJXou*HW=)t$svF&Y|_q$7d`#Cv;V zP>qqjh3rhwgqKsC1gX6S=z1^Qz7F-Z$gFppoJn|0)YYY(V)-fj}ryFy+f(!?rsuPs7)HH8&E8_tRU5kg_wm=&2=Lq zp+tW)l^jk}9lE06#}KqjH_c9xg;q9HatsM91lPq5g>{9fy*)5_#QGDcUQZ$t?L!$6 zF${6klZd9np&^7+!gb)Y?&Pj$q6cP!c%Toh4#d$o7Cq@eD%!OxHbnH?-;i+d_R5u> zG8u@5cVPx7mO|7(Xm^yhJ?WNcG$C~*nYJUnI+Tj+K?Z?vI2tF}g$$y5hcHLrVTECA z@vTQXnra<^bcQsO$(&q}9mgB-oq3Ljavhm4xrL#e+!$J^LoacR!J7V4N;Ld0&PlQb2CSF5J zMkww^${gG{HP&tIrEO;-kO4>T940>9O-rF1K(!*A7IAQJC^JH$y#qR<%;PjCyi{JWQU>?JSdzvL zL63{h$SDF|pIYkFK`8`R4WltG)txbvqufw(P$psT3OD~xd3P_@@5)0ie0f&?u&xw(+k&c#9%Q#R22 z@mNNr)pCqzvR>zpg608X%jWI;1Zr=cKQem*l%LAdf$g1Ae!?uPd48f+^nSb*){ES3 z;!({-cMT+m4VN*s}!t7L2#t8=3Q&>#{Kstg%9$l3}%%q7!2Ohmb{#I;f~ z=EligR4O;ZV$a+td&fKu5hg5af>5W%p|Z_7;}9XMRq~i5r{fU?nthr zIpJL)j9QrXH|c>SmIX~rm2Ab{GSeCg4@B+wKC;HxK@1}AH=&b=)v^A8F6^a}{TK>D ztV!;1g|+q~NbToc9xuRI{S3d7EN1hHw;6ZhdlNZYeT!D%0{3tWWlnISmb=!NZV5tZAV$U z^*BWK49g|j812XL9`P&n<>s~;YAo%=HxFQA*EK{$X;>-41JX}wsPwhQVeW51U7`Y3 z^@Q|wL3&2zb{*^+!}gULM=0)Y$N5E8OdEP*cNE4j*gE*|J1agrs88zbeONYy%^+DZ zs;DvJEk4Xc5s2*O=3t=L#}WzBp0P8HLc>HGfwTi_Lz(aZrU%sFbPQx#S?59Kscm7> z7&0giOZ8J;%Vf4OnwCkh_DD~9JVd@c*9eg5lg!uS zShls@QK`+#sbMkLbfD?(2BW2yOS6j-JLxoRfDrPSb<*2As5~&jv81t2cx}FMhz~p3 z9(rdq+N4j0I)@>lIZvxg^p2Q#Snh^960%f~43MB3%XDE$Q>@$F$>f?)3bZr;c_Vm7 ztLtHx&K%@Q?Z$92S}5%#yl}gc{=Kw9=l5+ATgtj3wcT3mgJ;lPtwg7#UwEVD-$``B+WE``#h zMY+*@VNc5(G|C;zd%Nsd=Ut`jIIB48^4pjcG^w#fX2-+op)SH@$5?sOt++8Gc{vy} zR#wYqyD1RZ*jZ?7;N_x@MbSc9 z&F2BkgVt9jP zg&M4I9H1lJLE8u8Q;I`av&mx4e#j1Xdv_@hDf(Kg;+UvBsc_*~A;I#FuGU9%W5ruX zLoNbkk5#5ME=Njk7ZvGgP-9#;I(SVD!V>Gka)n$N>WS=Q36{t?$e3l~<9ayS)-s~B z4Oh;P|E}{?1I#`KCKW1=#5FVg- zNLg1n?TlQP1O<#0Iv;r~D?3=`ELq%%QRk%!1+!IjZ)YE0zM|SgzvkH@-YfOnIWo|$|!`s8^KMaiO$`{9_n89AO|SBVfM3*ulx?98plZYNh&^~mH^xugeljF7-NU*Fs*G)CFT0TgD_?UZ-Y zgf*G2J91K4I(uVeUz12aLt-z!@JWrZkK3cx5DSrQOyCIW!n_fYtjoAoHV#hEYnGMM zSaC6ZZPR^Z%>$HWim~#_hfle`17ljfR&pRi(m=~RZGVKkQASED%7MZdtDEF>Z`W~Q zkb|`DvWLlR3M-O@hmE&`bTyR(IHr_5%H-D4CY`Ubw_Or%+k+`iiS<`dKc$FiEOAuOb}6(LafAePvHBix?JE zL`GOzi0Ia5D(Z@()En5^>5Re5$rl6Jk8<49lFmvj&u8qj8?KbH=2=9%84p8&vM?-S zapAEAp9Q4J0L6NNXbla~$jShOp?#BfBg7n^X^_ewQm&A?P$^T9s3y*X@mZ2O{5){- zBC3pBaZz<|Z<^^W+fN6K-STdrAhv0!lh$waFON1l(l(4sj4}!8(N<*i#RIQP*4GX$ zQEv%fNlsN8FJ9^Zl6J#z5`EBZnLXH`Vx3fzZem9T(&^~n&iDxC3STg`V}iIm7>Pt9 zHbz_RSxrGVJED4MZHV>7XsGCTz)ocOddRA8g&^PgqpvlwT@IuicFM#i%wYvPN>{!+ zmT{(_Ue)rGHVMuIxVX$it5i-qssruz7Z>68@_Lgh0#AGHthm(MsN%|s=bsy zcG@#4-cCMt(Kb!z&UBK#U$HT(?48r*SZ1In5yL8IM}t8ld_gP}w~O3~G77|Fp|l;_O&>}s zjfMEw5!D_K^*e%cX0i=>V>BMx%RWcEE(fzBf^%}a2#l8<&{VC-p%ENK4mhG(*K|=C zs9(Z?)q_TB5I#M(bHa*_%l-5Tu#M~B&veM}X5;JW=anjjjq_s07k@Cd|~gA>o&4N zG_T%TvRM(?SAJwZS@(VDV3@ND|SiYOH%HmCnUb z4!o149B5vgXqGq+q|^G04_}sGIqyy?fhdcnW;!Chg_uRGSl$$laU zX?@>l5fj$F<|NV50?QIYtMJ5OtiiK~?%%Lh3tbOa?VzwTu{5KtqdQ21>ach8mSWFz z>a>urW>LSua%B_X1_u;ZJ4{`nTSS$mO$RQz(A{+|h4v}q#amxiQB%m8E5a^}Ej6`bgiwUh<8eh4!N zrvOfGE!|i-*LmDr)Q*oQbsjJ?b6(V=9qFFLu0(Q=jd3Z@YJ}w1sLm>@wm2f#B0fCm zz)=3Gg$^u@Q!chQBEPbC5aOy!G`dUfX|R79R7GyYw9Qi!UPP^CW!(>F3r9ANs;3(p z)icXNFoVh@jtS_<$ca@|qd~(xA#%vdO=k!&qdM<|h#_SW!Tk`iK9g#T_4U!U15#7; z-5-bvY_%YIxeByOrqwNVF5QKoPk4D-MdUCGViC21#6EkWEs)mM&TlN>iW?-1+IHyz zl-y$>%ekOivT@W^v=_|A(^%%i_fiY8iKTwPV%I9HH!S6_g&3pKJP)XL*ksc247$uh z(buVVC}-g#`>C2na^aH()u_}ZY?NYkYx`;oX)XH{Z7)n~a%`bl*y%Cwd@sz#Kz7MX zAqoY_PUk)g!St9VL)3)}L80d%F-AI=y&VM8Ih=pA**u{ztsZ zUx^eI>KfjeR(%)Si^YR#MZHQcZgKIYytT13zM%*Y!1yu<dDI8Qd`TY^2NS$vxCZ9Hwqzk8TnNhA0hY zLTqq&P^#wi&_P3;{Jz8;p-;8k5wdn;;pJtQd@1DhlYB94WDmeen~F>KCgd@gro{q@UeQ!+5!F$$!&F^0 zh15lybhz_ED(=_>s?lQ;M5%|tH|~Pfp(8%O91O)(6rW!xKaBw`P@O4-;OpU%t$2$? z3mz|R76mOOR-h}I$y=c6FxgN=f$Ntk`qEtmGqx9_%uA(;(R@eK4x1>2jq}4Sf_2w4 zF)O}B7=fXIT{RhJCIcNPLiEAj=f zR(zMT6X)KrDJu`%D2MS{N_@2vvh`Ly$wi$?rdUp;$gEGsJ5yE^7?*TLj0E=KNgGeA zE|4gamRjlKew5xl*3mnCMn6PfMi4DM(8r$Mo!ZCYjrjJ3@o9#x6?I*bzZ^;PC+Xau z9gdg(=%O|FSiJ+t(Xi-uL2;vHmN^X@gk7RHDL<52i$~O;Baw2zVg)3SJFy7)5i~ zy=ZA9)zmfB_4NXkh~m}h2-OQ?3yUvW0zn;3p`%nT}Rp&-C(=s9RtX-J%2-nud99p-u(a579eI6pes&#d7 z9)-@Xj?03Sr@FcE>ST$Z5#g@gJBXp-E5WRsVxxkGKz7&GfXTUYVJ{!#eq|4YIPraV z5=Je$Ol5sdCBGIU5x{g9^FcL?oC~excrgomX_x|I{cI~ByRn-`$vPzqO|#cJ1-2}S z9qG=*_|rvmM~k%KxC}b((liCQTzi$4L~9m4PaX&*L|l7_^Y9@}LeT2Y9>VZ+=MYJA zJ4A7o@=B=)LA-*G)tQ{OI@JF%OH!)FmH;Hr_#1@M)7<~aupU;y2CGHpkz{6 zKw5}sbgM^(2BHZeulQ@(+L?eogSX&ZXWgBh{O%CHd?h0>&G1|YUA|RU zBIrOe3)7Pc%Vk|9k;{p-P7njoMiX`uwZup|S{zuT$e&DP$eh5ngKA5vZk+UYylIJr zmdtf|usdlRs`_8*1#;qP6ir?XjTU5GU{NkW8-W;Mt#i^a#5hv$96=i9u>~`yfT2OO z;ltg8xFiYC3!cZR0zOW`2`F}CbeIH-T@o=)^+}>Adp2rQJQllD#tQXn{ekOE%LTZR zETK$_bXh3MirAgrHR()|v~nluu)e+EPr|T@b57tb>lQ64fX87Zp0ZQd2ci8tPGwkj zRKk98&1*~f7VOHlOt)kn$xI;5F|2pBSf|JCN zn7ZP0=;+lfGBM%>Tm96EBbW8bA=aIE-aGL6n@sDLtRs%)oFnYC!aL9yUs{vMCafP{ z!K+r57rh1w>|oJl=m^DD@-hc>S?rXuqG)P3BB=fP@d``3un@@6^7GX!rIy=BrI}j@ zq(D!k9LW+8msYe|spTVCHskW^H@aUfcBYp~F>La|Fn#ckQ!M^C2#;UI`oPoLj*z?UJQ2DcG=erc3L0~rdL6X| zU&5;A9_6=*%tYNuoUQOlN17X;Nn~Dblxifc4mf4XrOb}N_nuBVB$s-xofK<@9muO9 z!c>y|SS59KE|OE{qQUv#?)JTUsME`{6)<^pNG)}(w^)Q(mzS0Xj?P;_tNt)bV?TC3WbyB#E)sOFL z>5vT9!`L1#^{(zDR@9*pC3n%?WUj(-ii}n4s)*poxlc=h803$x*^Bvs-Wk6C@c;M{4F>NRrjrA;N$4#Y@@nBCZ4SUq<$SEvJ{LMI&;ADF!#pTFj9o9AQ zPM|9q3U)L!v=viAP7LCm*PmHrZg%fR7^7@^>cqAS<`|H{qDjtaTOeq^9IfP^r{`tjsYX9op&9&`W8|=ACFtbjaFZAa=(f zz3CiDdIIzUea_SL(kvxci0o(UX}1a~q8_ow%aNI0JUqxR+UxIk`BtZOM$9iK(0eN= zwTOOOoN~4qUAw;) z7)tFzL@!o)hd~j8kNJc3P{=08s~YwlMiu74rP)GO88U%5@v`4}P@HJzEe$7Lk~=ZV zBBW4i!m1E2Do$d_VhUq3lmj8BqeAfLkYy>Y5a?d)1o=jaTy0pl)6}GLC_j#n>3tc+ zR&udJkoXw=orafqgf%(6jAHUa^G6KrUioH;b$mo3EBn)H5Mn6#*-4d~lv~^Yweux| zs=kQ{Ymj`|7d(*$tLK0AmupBJBl|(npNs$}Vx#MnR$zqeztA9dI{v1B*h3qr6eiqy z>_*9l{fRR9al`EpO%FRHCyxG{-NwsFln38S^1lrxQP;B}c0y&o9)}{$Sy&qqG7-VD z$Tv}Sja4S&(omn}ODhd>c7>>gFePZiryW5}%o{;DOSY%{9SLN`?QM`9r7N5-j^HL;aZ#AGX+^M1WpJr4&F~HD$vRqax{%<9oEM9% zYZQvIUoupeD{B>UXYE3|vsO`9Sy_6kAhV>tqeTMisu5d7OX2;9Al?v5;YdT0;HAKug8b9mVMr;_PpUuJnrIKG@W7QA+I-g5h-OVYJgoBZWW2SccOrYbv{ltP@hSkG8l z@k(J&k89ys-nDVLR_)X30|MB^4th#CAh|vR!7wOmYMoXL41>t zTPyc85n8V$QX=FPB8kymiW|x{SueJ9snABbg`*Q9>-vWl64=bi^h#GxMP*QLie)H( zZ=5JK#zA`IX+Irw$?#5&rh#Gg4GoG84k_P1p7I;uc*RwrV|_TEVCRocxcZfu=fk$HKd; ziI24zT!t){(=I+OXxGSx`P`YqF2B7=6T|pmRR5tnum+BcW#0O{kvN=>|I)OhqP^=_ zB`y!@7r;U4<|s!Dx(335{-^+s8ytAKS4ulD@@j?yp;i(7Ez$Dz*2hFvl^m-$Nx$sl z79|T`hYH$K9zyDH_1*;wYVGIyEY^XJ#!|P@^u>Xqys$z%=|=G7Ry&?j$Q`63g&RSP zib0SXzox>~*DMU>WKA=xeEd-IV?|kmJx(G=DHgfB-%WQ?C6m!&V*AwuL}gj!ST40Ch$#Cg*1Bmx zx(>uETfm9;`R}^OP}eYTYOt8Z2I<%&t-1rElP|sEQp@fnU#twR!6Tr;x^&VF(TG=H zwKW>bDP6DP$9S=5tNV+nojwoFieW2KZnQFv(|-jSsF+ zLIC5|17E^L0lfK?n|MSFME7Rlv|^@6y23GONe$!lmahk>2z5)usbunUn+i}Zq@h3|NNaE*^sYpGhbAkQ zrv?gzzs2Otn*UfMk0GlOWURCZob|U?IF(v)s#-c^pMak@mq1z(VZ7Z4P^c)`hKy{)1>N(v;YPx`vZGzWR{JkPm&z zm&3@7DonSV>kKr&wNU zt6JuST+gWm8iVm>mhHqfaQ^eEq9Z^jS*Q>mCDAJdE3j^qY_q~47v)2vlrJT7AZ;K( zwrA0u#P^tV|5m+vf<^<2TYOl-po)@efH0kA5wSA7=*<=+k;d?oS~@^?_lXB}*fr`D z&=J%PH2riKRc5`NH4=?v$v~TAT*T8jQaZaJs_7+d{wvPR!t{Ny69*Z); zDB?oUa)*_Xwp84!uk&ZgTxn^6w4XO;N5iH4 zl(%lSR6MM|uc00R;Hz7j9NnkA!Nl$uUb3UDFYgAm<}D&>L(G4-l;!*D9}hq|(1#7S z-esR%XyY@T6>2&;&dx&#br&d~5~7rT>k!0I-dH8w(GL3TH9i+0E`8sjmj{kBc%nqR*496CWPh*ZP|fkDEFZZ*PmOG zM0$&x%H(`e;UJKk7P?l7M{^{eUV%U&+zCMwX{W@^BAdGPnuf@@LR3#J+#t*aU66TsK+Ibd|R&9row0-ny56(M=Gx(BOti=a+v^;6XpxL1P z%G$P^aePsVIDtdM+QTX>-`R?A1ZqM=)G9lfj=^`?+N%{qje-Eh7gD?~z}AjBgkhW} zw{0iB-=O2~@GkN&GeG(7f>mAyc&s_dJ%x{~(r7SZ>GceOzXygt2*_JjGHVH3FvFik zh6|QwH--RbiVX_R@`z(t7iB%1Iu?aVKcysdVa_c``M0rUoNkvk3(#d)N~30&4A8)_ zvdwjuxO6@o?Z#zvh}c?sbrCWIg97DGA5X1M;d1|8Tom4!+)E$kGJ|A2F~vA$B-^AS zgSuyBNEgC?eMF+xcxt6?j4Oi1J8uNvb;~Gzp#T^TC%&O3p6)s08;d9Y`fuJo`rk{(utMQRy#f z)9oD#Pf18<&KMN9o3LEc#D}+hQr4tRXX=?45mhUqZCt z{^>5d{hza_* zN_pUpflRR^g*!&sq4Fh?mYIApGCO%Hnm-=8MOFk4HUyqkyySf=$Str!&d#%t7$kj{ zO05()9U7FM=UGI$9LkT@R82{LtHsS2`0)(ail3#ma+*ey!Z+Pjmaw_7Mm zEZ1KPMV*#~qN%};vRgz$y7Pq)zH>!|5Q_r>A99G07!hqEDuzTx42W)##J@Gb;=(Sl zqPi9SIR3TcH!RYMCLnf$E+!&K8$!wu(j*a^7NV9?B=9c@{6^#v0#ygXVPFPPP8_%l zemy9yT~vz(A#wLDUJ+_{K}(KIf6u;}lfmldo>pD4p*t>Ge{eH5WSRH=_@z z=ka`GR$u9!jG+$pxQW2&rFM_6YYbfDX_vo=d1@Fnai<-ZH=6U;#?H&x3MVIuIpfT( z#X+7C#4(p(M3d-&4!Caa5X-2qBjDCPa4XHBLDW5gzFdb;26KpbkSN4bo08@Q^*BC@ z&84dkioMLOG*_ZXDbv~g(WO$-T-7xbW2B;bwSm5$$2X@=bF#~7=l zGqWj3&Sr$@%*JP@wA&CwiZJq}wZJJ8obypMzg~W)o6?@|dgc&sB=W3v;$nB1t5Ltb zm_yku8MEY|E};!2gfXgG3Q-t;(@Al47h;C+k7fdlvT$vAg}Hpb&LzmBr}J2i9!sOY zXcZ-i)eVVAJt)pwix`->;FlW8TI5e-(gMtSP~-9|LUKK)Ro7V_2 zX)xlPwTMrno-~8Q=n>*7rwn(jO0Lz`UQ@E=XZDO0OP%@Its&lZ>08UPQ)-!!Lpg`| zI;Cn&Ifl^+Y6GOyY-|4#02G1D1C9FY;Vq6VCwi)Zb^m6LN-aF@};YnIB(l}5*K zZmpybUWwYoP;=^KTOMc2GEQJMMn~2{Tui+{YbLGfQYXF&p&qm;q{fzVB>pGO zQtF|0X<}La^m%67g|wnMOQBhT#}1LNTY|Kp^?mq9)YQLJA5rhb+Vg`}#RzM>v=7iy zI|^*& zuAlx2YV)dF{)kJZ=1(h?lt4N@q@-m4F|_~K!+k18V(x^@%haU+$mXxGY66izfZ(7ww-gb_an&vZWdFSV!Ep3P=eUtL0SrHYN;)mT{ zS9WjOb4JS!(y1r~?E+;FXV=0#2gIuJ^31M>UN1>vNWFh2j~r%3=h*p3nd@G$X%wgz zsUPHCTGm#VFkZdhNPZ&VZf~w8LTw>_BMCvf`|RD1SWD86v=}LqojV!1C!tXYf!7Am z(xdy_2m|E`78M+P)r@BlIA|m6Dm<#Jj8sO z8*=YJ`V`H6;xp2s$sQvngu#1cSHUV$Ml*@@o7Hd`GhsJq$s$TE(=*+v4~oUQ&dyzm z)}nL@QABf-EU#itfa^BQ`L0F2G(SU_y(po%3pJuy8pUi_4y}izUIsobN0zf}qkL!w zwFl|cT$z|a9kq@sChbHl&0&&*(5WWMnJ=Y;m_#kMcWYvE1$NXFM-~e^mkVG$-Y2TW z+u&Y}-|4hdrm04n<><{S)ShyP)urZkLLNdzJDo?TLi7R5I@~&>bHfeKNq40 z@te7V_YhQ8pBn3kxJZaW+D%9coL>3ed7aI67fE5S(jDLy%4@GxGWF#$grr1FGar$T zp>yN$pG2_^&MTw!Hsa8M#Z-xLYO-R2!;)A;@|8GMz^AmhiB7H+v$ORrs~@M^^|!Td zG1JDnN}Wh}ZCMpXq?NN2z^de&qtv2o9V!hDAxjn2lX3_n+`&6MX-y#;qMWxo!1E$_ zra2O4r%_AJ<&5ilz&7-_35V8t)iXF z>6MqS#;04JglG~!2HTQo3*aws|WF{Ju9rXon}gD*BbyYYR(pKIlW%#!u%n5 zN3y~ybt>78Xzq;I7Q#7lMJBA)KefaXt*2L3_MFt^F}I v!Urt2uavGua+nuE`nZ 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 + + + System.Text.Json + + + +

    Defines how the struct handles comments. + + + Allows comments within the JSON input and treats them as valid tokens. While reading, the caller can access the comment values. + + + Doesn't allow comments within the JSON input. Comments are treated as invalid JSON if found, and a is thrown. This is the default value. + + + Allows comments within the JSON input and ignores them. The behaves as if no comments are present. + + + Provides a mechanism for examining the structural content of a JSON value without automatically instantiating data values. + + + Releases the resources used by this instance. + + + Parses a sequence as UTF-8-encoded text representing a single JSON byte value into a JsonDocument. + The JSON text to parse. + Options to control the reader behavior during parsing. + A JsonDocument representation of the JSON value. + + does not represent a valid single JSON value. + + contains unsupported options. + + + Parses a as UTF-8-encoded data representing a single JSON value into a JsonDocument. The stream is read to completion. + The JSON data to parse. + Options to control the reader behavior during parsing. + A JsonDocument representation of the JSON value. + + does not represent a valid single JSON value. + + contains unsupported options. + + + Parses memory as UTF-8-encoded text representing a single JSON byte value into a JsonDocument. + The JSON text to parse. + Options to control the reader behavior during parsing. + A JsonDocument representation of the JSON value. + + does not represent a valid single JSON value. + + contains unsupported options. + + + Parses text representing a single JSON character value into a JsonDocument. + The JSON text to parse. + Options to control the reader behavior during parsing. + A JsonDocument representation of the JSON value. + + does not represent a valid single JSON value. + + contains unsupported options. + + + Parses text representing a single JSON string value into a JsonDocument. + The JSON text to parse. + Options to control the reader behavior during parsing. + A JsonDocument representation of the JSON value. + + does not represent a valid single JSON value. + + contains unsupported options. + + + Parses a as UTF-8-encoded data representing a single JSON value into a JsonDocument. The stream is read to completion. + The JSON data to parse. + Options to control the reader behavior during parsing. + The token to monitor for cancellation requests. + A task to produce a JsonDocument representation of the JSON value. + + does not represent a valid single JSON value. + + contains unsupported options. + + + Parses one JSON value (including objects or arrays) from the provided reader. + The reader to read. + A JsonDocument representing the value (and nested values) read from the reader. + + contains unsupported options. +-or- +The current token does not start or represent a value. + A value could not be read from the reader. + + + Gets the root element of this JSON document. + A representing the value of the document. + + + Attempts to parse one JSON value (including objects or arrays) from the provided reader. + The reader to read. + When the method returns, contains the parsed document. + + if a value was read and parsed into a JsonDocument; if the reader ran out of data while parsing. All other situations result in an exception being thrown. + + contains unsupported options. +-or- +The current token does not start or represent a value. + A value could not be read from the reader. + + + Writes the document to the provided writer as a JSON value. + The writer to which to write the document. + The parameter is . + The of this would result in invalid JSON. + The parent has been disposed. + + + Provides the ability for the user to define custom behavior when parsing JSON to create a . + + + Gets or sets a value that indicates whether an extra comma at the end of a list of JSON values in an object or array is allowed (and ignored) within the JSON payload being read. + + if an extra comma at the end of a list of JSON values in an object or array is allowed; otherwise, . Default is + + + Gets or sets a value that determines how the handles comments when reading through the JSON data. + One of the enumeration values that indicates how comments are handled. + The comment handling enum is set to a value that is not supported (or not within the enum range). + + + Gets or sets the maximum depth allowed when parsing JSON data, with the default (that is, 0) indicating a maximum depth of 64. + The maximum depth allowed when parsing JSON data. + The max depth is set to a negative value. + + + Represents a specific JSON value within a . + + + Represents an enumerator for the contents of a JSON array. + + + Gets the element in the collection at the current position of the enumerator. + The element in the collection at the current position of the enumerator. + + + Releases the resources used by this instance. + + + Returns an enumerator that iterates through a collection. + An enumerator that can be used to iterate through the array. + + + Advances the enumerator to the next element of the collection. + + if the enumerator was successfully advanced to the next element; if the enumerator has passed the end of the collection. + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + Returns an enumerator that iterates through a collection. + An enumerator for an array of that can be used to iterate through the collection. + + + Returns an enumerator that iterates through a collection. + An enumerator that can be used to iterate through the collection. + + + Gets the element in the collection at the current position of the enumerator. + The element in the collection at the current position of the enumerator. + + + Gets a JsonElement that can be safely stored beyond the lifetime of the original . + A JsonElement that can be safely stored beyond the lifetime of the original . + + + Gets an enumerator to enumerate the values in the JSON array represented by this JsonElement. + An enumerator to enumerate the values in the JSON array represented by this JsonElement. + This value's is not . + The parent has been disposed. + + + Gets an enumerator to enumerate the properties in the JSON object represented by this JsonElement. + An enumerator to enumerate the properties in the JSON object represented by this JsonElement. + This value's is not . + The parent has been disposed. + + + Gets the number of values contained within the current array value. + The number of values contained within the current array value. + This value's is not . + The parent has been disposed. + + + Gets the value of the element as a . + The value of the element as a . + This value's is neither nor . + The parent has been disposed. + + + Gets the current JSON number as a . + The current JSON number as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + + + Gets the value of the element as a byte array. + The value decoded as a byte array. + This value's is not . + The value is not encoded as Base64 text and hence cannot be decoded to bytes. + The parent has been disposed. + + + Gets the value of the element as a . + The value of the element as a . + This value's is not . + The value cannot be read as a . + The parent has been disposed. + + + Gets the value of the element as a . + The value of the element as a . + This value's is not . + The value cannot be read as a . + The parent has been disposed. + + + Gets the current JSON number as a . + The current JSON number as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + + + Gets the current JSON number as a . + The current JSON number as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + + + Gets the value of the element as a . + The value of the element as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + + + Gets the current JSON number as an . + The current JSON number as an . + This value's is not . + The value cannot be represented as an . + The parent has been disposed. + + + Gets the current JSON number as an . + The current JSON number as an . + This value's is not . + The value cannot be represented as an . + The parent has been disposed. + + + Gets the current JSON number as an . + The current JSON number as an . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + + + Gets a representing the value of a required property identified by . + The UTF-8 representation (with no Byte-Order-Mark (BOM)) of the name of the property to return. + A representing the value of the requested property. + This value's is not . + No property was found with the requested name. + The parent has been disposed. + + + Gets a representing the value of a required property identified by . + The name of the property whose value is to be returned. + A representing the value of the requested property. + This value's is not . + No property was found with the requested name. + The parent has been disposed. + + + Gets a representing the value of a required property identified by . + The name of the property whose value is to be returned. + A representing the value of the requested property. + This value's is not . + No property was found with the requested name. + + is . + The parent has been disposed. + + + Gets a string that represents the original input data backing this value. + The original input data backing this value. + The parent has been disposed. + + + Gets the current JSON number as an . + The current JSON number as an . + This value's is not . + The value cannot be represented as an . + The parent has been disposed. + + + Gets the current JSON number as a . + The current JSON number as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + + + Gets the value of the element as a . + The value of the element as a . + This value's is neither nor . + The parent has been disposed. + + + Gets the current JSON number as a . + The current JSON number as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + + + Gets the current JSON number as a . + The current JSON number as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + + + Gets the current JSON number as a . + The current JSON number as a . + This value's is not . + The value cannot be represented as a . + The parent has been disposed. + + + Gets the value at the specified index if the current value is an . + The item index. + The value at the specified index. + This value's is not . + + is not in the range [0, ()). + The parent has been disposed. + + + Represents an enumerator for the properties of a JSON object. + + + Gets the element in the collection at the current position of the enumerator. + The element in the collection at the current position of the enumerator. + + + Releases the resources used by this instance. + + + Returns an enumerator that iterates the properties of an object. + An enumerator that can be used to iterate through the object. + + + Advances the enumerator to the next element of the collection. + + if the enumerator was successfully advanced to the next element; if the enumerator has passed the end of the collection. + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + Returns an enumerator that iterates through a collection. + An enumerator for objects that can be used to iterate through the collection. + + + Returns an enumerator that iterates through a collection. + An enumerator that can be used to iterate through the collection. + + + Gets the element in the collection at the current position of the enumerator. + The element in the collection at the current position of the enumerator. + + + Gets a string representation for the current value appropriate to the value type. + A string representation for the current value appropriate to the value type. + The parent has been disposed. + + + Attempts to represent the current JSON number as a . + When the method returns, contains the byte equivalent of the current JSON number if the conversion succeeded. + + if the number can be represented as a ; otherwise, . + This value's is not . + The parent has been disposed. + + + Attempts to represent the current JSON string as a byte array, assuming that it is Base64 encoded. + If the method succeeds, contains the decoded binary representation of the Base64 text. + + if the entire token value is encoded as valid Base64 text and can be successfully decoded to bytes; otherwise, . + This value's is not . + The parent has been disposed. + + + Attempts to represent the current JSON string as a . + When this method returns, contains the date and time value equivalent to the current JSON string. + + if the string can be represented as a ; otherwise, . + This value's is not . + The parent has been disposed. + + + Attempts to represent the current JSON string as a . + When this method returns, contains the date and time equivalent to the current JSON string. + + if the string can be represented as a ; otherwise, . + This value's is not . + The parent has been disposed. + + + Attempts to represent the current JSON number as a . + When this method returns, contains the decimal equivalent of the current JSON number. + + if the number can be represented as a ; otherwise, . + This value's is not . + The parent has been disposed. + + + Attempts to represent the current JSON number as a . + When this method returns, contains a double-precision floating point value equivalent to the current JSON number. + + if the number can be represented as a ; otherwise, . + This value's is not . + The parent has been disposed. + + + Attempts to represent the current JSON string as a . + When this method returns, contains the GUID equivalent to the current JSON string. + + if the string can be represented as a ; otherwise, . + This value's is not . + The parent has been disposed. + + + Attempts to represent the current JSON number as an . + When the method returns, contains the 16-bit integer equivalent of the current JSON number if the conversion succeeded. + + if the number can be represented as an ; otherwise, . + This value's is not . + The parent has been disposed. + + + Attempts to represent the current JSON number as an . + When this method returns, contains the 32-biut integer value equivalent to the current JSON number. + + if the number can be represented as an ; otherwise, . + This value's is not . + The parent has been disposed. + + + Attempts to represent the current JSON number as a . + When this method returns, contains the 64-bit integer value equivalent to the current JSON number. + + if the number can be represented as a ; otherwise, . + This value's is not . + The parent has been disposed. + + + Looks for a property named in the current object, returning a value that indicates whether or not such a property exists. When the property exists, the method assigns its value to the argument. + The UTF-8 (with no Byte-Order-Mark (BOM)) representation of the name of the property to return. + Receives the value of the located property. + + if the property was found; otherwise, . + This value's is not . + The parent has been disposed. + + + Looks for a property named in the current object, returning a value that indicates whether or not such a property exists. When the property exists, the method assigns its value to the argument. + The name of the property to find. + When this method returns, contains the value of the specified property. + + if the property was found; otherwise, . + This value's is not . + The parent has been disposed. + + + Looks for a property named in the current object, returning a value that indicates whether or not such a property exists. When the property exists, its value is assigned to the argument. + The name of the property to find. + When this method returns, contains the value of the specified property. + + if the property was found; otherwise, . + This value's is not . + + is . + The parent has been disposed. + + + Attempts to represent the current JSON number as an . + When the method returns, contains the signed byte equivalent of the current JSON number if the conversion succeeded. + + if the number can be represented as an ; otherwise, . + This value's is not . + The parent has been disposed. + + + Attempts to represent the current JSON number as a . + When this method returns, contains the single-precision floating point value equivalent to the current JSON number. + + if the number can be represented as a ; otherwise, . + This value's is not . + The parent has been disposed. + + + Attempts to represent the current JSON number as a . + When the method returns, contains the unsigned 16-bit integer equivalent of the current JSON number if the conversion succeeded. + + if the number can be represented as a ; otherwise, . + This value's is not . + The parent has been disposed. + + + Attempts to represent the current JSON number as a . + When this method returns, contains unsigned 32-bit integer value equivalent to the current JSON number. + + if the number can be represented as a ; otherwise, . + This value's is not . + The parent has been disposed. + + + Attempts to represent the current JSON number as a . + When this method returns, contains unsigned 64-bit integer value equivalent to the current JSON number. + + if the number can be represented as a ; otherwise, . + This value's is not . + The parent has been disposed. + + + Compares the text represented by a UTF8-encoded byte span to the string value of this element. + The UTF-8 encoded text to compare against. + + if the string value of this element has the same UTF-8 encoding as +; otherwise, . + This value's is not . + + + Compares a specified read-only character span to the string value of this element. + The text to compare against. + + if the string value of this element matches ; otherwise, . + This value's is not . + + + Compares a specified string to the string value of this element. + The text to compare against. + + if the string value of this element matches ; otherwise, . + This value's is not . + + + Gets the type of the current JSON value. + The type of the current JSON value. + The parent has been disposed. + + + Writes the element to the specified writer as a JSON value. + The writer to which to write the element. + The parameter is . + The of this value is . + The parent has been disposed. + + + Provides methods to transform UTF-8 or UTF-16 encoded text into a form that is suitable for JSON. + + + Encodes a UTF-8 text value as a JSON string. + The UTF-8 encoded text to convert to JSON encoded text. + The encoder to use when escaping the string, or to use the default encoder. + The encoded JSON text. + + is too large. +-or- + contains invalid UTF-8 bytes. + + + Encodes a specified text value as a JSON string. + The value to convert to JSON encoded text. + The encoder to use when escaping the string, or to use the default encoder. + The encoded JSON text. + + is too large. +-or- + contains invalid UTF-16 characters. + + + Encodes the string text value as a JSON string. + The value to convert to JSON encoded text. + The encoder to use when escaping the string, or to use the default encoder. + The encoded JSON text. + + is . + + is too large. +-or- + contains invalid UTF-16 characters. + + + Gets the UTF-8 encoded representation of the pre-encoded JSON text. + The UTF-8 encoded representation of the pre-encoded JSON text. + + + Determines whether this instance and a specified object, which must also be a instance, have the same value. + The object to compare to this instance. + + if the current instance and are equal; otherwise, . + + + Determines whether this instance and another specified instance have the same value. + The object to compare to this instance. + + if this instance and have the same value; otherwise, . + + + Returns the hash code for this . + The hash code for this instance. + + + Converts the value of this instance to a . + The underlying UTF-16 encoded string. + + + Defines a custom exception object that is thrown when invalid JSON text is encountered, when the defined maximum depth is passed, or the JSON text is not compatible with the type of a property on an object. + + + Initializes a new instance of the class. + + + Creates a new exception object with serialized data. + The serialized object data about the exception being thrown. + An object that contains contextual information about the source or destination. + + is . + + + Initializes a new instance of the class with a specified error message. + The context-specific error message. + + + Initializes a new instance of the class, with a specified error message and a reference to the inner exception that is the cause of this exception. + The context-specific error message. + The exception that caused the current exception. + + + Creates a new exception object to relay error information to the user. + The context-specific error message. + The path where the invalid JSON was encountered. + The line number (starting at 0) at which the invalid JSON was encountered when deserializing. + The byte count within the current line (starting at 0) where the invalid JSON was encountered. + + + Creates a new exception object to relay error information to the user that includes a specified inner exception. + The context-specific error message. + The path where the invalid JSON was encountered. + The line number (starting at 0) at which the invalid JSON was encountered when deserializing. + The byte count (starting at 0) within the current line where the invalid JSON was encountered. + The exception that caused the current exception. + + + Gets the zero-based number of bytes read within the current line before the exception. + The zero-based number of bytes read within the current line before the exception. + + + Sets the with information about the exception. + The serialized object data about the exception being thrown. + An object that contains contextual information about the source or destination. + + + Gets the zero-based number of lines read before the exception. + The zero-based number of lines read before the exception. + + + Gets a message that describes the current exception. + The error message that describes the current exception. + + + Gets The path within the JSON where the exception was encountered. + The path within the JSON where the exception was encountered. + + + Determines the naming policy used to convert a string-based name to another format, such as a camel-casing format. + + + Initializes a new instance of . + + + Gets the naming policy for camel-casing. + The naming policy for camel-casing. + + + When overridden in a derived class, converts the specified name according to the policy. + The name to convert. + The converted name. + + + Represents a single property for a JSON object. + + + Gets the name of this property. + The name of this property. + + + Compares the specified UTF-8 encoded text to the name of this property. + The UTF-8 encoded text to compare against. + + if the name of this property has the same UTF-8 encoding as ; otherwise, . + This value's is not . + + + Compares the specified text as a character span to the name of this property. + The text to compare against. + + if the name of this property matches ; otherwise, . + This value's is not . + + + Compares the specified string to the name of this property. + The text to compare against. + + if the name of this property matches ; otherwise . + This value's is not . + + + Provides a string representation of the property for debugging purposes. + A string containing the uninterpreted value of the property, beginning at the declaring open-quote and ending at the last character that is part of the value. + + + Gets the value of this property. + The value of this property. + + + Writes the property to the provided writer as a named JSON object property. + The writer to which to write the property. + + is . + + is too large to be a JSON object property. + The of this JSON property's would result in invalid JSON. + The parent has been disposed. + + + Provides the ability for the user to define custom behavior when reading JSON. + + + Gets or sets a value that defines whether an extra comma at the end of a list of JSON values in an object or array is allowed (and ignored) within the JSON payload being read. + + if an extra comma is allowed; otherwise, . + + + Gets or sets a value that determines how the handles comments when reading through the JSON data. + One of the enumeration values that indicates how comments are handled. + The property is being set to a value that is not a member of the enumeration. + + + Gets or sets the maximum depth allowed when reading JSON, with the default (that is, 0) indicating a maximum depth of 64. + The maximum depth allowed when reading JSON. + The maximum depth is being set to a negative value. + + + Defines an opaque type that holds and saves all the relevant state information, which must be provided to the to continue reading after processing incomplete data. + + + Constructs a new instance. + Defines the customized behavior of the that is different from the JSON RFC (for example how to handle comments, or the maximum depth allowed when reading). By default, the follows the JSON RFC strictly (comments within the JSON are invalid) and reads up to a maximum depth of 64. + The maximum depth is set to a non-positive value (< 0). + + + Gets the custom behavior to use when reading JSON data using the struct that may deviate from strict adherence to the JSON specification, which is the default behavior. + The custom behavior to use when reading JSON data. + + + Provides functionality to serialize objects or value types to JSON and to deserialize JSON into objects or value types. + + + Parses the UTF-8 encoded text representing a single JSON value into an instance of a specified type. + The JSON text to parse. + The type of the object to convert to and return. + Options to control the behavior during parsing. + A representation of the JSON value. + + is . + The JSON is invalid. +-or- + is not compatible with the JSON. +-or- +There is remaining data in the span beyond a single JSON value. + + + Parses the text representing a single JSON value into an instance of a specified type. + The JSON text to parse. + The type of the object to convert to and return. + Options to control the behavior during parsing. + A representation of the JSON value. + + or is . + The JSON is invalid. +-or- + is not compatible with the JSON. +-or- +There is remaining data in the string beyond a single JSON value. + + + Reads one JSON value (including objects or arrays) from the provided reader and converts it into an instance of a specified type. + The reader to read the JSON from. + The type of the object to convert to and return. + Options to control the serializer behavior during reading. + A representation of the JSON value. + + is . + The JSON is invalid. +-or- + is not compatible with the JSON. +-or- +A value could not be read from the reader. + + is using unsupported options. + + + Parses the UTF-8 encoded text representing a single JSON value into an instance of the type specified by a generic type parameter. + The JSON text to parse. + Options to control the behavior during parsing. + The target type of the UTF-8 encoded text. + A representation of the JSON value. + The JSON is invalid. +-or- + is not compatible with the JSON. +-or- +There is remaining data in the span beyond a single JSON value. + + + Parses the text representing a single JSON value into an instance of the type specified by a generic type parameter. + The JSON text to parse. + Options to control the behavior during parsing. + The target type of the JSON value. + A representation of the JSON value. + + is . + The JSON is invalid. +-or- + is not compatible with the JSON. +-or- +There is remaining data in the string beyond a single JSON value. + + + Reads one JSON value (including objects or arrays) from the provided reader into an instance of the type specified by a generic type parameter. + The reader to read the JSON from. + Options to control serializer behavior during reading. + The target type of the JSON value. + A representation of the JSON value. + The JSON is invalid. +-or- + is not compatible with the JSON. +-or- +A value could not be read from the reader. + + uses unsupported options. + + + Asynchronously reads the UTF-8 encoded text representing a single JSON value into an instance of a specified type. The stream will be read to completion. + The JSON data to parse. + The type of the object to convert to and return. + Options to control the behavior during reading. + A cancellation token that may be used to cancel the read operation. + A representation of the JSON value. + + or is . + The JSON is invalid. +-or- + is not compatible with the JSON. +-or- +There is remaining data in the stream. + + + Asynchronously reads the UTF-8 encoded text representing a single JSON value into an instance of a type specified by a generic type parameter. The stream will be read to completion. + The JSON data to parse. + Options to control the behavior during reading. + A token that may be used to cancel the read operation. + The target type of the JSON value. + A representation of the JSON value. + The JSON is invalid. +-or- + is not compatible with the JSON. +-or- +There is remaining data in the stream. + + + Converts the value of a specified type into a JSON string. + The value to convert. + The type of the to convert. + Options to control the conversion behavior. + The JSON string representation of the value. + + + Writes the JSON representation of the specified type to the provided writer. + The JSON writer to write to. + The value to convert and write. + The type of the to convert. + Options to control serialization behavior. + + + Converts the value of a type specified by a generic type parameter into a JSON string. + The value to convert. + Options to control serialization behavior. + The type of the value to serialize. + A JSON string representation of the value. + + + Writes the JSON representation of a type specified by a generic type parameter to the provided writer. + A JSON writer to write to. + The value to convert and write. + Options to control serialization behavior. + The type of the value to serialize. + + + Asynchronously converts the value of a specified type to UTF-8 encoded JSON text and writes it to the specified stream. + The UTF-8 stream to write to. + The value to convert. + The type of the to convert. + Options to control serialization behavior. + A token that may be used to cancel the write operation. + A task that represents the asynchronous write operation. + + + Asynchronously converts a value of a type specified by a generic type parameter to UTF-8 encoded JSON text and writes it to a stream. + The UTF-8 stream to write to. + The value to convert. + Options to control serialization behavior. + A token that may be used to cancel the write operation. + The type of the value to serialize. + A task that represents the asynchronous write operation. + + + Converts a value of the specified type into a JSON string, encoded as UTF-8 bytes. + The value to convert. + The type of the to convert. + Options to control the conversion behavior. + A JSON string representation of the value, encoded as UTF-8 bytes. + + + Converts the value of a type specified by a generic type parameter into a JSON string, encoded as UTF-8 bytes. + The value to convert. + Options to control the conversion behavior. + The type of the value. + A JSON string representation of the value, encoded as UTF-8 bytes. + + + Provides options to be used with . + + + Initializes a new instance of the class. + + + Get or sets a value that indicates whether an extra comma at the end of a list of JSON values in an object or array is allowed (and ignored) within the JSON payload being deserialized. + + if an extra comma at the end of a list of JSON values in an object or array is allowed (and ignored); otherwise. + This property was set after serialization or deserialization has occurred. + + + Gets the list of user-defined converters that were registered. + The list of custom converters. + + + Gets or sets the default buffer size, in bytes, to use when creating temporary buffers. + The default buffer size in bytes. + The buffer size is less than 1. + This property was set after serialization or deserialization has occurred. + + + Gets or sets the policy used to convert a key's name to another format, such as camel-casing. + The policy used to convert a key's name to another format. + + + Gets or sets the encoder to use when escaping strings, or to use the default encoder. + The JavaScript character encoding. + + + Returns the converter for the specified type. + The type to return a converter for. + The first converter that supports the given type, or if there is no converter. + + + Gets or sets a value that determines whether values are ignored during serialization and deserialization. The default value is . + + to ignore null values during serialization and deserialization; otherwise, see langword="false" />. + This property was set after serialization or deserialization has occurred. + + + Gets a value that determines whether read-only properties are ignored during serialization. The default value is . + + to ignore read-only properties during serialization; otherwise, . + This property was set after serialization or deserialization has occurred. + + + Gets or sets the maximum depth allowed when serializing or deserializing JSON, with the default value of 0 indicating a maximum depth of 64. + The maximum depth allowed when serializing or deserializing JSON. + This property was set after serialization or deserialization has occurred. + The max depth is set to a negative value. + + + Gets or sets a value that determines whether a property's name uses a case-insensitive comparison during deserialization. The default value is . + + to compare property names using case-insensitive comparison; otherwise, . + + + Gets or sets a value that specifies the policy used to convert a property's name on an object to another format, such as camel-casing, or to leave property names unchanged. + A property naming policy, or to leave property names unchanged. + + + Gets or sets a value that defines how comments are handled during deserialization. + A value that indicates whether comments are allowed, disallowed, or skipped. + This property was set after serialization or deserialization has occurred. + The comment handling enum is set to a value that is not supported (or not within the enum range). + + + Gets or sets a value that defines whether JSON should use pretty printing. By default, JSON is serialized without any extra white space. + + if JSON should pretty print on serialization; otherwise, . The default is . + This property was set after serialization or deserialization has occurred. + + + Defines the various JSON tokens that make up a JSON text. + + + The token type is a comment string. + + + The token type is the end of a JSON array. + + + The token type is the end of a JSON object. + + + The token type is the JSON literal false. + + + There is no value (as distinct from ). + + + The token type is the JSON literal null. + + + The token type is a JSON number. + + + The token type is a JSON property name. + + + The token type is the start of a JSON array. + + + The token type is the start of a JSON object. + + + The token type is a JSON string. + + + The token type is the JSON literal true. + + + Specifies the data type of a JSON value. + + + A JSON array. + + + The JSON value false. + + + The JSON value null. + + + A JSON number. + + + A JSON object. + + + A JSON string. + + + The JSON value true. + + + There is no value (as distinct from ). + + + Allows the user to define custom behavior when writing JSON using the . + + + Gets or sets the encoder to use when escaping strings, or to use the default encoder. + The JavaScript character encoder used to override the escaping behavior. + + + Gets or sets a value that indicates whether the should format the JSON output, which includes indenting nested JSON tokens, adding new lines, and adding white space between property names and values. + + to format the JSON output; to write without any extra white space. The default is . + + + Gets or sets a value that indicates whether the should skip structural validation and allow the user to write invalid JSON. + + to skip structural validation and allow invalid JSON; to throw an on any attempt to write invalid JSON. + + + Provides the base class for serialization attributes. + + + Creates a new instance of the . + + + Converts an object or value to or from JSON. + + + When overridden in a derived class, determines whether the converter instance can convert the specified object type. + The type of the object to check whether it can be converted by this converter instance. + + if the instance can convert the specified object type; otherwise, . + + + Converts an object or value to or from JSON. + The type of object or value handled by the converter. + + + Initializes a new instance. + + + Determines whether the specified type can be converted. + The type to compare against. + + if the type can be converted; otherwise, . + + + Reads and converts the JSON to type . + The reader. + The type to convert. + An object that specifies serialization options to use. + The converted value. + + + Writes a specified value as JSON. + The writer to write to. + The value to convert to JSON. + An object that specifies serialization options to use. + + + When placed on a property or type, specifies the converter type to use. + + + Initializes a new instance of . + + + Initializes a new instance of with the specified converter type. + The type of the converter. + + + Gets the type of the , or if it was created without a type. + The type of the , or if it was created without a type. + + + When overridden in a derived class and is , allows the derived class to create a in order to pass additional state. + The type of the converter. + The custom converter. + + + Supports converting several types by using a factory pattern. + + + When overidden in a derived class, initializes a new instance of the class. + + + Creates a converter for a specified type. + The type handled by the converter. + The serialization options to use. + A converter for which is compatible with . + + + When placed on a property of type , any properties that do not have a matching member are added to that dictionary during deserialization and written during serialization. + + + Instantiates a new instance of the class. + + + Prevents a property from being serialized or deserialized. + + + Initializes a new instance of . + + + Specifies the property name that is present in the JSON when serializing and deserializing. This overrides any naming policy specified by . + + + Initializes a new instance of with the specified property name. + The name of the property. + + + Gets the name of the property. + The name of the property. + + + Converts enumeration values to and from strings. + + + Initializes an instance of the class with the default naming policy that allows integer values. + + + Initializes an instance of the class with a specified naming policy and a value that indicates whether undefined enumeration values are allowed. + The optional naming policy for writing enum values. + + to allow undefined enum values; otherwise, . When , if an enum value isn't defined, it will output as a number rather than a string. + + + Determines whether the specified type can be converted to an enum. + The type to be checked. + + if the type can be converted; otherwise, . + + + Creates a converter for the specified type. + The type handled by the converter. + The serialization options to use. + A converter for which is compatible with . + + + Provides a high-performance API for forward-only, read-only access to UTF-8 encoded JSON text. + + + Initializes a new instance of the structure that processes a read-only sequence of UTF-8 encoded text and indicates whether the input contains all the text to process. + The UTF-8 encoded JSON text to process. + + to indicate that the input sequence contains the entire data to process; to indicate that the input span contains partial data with more data to follow. + An object that contains the reader state. If this is the first call to the constructor, pass the default state; otherwise, pass the value of the property from the previous instance of the . + + + Initializes a new instance of the structure that processes a read-only sequence of UTF-8 encoded text using the specified options. + The UTF-8 encoded JSON text to process. + Defines customized behavior of the that differs from the JSON RFC (for example how to handle comments or maximum depth allowed when reading). By default, the follows the JSON RFC strictly; comments within the JSON are invalid, and the maximum depth is 64. + + + Initializes a new instance of the structure that processes a read-only span of UTF-8 encoded text and indicates whether the input contains all the text to process. + The UTF-8 encoded JSON text to process. + + to indicate that the input sequence contains the entire data to process; to indicate that the input span contains partial data with more data to follow. + An object that contains the reader state. If this is the first call to the constructor, pass the default state; otherwise, pass the value of the property from the previous instance of the . + + + Initializes a new instance of the structure that processes a read-only span of UTF-8 encoded text using the specified options. + The UTF-8 encoded JSON text to process. + Defines customized behavior of the that differs from the JSON RFC (for example how to handle comments or maximum depth allowed when reading). By default, the follows the JSON RFC strictly; comments within the JSON are invalid, and the maximum depth is 64. + + + Gets the total number of bytes consumed so far by this instance of the . + The total number of bytes consumed so far. + + + Gets the depth of the current token. + The depth of the current token. + + + Gets the current state to pass to a constructor with more data. + The current reader state. + + + Reads the next JSON token value from the source as a . + + if the is ; if the is . + The value of the JSON token isn't a boolean value (that is, or ). + + + Parses the current JSON token value from the source as a . + The value of the UTF-8 encoded token. + The value of the JSON token is not a . + The numeric format of the JSON token value is incorrect (for example, it contains a fractional value or is written in scientific notation). +-or- +The JSON token value represents a number less than or greater than . + + + Parses the current JSON token value from the source and decodes the Base64 encoded JSON string as a byte array. + The byte array that represents the current JSON token value. + The type of the JSON token is not a . + The value is not encoded as Base64 text, so it can't be decoded to bytes. + + + Parses the current JSON token value from the source as a comment, transcoded it as a . + The comment that represents the current JSON token value. + The JSON token is not a comment. + + + Reads the next JSON token value from the source and parses it to a . + The date and time value, if the entire UTF-8 encoded token value can be successfully parsed. + The value of the JSON token isn't a . + The JSON token value cannot be read as a . +-or- +The entire UTF-8 encoded token value cannot be parsed to a value. + + + Reads the next JSON token value from the source and parses it to a . + The date and time offset, if the entire UTF-8 encoded token value can be successfully parsed. + The value of the JSON token isn't a . + The JSON token value cannot be read as a . +-or- +The entire UTF-8 encoded token value cannot be parsed to a value. + + + Reads the next JSON token value from the source and parses it to a . + The UTF-8 encoded token value parsed to a . + The JSON token value isn't a . + The JSON token value represents a number less than or greater than . + + + Reads the next JSON token value from the source and parses it to a . + The UTF-8 encoded token value parsed to a . + The JSON token value isn't a . + The JSON token value represents a number less than or greater than . + + + Reads the next JSON token value from the source and parses it to a . + The GUID value, if the entire UTF-8 encoded token value can be successfully parsed. + The value of the JSON token isn't a . + The JSON token value is in an unsupported format for a Guid. +-or- +The entire UTF-8 encoded token value cannot be parsed to a value. + + + Parses the current JSON token value from the source as a . + The UTF-8 encoded token value parsed to an . + The value of the JSON token is not a . + The numeric format of the JSON token value is incorrect (for example, it contains a fractional value or is written in scientific notation). +-or- +The JSON token value represents a number less than or greater than . + + + Reads the next JSON token value from the source and parses it to an . + The UTF-8 encoded token value parsed to an . + The JSON token value isn't a . + The JSON token value is of the incorrect numeric format. For example, it contains a decimal or is written in scientific notation. +-or- +The JSON token value represents a number less than or greater than . + + + Reads the next JSON token value from the source and parses it to an . + The UTF-8 encoded token value parsed to an . + The JSON token value isn't a . + The JSON token value is of the incorrect numeric format. For example, it contains a decimal or is written in scientific notation. +-or- +The JSON token value represents a number less than or greater than . + + + Parses the current JSON token value from the source as an . + The UTF-8 encoded token value parsed to an . + The value of the JSON token is not a . + The numeric format of the JSON token value is incorrect (for example, it contains a fractional value or is written in scientific notation). +-or- +The JSON token value represents a number less than or greater than . + + + Reads the next JSON token value from the source and parses it to a . + The UTF-8 encoded token value parsed to a . + The JSON token value isn't a . + The JSON token value represents a number less than or greater than . + + + Reads the next JSON token value from the source, unescaped, and transcoded as a string. + The token value parsed to a string, or if is . + The JSON token value isn't a string (that is, not a , , or ). +-or- +The JSON string contains invalid UTF-8 bytes or invalid UTF-16 surrogates. + + + Parses the current JSON token value from the source as a . + The UTF-8 encoded token value parsed to a . + The value of the JSON token is not a . + The numeric format of the JSON token value is incorrect (for example, it contains a fractional value or is written in scientific notation). +-or- +The JSON token value represents a number less than or greater than . + + + Reads the next JSON token value from the source and parses it to a . + The UTF-8 encoded token value parsed to a . + The JSON token value isn't a . + The JSON token value is of the incorrect numeric format. For example, it contains a decimal or is written in scientific notation. +-or- +The JSON token value represents a number less than or greater than . + + + Reads the next JSON token value from the source and parses it to a . + The UTF-8 encoded token value parsed to a . + The JSON token value isn't a . + The JSON token value is of the incorrect numeric format. For example, it contains a decimal or is written in scientific notation. +-or- +The JSON token value represents a number less than or greater than . + + + Gets a value that indicates which Value property to use to get the token value. + + if should be used to get the token value; if should be used instead. + + + Gets the mode of this instance of the which indicates whether all the JSON data was provided or there is more data to come. + + if the reader was constructed with the input span or sequence containing the entire JSON data to process; if the reader was constructed with an input span or sequence that may contain partial JSON data with more data to follow. + + + Gets the current within the provided UTF-8 encoded input ReadOnlySequence<byte> or a default if the struct was constructed with a ReadOnlySpan<byte>. + The current within the provided UTF-8 encoded input ReadOnlySequence<byte> or a default if the struct was constructed with a ReadOnlySpan<byte>. + + + Reads the next JSON token from the input source. + + if the token was read successfully; otherwise, . + An invalid JSON token according to the JSON RFC is encountered. +-or- +The current depth exceeds the recursive limit set by the maximum depth. + + + Skips the children of the current JSON token. + The reader was given partial data with more data to follow (that is, is ). + An invalid JSON token was encountered while skipping, according to the JSON RFC. +-or- +The current depth exceeds the recursive limit set by the maximum depth. + + + Gets the index that the last processed JSON token starts at (within the given UTF-8 encoded input text), skipping any white space. + The starting index of the last processed JSON token within the given UTF-8 encoded input text. + + + Gets the type of the last processed JSON token in the UTF-8 encoded JSON text. + The type of the last processed JSON token. + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + The JSON token value isn't a . + + + Tries to parse the current JSON token value from the source and decodes the Base64 encoded JSON string as a byte array and returns a value that indicates whether the operation succeeded. + When this method returns, contains the decoded binary representation of the Base64 text. + + if the entire token value is encoded as valid Base64 text and can be successfully decoded to bytes; otherwise, . + The JSON token is not a . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + The value of the JSON token isn't a . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + The value of the JSON token isn't a . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + The JSON token value isn't a . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + The JSON token value isn't a . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + The value of the JSON token isn't a . + + + Tries to parse the current JSON token value from the source as an and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + The JSON token value isn't a . + + + Tries to parse the current JSON token value from the source as an and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + + if the entire UTF-8 encoded token value can be successfully parsed to an value; otherwise, . + The JSON token value isn't a . + + + Tries to parse the current JSON token value from the source as an and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + + if the entire UTF-8 encoded token value can be successfully parsed to an value; otherwise, . + The JSON token value isn't a . + + + Tries to parse the current JSON token value from the source as an and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + + if the entire UTF-8 encoded token value can be successfully parsed to an value; otherwise, . + The JSON token value isn't a . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + + if the entire UTF-8 encoded token value can be successfully parsed to an value; otherwise, . + The JSON token value isn't a . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + The JSON token value isn't a . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + The JSON token value isn't a . + + + Tries to parse the current JSON token value from the source as a and returns a value that indicates whether the operation succeeded. + When this method returns, contains the parsed value. + + if the entire UTF-8 encoded token value can be successfully parsed to a value; otherwise, . + The JSON token value isn't a . + + + Tries to skip the children of the current JSON token. + + if there was enough data for the children to be skipped successfully; otherwise, . + An invalid JSON token was encountered while skipping, according to the JSON RFC. +-or - +The current depth exceeds the recursive limit set by the maximum depth. + + + Gets the raw value of the last processed token as a ReadOnlySequence<byte> slice of the input payload, only if the token is contained within multiple segments. + A byte read-only sequence. + + + Gets the raw value of the last processed token as a ReadOnlySpan<byte> slice of the input payload, if the token fits in a single segment or if the reader was constructed with a JSON payload contained in a ReadOnlySpan<byte>. + A read-only span of bytes. + + + Compares the UTF-8 encoded text in a read-only byte span to the unescaped JSON token value in the source and returns a value that indicates whether they match. + The UTF-8 encoded text to compare against. + + if the JSON token value in the source matches the UTF-8 encoded lookup text; otherwise, . + The JSON token is not a JSON string (that is, it is not or ). + + + Compares the text in a read-only character span to the unescaped JSON token value in the source and returns a value that indicates whether they match. + The text to compare against. + + if the JSON token value in the source matches the lookup text; otherwise, . + The JSON token is not a JSON string (that is, it is not or ). + + + Compares the string text to the unescaped JSON token value in the source and returns a value that indicates whether they match. + The text to compare against. + + if the JSON token value in the source matches the lookup text; otherwise, . + The JSON token is not a JSON string (that is, it is not or ). + + + Provides a high-performance API for forward-only, non-cached writing of UTF-8 encoded JSON text. + + + Initializes a new instance of the class using the specified to write the output to and customization options. + The destination for writing JSON text. + Defines the customized behavior of the . By default, it writes minimized JSON (with no extra white space) and validates that the JSON being written is structurally valid according to the JSON RFC. + + is . + + + Initializes a new instance of the class using the specified stream to write the output to and customization options. + The destination for writing JSON text. + Defines the customized behavior of the . By default, it writes minimized JSON (with no extra white space) and validates that the JSON being written is structurally valid according to the JSON RFC. + + is . + + + Gets the total number of bytes committed to the output by the current instance so far. + The total number of bytes committed to the output by the so far. + + + Gets the number of bytes written by the so far that have not yet been flushed to the output and committed. + The number of bytes written so far by the that have not yet been flushed to the output and committed. + + + Gets the depth of the current token. + The depth of the current token. + + + Commits any leftover JSON text that has not yet been flushed and releases all resources used by the current instance. + + + Asynchronously commits any leftover JSON text that has not yet been flushed and releases all resources used by the current instance. + A task representing the asynchronous dispose operation. + + + Commits the JSON text written so far, which makes it visible to the output destination. + This instance has been disposed. + + + Asynchronously commits the JSON text written so far, which makes it visible to the output destination. + The token to monitor for cancellation requests. The default value is . + A task representing the asynchronous flush operation. + This instance has been disposed. + + + Gets the custom behavior when writing JSON using this instance, which indicates whether to format the output while writing, whether to skip structural JSON validation, and which characters to escape. + The custom behavior of this instance of the writer for formatting, validating, and escaping. + + + Resets the internal state of this instance so that it can be reused. + This instance has been disposed. + + + Resets the internal state of this instance so that it can be reused with a new instance of . + The destination for writing JSON text. + + is . + This instance has been disposed. + + + Resets the internal state of this instance so that it can be reused with a new instance of . + The destination for writing JSON text. + + is . + This instance has been disposed. + + + Writes the property name and raw bytes value (as a Base64 encoded JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded name of the property to write. + The binary data to write as Base64 encoded text. + The specified property name or value is too large. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the property name and raw bytes value (as a Base64 encoded JSON string) as part of a name/value pair of a JSON object. + The property name of the JSON object to be transcoded and written as UTF-8. + The binary data to write as Base64 encoded text. + The specified property name or value is too large. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the property name and raw bytes value (as a Base64 encoded JSON string) as part of a name/value pair of a JSON object. + The property name of the JSON object to be transcoded and written as UTF-8. + The binary data to write as Base64 encoded text. + The specified property name or value is too large. + Validation is enabled, and this method would result in writing invalid JSON. + The parameter is . + + + Writes the pre-encoded property name and raw bytes value (as a Base64 encoded JSON string) as part of a name/value pair of a JSON object. + The JSON-encoded name of the property to write. + The binary data to write as Base64 encoded text. + The specified value is too large. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the raw bytes value as a Base64 encoded JSON string as an element of a JSON array. + The binary data to be written as a Base64 encoded JSON string element of a JSON array. + The specified value is too large. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes a property name specified as a read-only span of bytes and a value (as a JSON literal true or false) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON literal true or false as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON literal true or false) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON literal true or false as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a property name specified as a string and a value (as a JSON literal true or false) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON literal true or false as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the operation would result in writing invalid JSON. + The parameter is . + + + Writes the pre-encoded property name and value (as a JSON literal true or false) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON literal true or false as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes a value (as a JSON literal true or false) as an element of a JSON array. + The value to be written as a JSON literal true or false as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a UTF-8 text value as a JSON comment. + The UTF-8 encoded value to be written as a JSON comment within /*..*/. + The specified value is too large. +-or- + contains a comment delimiter (that is, */). + + + Writes a UTF-16 text value as a JSON comment. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON comment within /*..*/. + The specified value is too large. +-or- + contains a comment delimiter (that is, */). + + + Writes a string text value as a JSON comment. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON comment within /*..*/. + The specified value is too large. +-or- + contains a comment delimiter (that is, */). + The parameter is . + + + Writes the end of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes the end of a JSON object. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a property name specified as a read-only span of bytes and the JSON literal null as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and the JSON literal null as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a string and the JSON literal null as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes the pre-encoded property name and the JSON literal null as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the JSON literal null as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a property name specified as a read-only span of bytes and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only span of bytes and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only span of bytes and an value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only span of bytes and an value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only span of bytes and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only span of bytes and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only span of bytes and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and an value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and an value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a string and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and an value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and an value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a value (as a JSON number) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes the pre-encoded property name and value (as a JSON number) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON number) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON number) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON number) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON number) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON number) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON number) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON number as part of the name/value pair. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes a value (as a JSON number) as an element of a JSON array. + The value to be written as a JSON number as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a value (as a JSON number) as an element of a JSON array. + The value to be written as a JSON number as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes an value (as a JSON number) as an element of a JSON array. + The value to be written as a JSON number as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes an value (as a JSON number) as an element of a JSON array. + The value to be written as a JSON number as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a value (as a JSON number) as an element of a JSON array. + The value to be written as a JSON number as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a value (as a JSON number) as an element of a JSON array. + The value to be written as a JSON number as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a value (as a JSON number) as an element of a JSON array. + The value to be written as a JSON number as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes the UTF-8 property name (as a JSON string) as the first part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The specified property name is too large. + Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the property name (as a JSON string) as the first part of a name/value pair of a JSON object. + The property name of the JSON object to be transcoded and written as UTF-8. + The specified property name is too large. + Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the property name (as a JSON string) as the first part of a name/value pair of a JSON object. + The property name of the JSON object to be transcoded and written as UTF-8. + The specified property name is too large. + Validation is enabled, and this write operation would produce invalid JSON. + + is . + + + Writes the pre-encoded property name (as a JSON string) as the first part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the beginning of a JSON array. + The depth of the JSON exceeds the maximum depth of 1,000. +-or- +Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the beginning of a JSON array with a property name specified as a read-only span of bytes as the key. + The UTF-8 encoded property name of the JSON array to be written. + The specified property name is too large. + The depth of the JSON exceeds the maximum depth of 1,000. +-or- +Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the beginning of a JSON array with a property name specified as a read-only character span as the key. + The UTF-16 encoded property name of the JSON array to be transcoded and written as UTF-8. + The specified property name is too large. + The depth of the JSON exceeds the maximum depth of 1,000. +-or- +Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the beginning of a JSON array with a property name specified as a string as the key. + The UTF-16 encoded property name of the JSON array to be transcoded and written as UTF-8. + The specified property name is too large. + The depth of the JSON exceeds the maximum depth of 1,000. +-or- +Validation is enabled, and this write operation would produce invalid JSON. + The parameter is . + + + Writes the beginning of a JSON array with a pre-encoded property name as the key. + The JSON encoded property name of the JSON array to be transcoded and written as UTF-8. + The depth of the JSON has exceeded the maximum depth of 1,000. +-or- +Validation is enabled, and this method would result in writing invalid JSON. + + + Writes the beginning of a JSON object. + The depth of the JSON exceeds the maximum depth of 1,000. +-or- +Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes the beginning of a JSON object with a property name specified as a read-only span of bytes as the key. + The UTF-8 encoded property name of the JSON object to be written. + The specified property name is too large. + The depth of the JSON exceeds the maximum depth of 1,000. +-or- +Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the beginning of a JSON object with a property name specififed as a read-only character span as the key. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The specified property name is too large. + The depth of the JSON exceeds the maximum depth of 1,000. +-or- +Validation is enabled, and this write operation would produce invalid JSON. + + + Writes the beginning of a JSON object with a property name specified as a string as the key. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The specified property name is too large. + The depth of the JSON exceeds the maximum depth of 1,000. +-or- +Validation is enabled, and this write operation would produce invalid JSON. + The parameter is . + + + Writes the beginning of a JSON object with a pre-encoded property name as the key. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The depth of the JSON has exceeded the maximum depth of 1,000. +-or- +Validation is enabled, and this method would result in writing invalid JSON. + + + Writes a UTF-8 property name and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-8 property name and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-8 property name and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-8 property name and UTF-8 text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The UTF-8 encoded value to be written as a JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-8 property name and UTF-16 text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-8 property name and string text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the UTF-8 property name and pre-encoded value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-8 encoded property name of the JSON object to be written. + The JSON encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and this method would result in writing invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a read-only character span and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-16 property name and UTF-8 text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The UTF-8 encoded value to be written as a JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-16 property name and UTF-16 text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-16 property name and string text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the property name and pre-encoded value (as a JSON string) as part of a name/value pair of a JSON object. + The property name of the JSON object to be transcoded and written as UTF-8. + The JSON encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a property name specified as a string and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a UTF-8 text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The UTF-8 encoded value to be written as a JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a UTF-16 text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes a property name specified as a string and a string text value (as a JSON string) as part of a name/value pair of a JSON object. + The UTF-16 encoded property name of the JSON object to be transcoded and written as UTF-8. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name or value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes the property name and pre-encoded value (as a JSON string) as part of a name/value pair of a JSON object. + The property name of the JSON object to be transcoded and written as UTF-8. + The JSON encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified property name is too large. + Validation is enabled, and the write operation would produce invalid JSON. + The parameter is . + + + Writes the pre-encoded property name and value (as a JSON string) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON string) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the pre-encoded property name and value (as a JSON string) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a JSON string as part of the name/value pair. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the pre-encoded property name and UTF-8 text value (as a JSON string) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The UTF-8 encoded value to be written as a JSON string as part of the name/value pair. + The specified value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the pre-encoded property name and text value (as a JSON string) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the pre-encoded property name and string text value (as a JSON string) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + The specified value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the pre-encoded property name and pre-encoded value (as a JSON string) as part of a name/value pair of a JSON object. + The JSON encoded property name of the JSON object to be transcoded and written as UTF-8. + The JSON encoded value to be written as a UTF-8 transcoded JSON string as part of the name/value pair. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a value (as a JSON string) as an element of a JSON array. + The value to be written as a JSON string as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a value (as a JSON string) as an element of a JSON array. + The value to be written as a JSON string as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a value (as a JSON string) as an element of a JSON array. + The value to be written as a JSON string as an element of a JSON array. + Validation is enabled, and the operation would result in writing invalid JSON. + + + Writes a UTF-8 text value (as a JSON string) as an element of a JSON array. + The UTF-8 encoded value to be written as a JSON string element of a JSON array. + The specified value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a UTF-16 text value (as a JSON string) as an element of a JSON array. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string element of a JSON array. + The specified value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes a string text value (as a JSON string) as an element of a JSON array. + The UTF-16 encoded value to be written as a UTF-8 transcoded JSON string element of a JSON array. + The specified value is too large. + Validation is enabled, and the write operation would produce invalid JSON. + + + Writes the pre-encoded text value (as a JSON string) as an element of a JSON array. + The JSON encoded value to be written as a UTF-8 transcoded JSON string element of a JSON array. + Validation is enabled, and the write operation would produce invalid JSON. + + + \ No newline at end of file diff --git a/Assets/Packages/System.Text.Json.4.7.2/lib/netstandard2.0/System.Text.Json.xml.meta b/Assets/Packages/System.Text.Json.4.7.2/lib/netstandard2.0/System.Text.Json.xml.meta new file mode 100644 index 0000000..67bf482 --- /dev/null +++ b/Assets/Packages/System.Text.Json.4.7.2/lib/netstandard2.0/System.Text.Json.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8d17a57ff04be254189703bdfdc7c13a +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Text.Json.4.7.2/useSharedDesignerContext.txt b/Assets/Packages/System.Text.Json.4.7.2/useSharedDesignerContext.txt new file mode 100644 index 0000000..e69de29 diff --git a/Assets/Packages/System.Text.Json.4.7.2/useSharedDesignerContext.txt.meta b/Assets/Packages/System.Text.Json.4.7.2/useSharedDesignerContext.txt.meta new file mode 100644 index 0000000..829a6c6 --- /dev/null +++ b/Assets/Packages/System.Text.Json.4.7.2/useSharedDesignerContext.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9fda1a84cc0507f49be5776f388f294f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Text.Json.4.7.2/version.txt b/Assets/Packages/System.Text.Json.4.7.2/version.txt new file mode 100644 index 0000000..5175275 --- /dev/null +++ b/Assets/Packages/System.Text.Json.4.7.2/version.txt @@ -0,0 +1 @@ +c4164928b270ee2369808ab347d33423ef765216 diff --git a/Assets/Packages/System.Text.Json.4.7.2/version.txt.meta b/Assets/Packages/System.Text.Json.4.7.2/version.txt.meta new file mode 100644 index 0000000..f44603a --- /dev/null +++ b/Assets/Packages/System.Text.Json.4.7.2/version.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a4706c262500e1d44843edc7fdc48562 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Threading.Channels.5.0.0.meta b/Assets/Packages/System.Threading.Channels.5.0.0.meta new file mode 100644 index 0000000..c4ffecd --- /dev/null +++ b/Assets/Packages/System.Threading.Channels.5.0.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f442bfbdeadbbe49b56a33563354aac +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Threading.Channels.5.0.0/.signature.p7s b/Assets/Packages/System.Threading.Channels.5.0.0/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..83033348fdb273cd703404254d8e6767eda5e5e4 GIT binary patch literal 18702 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 literal 0 HcmV?d00001 diff --git a/Assets/Packages/System.Threading.Channels.5.0.0/Icon.png b/Assets/Packages/System.Threading.Channels.5.0.0/Icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f1fdbf4d5eae0e561018cccee74f6a454cdb9c GIT binary patch literal 7006 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 literal 0 HcmV?d00001 diff --git a/Assets/Packages/System.Threading.Channels.5.0.0/Icon.png.meta b/Assets/Packages/System.Threading.Channels.5.0.0/Icon.png.meta new file mode 100644 index 0000000..40b187a --- /dev/null +++ b/Assets/Packages/System.Threading.Channels.5.0.0/Icon.png.meta @@ -0,0 +1,156 @@ +fileFormatVersion: 2 +guid: 2b6b7b87878aec84585ce28bafcd5a01 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 2 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Threading.Channels.5.0.0/LICENSE.TXT b/Assets/Packages/System.Threading.Channels.5.0.0/LICENSE.TXT new file mode 100644 index 0000000..984713a --- /dev/null +++ b/Assets/Packages/System.Threading.Channels.5.0.0/LICENSE.TXT @@ -0,0 +1,23 @@ +The MIT License (MIT) + +Copyright (c) .NET Foundation and Contributors + +All rights reserved. + +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/Assets/Packages/System.Threading.Channels.5.0.0/LICENSE.TXT.meta b/Assets/Packages/System.Threading.Channels.5.0.0/LICENSE.TXT.meta new file mode 100644 index 0000000..81126b4 --- /dev/null +++ b/Assets/Packages/System.Threading.Channels.5.0.0/LICENSE.TXT.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: df41b55b8e37616479c2284dc9c5c946 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Threading.Channels.5.0.0/System.Threading.Channels.nuspec b/Assets/Packages/System.Threading.Channels.5.0.0/System.Threading.Channels.nuspec new file mode 100644 index 0000000..0b070a8 --- /dev/null +++ b/Assets/Packages/System.Threading.Channels.5.0.0/System.Threading.Channels.nuspec @@ -0,0 +1,49 @@ + + + + System.Threading.Channels + 5.0.0 + System.Threading.Channels + Microsoft + microsoft,dotnetframework + false + MIT + https://licenses.nuget.org/MIT + Icon.png + https://github.com/dotnet/runtime + http://go.microsoft.com/fwlink/?LinkID=288859 + Provides types for passing data between producers and consumers. + +Commonly Used Types: +System.Threading.Channel +System.Threading.Channel<T> + +When using NuGet 3.x this package requires at least version 3.4. + https://go.microsoft.com/fwlink/?LinkID=799421 + © Microsoft Corporation. All rights reserved. + true + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/System.Threading.Channels.5.0.0/System.Threading.Channels.nuspec.meta b/Assets/Packages/System.Threading.Channels.5.0.0/System.Threading.Channels.nuspec.meta new file mode 100644 index 0000000..10edfed --- /dev/null +++ b/Assets/Packages/System.Threading.Channels.5.0.0/System.Threading.Channels.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 791eb7ccaa5b1304fb1e34889f9235c0 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Threading.Channels.5.0.0/THIRD-PARTY-NOTICES.TXT b/Assets/Packages/System.Threading.Channels.5.0.0/THIRD-PARTY-NOTICES.TXT new file mode 100644 index 0000000..111dcf5 --- /dev/null +++ b/Assets/Packages/System.Threading.Channels.5.0.0/THIRD-PARTY-NOTICES.TXT @@ -0,0 +1,884 @@ +.NET Runtime uses third-party libraries or other resources that may be +distributed under licenses different than the .NET Runtime software. + +In the event that we accidentally failed to list a required notice, please +bring it to our attention. Post an issue or email us: + + dotnet@microsoft.com + +The attached notices are provided for information only. + +License notice for ASP.NET +------------------------------- + +Copyright (c) .NET Foundation. All rights reserved. +Licensed under the Apache License, Version 2.0. + +Available at +https://github.com/aspnet/AspNetCore/blob/master/LICENSE.txt + +License notice for Slicing-by-8 +------------------------------- + +http://sourceforge.net/projects/slicing-by-8/ + +Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + + +This software program is licensed subject to the BSD License, available at +http://www.opensource.org/licenses/bsd-license.html. + + +License notice for Unicode data +------------------------------- + +https://www.unicode.org/license.html + +Copyright © 1991-2020 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in https://www.unicode.org/copyright.html. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Unicode data files and any associated documentation +(the "Data Files") or Unicode software and any associated documentation +(the "Software") to deal in the Data Files or Software +without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, and/or sell copies of +the Data Files or Software, and to permit persons to whom the Data Files +or Software are furnished to do so, provided that either +(a) this copyright and permission notice appear with all copies +of the Data Files or Software, or +(b) this copyright and permission notice appear in associated +Documentation. + +THE DATA FILES AND SOFTWARE ARE 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 OF THIRD PARTY RIGHTS. +IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS +NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL +DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, +DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THE DATA FILES OR SOFTWARE. + +Except as contained in this notice, the name of a copyright holder +shall not be used in advertising or otherwise to promote the sale, +use or other dealings in these Data Files or Software without prior +written authorization of the copyright holder. + +License notice for Zlib +----------------------- + +https://github.com/madler/zlib +http://zlib.net/zlib_license.html + +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.11, January 15th, 2017 + + Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +*/ + +License notice for Mono +------------------------------- + +http://www.mono-project.com/docs/about-mono/ + +Copyright (c) .NET Foundation Contributors + +MIT License + +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. + +License notice for International Organization for Standardization +----------------------------------------------------------------- + +Portions (C) International Organization for Standardization 1986: + Permission to copy in any form is granted for use with + conforming SGML systems and applications as defined in + ISO 8879, provided this notice is included in all copies. + +License notice for Intel +------------------------ + +"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Xamarin and Novell +------------------------------------- + +Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com) + +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. + +Copyright (c) 2011 Novell, Inc (http://www.novell.com) + +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. + +Third party notice for W3C +-------------------------- + +"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE +Status: This license takes effect 13 May, 2015. +This work is being provided by the copyright holders under the following license. +License +By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. +Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications: +The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. +Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included. +Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)." +Disclaimers +THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. +COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT. +The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders." + +License notice for Bit Twiddling Hacks +-------------------------------------- + +Bit Twiddling Hacks + +By Sean Eron Anderson +seander@cs.stanford.edu + +Individually, the code snippets here are in the public domain (unless otherwise +noted) — feel free to use them however you please. The aggregate collection and +descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are +distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and +without even the implied warranty of merchantability or fitness for a particular +purpose. + +License notice for Brotli +-------------------------------------- + +Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors. + +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. + +compress_fragment.c: +Copyright (c) 2011, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +decode_fuzzer.c: +Copyright (c) 2015 The Chromium Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." + +License notice for Json.NET +------------------------------- + +https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md + +The MIT License (MIT) + +Copyright (c) 2007 James Newton-King + +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. + +License notice for vectorized base64 encoding / decoding +-------------------------------------------------------- + +Copyright (c) 2005-2007, Nick Galbreath +Copyright (c) 2013-2017, Alfred Klomp +Copyright (c) 2015-2017, Wojciech Mula +Copyright (c) 2016-2017, Matthieu Darbois +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +- Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for RFC 3492 +--------------------------- + +The punycode implementation is based on the sample code in RFC 3492 + +Copyright (C) The Internet Society (2003). All Rights Reserved. + +This document and translations of it may be copied and furnished to +others, and derivative works that comment on or otherwise explain it +or assist in its implementation may be prepared, copied, published +and distributed, in whole or in part, without restriction of any +kind, provided that the above copyright notice and this paragraph are +included on all such copies and derivative works. However, this +document itself may not be modified in any way, such as by removing +the copyright notice or references to the Internet Society or other +Internet organizations, except as needed for the purpose of +developing Internet standards in which case the procedures for +copyrights defined in the Internet Standards process must be +followed, or as required to translate it into languages other than +English. + +The limited permissions granted above are perpetual and will not be +revoked by the Internet Society or its successors or assigns. + +This document and the information contained herein is provided on an +"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING +TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING +BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION +HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF +MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +License notice for Algorithm from Internet Draft document "UUIDs and GUIDs" +--------------------------------------------------------------------------- + +Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc. +Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & +Digital Equipment Corporation, Maynard, Mass. +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: permission to use, copy, +modify, and distribute this file for any purpose is hereby +granted without fee, provided that the above copyright notices and +this notice appears in all source code copies, and that none of +the names of Open Software Foundation, Inc., Hewlett-Packard +Company, or Digital Equipment Corporation be used in advertising +or publicity pertaining to distribution of the software without +specific, written prior permission. Neither Open Software +Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital Equipment +Corporation makes any representations about the suitability of +this software for any purpose. + +Copyright(C) The Internet Society 1997. All Rights Reserved. + +This document and translations of it may be copied and furnished to others, +and derivative works that comment on or otherwise explain it or assist in +its implementation may be prepared, copied, published and distributed, in +whole or in part, without restriction of any kind, provided that the above +copyright notice and this paragraph are included on all such copies and +derivative works.However, this document itself may not be modified in any +way, such as by removing the copyright notice or references to the Internet +Society or other Internet organizations, except as needed for the purpose of +developing Internet standards in which case the procedures for copyrights +defined in the Internet Standards process must be followed, or as required +to translate it into languages other than English. + +The limited permissions granted above are perpetual and will not be revoked +by the Internet Society or its successors or assigns. + +This document and the information contained herein is provided on an "AS IS" +basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE +DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY +RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A +PARTICULAR PURPOSE. + +License notice for Algorithm from RFC 4122 - +A Universally Unique IDentifier (UUID) URN Namespace +---------------------------------------------------- + +Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc. +Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & +Digital Equipment Corporation, Maynard, Mass. +Copyright (c) 1998 Microsoft. +To anyone who acknowledges that this file is provided "AS IS" +without any express or implied warranty: permission to use, copy, +modify, and distribute this file for any purpose is hereby +granted without fee, provided that the above copyright notices and +this notice appears in all source code copies, and that none of +the names of Open Software Foundation, Inc., Hewlett-Packard +Company, Microsoft, or Digital Equipment Corporation be used in +advertising or publicity pertaining to distribution of the software +without specific, written prior permission. Neither Open Software +Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital +Equipment Corporation makes any representations about the +suitability of this software for any purpose." + +License notice for The LLVM Compiler Infrastructure +--------------------------------------------------- + +Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal with +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: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + +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 +CONTRIBUTORS 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 WITH THE +SOFTWARE. + +License notice for Bob Jenkins +------------------------------ + +By Bob Jenkins, 1996. bob_jenkins@burtleburtle.net. You may use this +code any way you wish, private, educational, or commercial. It's free. + +License notice for Greg Parker +------------------------------ + +Greg Parker gparker@cs.stanford.edu December 2000 +This code is in the public domain and may be copied or modified without +permission. + +License notice for libunwind based code +---------------------------------------- + +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. + +License notice for Printing Floating-Point Numbers (Dragon4) +------------------------------------------------------------ + +/****************************************************************************** + Copyright (c) 2014 Ryan Juckett + http://www.ryanjuckett.com/ + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. +******************************************************************************/ + +License notice for Printing Floating-point Numbers (Grisu3) +----------------------------------------------------------- + +Copyright 2012 the V8 project authors. All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for xxHash +------------------------- + +xxHash Library +Copyright (c) 2012-2014, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Berkeley SoftFloat Release 3e +------------------------------------------------ + +https://github.com/ucb-bar/berkeley-softfloat-3 +https://github.com/ucb-bar/berkeley-softfloat-3/blob/master/COPYING.txt + +License for Berkeley SoftFloat Release 3e + +John R. Hauser +2018 January 20 + +The following applies to the whole of SoftFloat Release 3e as well as to +each source file individually. + +Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the +University of California. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions, and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions, and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE +DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Xorshift RNGs +-------------------------------- + +George Marsaglia +2003-07-04 +Journal of Statistical Software +License: http://creativecommons.org/licenses/by/3.0/ + +https://www.jstatsoft.org/article/view/v008i14 +https://www.jstatsoft.org/index.php/jss/article/view/v008i14/xorshift.pdf + +License notice for Xorshift (Wikipedia) +--------------------------------------- + +https://en.wikipedia.org/wiki/Xorshift +License: https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License + +License for fastmod (https://github.com/lemire/fastmod) +-------------------------------------- + + Copyright 2018 Daniel Lemire + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + 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, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +License notice for The C++ REST SDK +----------------------------------- + +C++ REST SDK + +The MIT License (MIT) + +Copyright (c) Microsoft Corporation + +All rights reserved. + +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. + +License notice for MessagePack-CSharp +------------------------------------- + +MessagePack for C# + +MIT License + +Copyright (c) 2017 Yoshifumi Kawai + +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. + +License notice for lz4net +------------------------------------- + +lz4net + +Copyright (c) 2013-2017, Milosz Krajewski + +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License notice for Nerdbank.Streams +----------------------------------- + +The MIT License (MIT) + +Copyright (c) Andrew Arnott + +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. + +License notice for RapidJSON +---------------------------- + +Tencent is pleased to support the open source community by making RapidJSON available. + +Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. + +Licensed under the MIT License (the "License"); you may not use this file except +in compliance with the License. You may obtain a copy of the License at + +http://opensource.org/licenses/MIT + +Unless required by applicable law or agreed to in writing, software distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the License for the +specific language governing permissions and limitations under the License. + +License notice for DirectX Math Library +--------------------------------------- + +https://github.com/microsoft/DirectXMath/blob/master/LICENSE + + The MIT License (MIT) + +Copyright (c) 2011-2020 Microsoft Corp + +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. + +License notice for ldap4net +--------------------------- + +The MIT License (MIT) + +Copyright (c) 2018 Alexander Chermyanin + +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. + +License notice for vectorized sorting code +------------------------------------------ + +MIT License + +Copyright (c) 2020 Dan Shechter + +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/Assets/Packages/System.Threading.Channels.5.0.0/THIRD-PARTY-NOTICES.TXT.meta b/Assets/Packages/System.Threading.Channels.5.0.0/THIRD-PARTY-NOTICES.TXT.meta new file mode 100644 index 0000000..e70b8e7 --- /dev/null +++ b/Assets/Packages/System.Threading.Channels.5.0.0/THIRD-PARTY-NOTICES.TXT.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c6809af88d0161241b3e396d883e31fb +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Threading.Channels.5.0.0/lib.meta b/Assets/Packages/System.Threading.Channels.5.0.0/lib.meta new file mode 100644 index 0000000..b2b7ec3 --- /dev/null +++ b/Assets/Packages/System.Threading.Channels.5.0.0/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cb28527eaef80814b9e392f624efad48 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Threading.Channels.5.0.0/lib/netstandard2.1.meta b/Assets/Packages/System.Threading.Channels.5.0.0/lib/netstandard2.1.meta new file mode 100644 index 0000000..b55fbc5 --- /dev/null +++ b/Assets/Packages/System.Threading.Channels.5.0.0/lib/netstandard2.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f8d53160692698c4484f9e7c25ee4090 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Threading.Channels.5.0.0/lib/netstandard2.1/System.Threading.Channels.dll b/Assets/Packages/System.Threading.Channels.5.0.0/lib/netstandard2.1/System.Threading.Channels.dll new file mode 100644 index 0000000000000000000000000000000000000000..70aa5b64d2e242bca91f5a874a1668aa772d02e3 GIT binary patch literal 51592 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 pgRul=6KL{z_b@dW??BKPeSd}X_*QTLl zht-_=hJrJ=#rlJe+bmXGMB@88q#puu|5)m}aE3TMl}q^KDU zmW0ta4%3SlRU5&mkauMsOYuZe)RI3?l)#;Kn7p|vE*fg*p0603S{D0Z#(8O1^y({b zmK`Eux=#vT*8%$eug6!iHxpbou%(!{rL$uTDP}l3IW)hugGsb)l|_$d^4#yT(x;B{ zHZkagd5se%wb@#v-KfX&Vn2{>~N=}G;=X*x_i@N{FU690IAONQZ5SyofQT$;DgTN3%f_NBv zvdio~S-xv*7JYk#^W$Uh`p2q^KYr9Hr7=%ZOWeh=t2nPw2PRV=p68#rV@}6oFEWS_ z(UmgR+ddP5Vz_C4A;N`>BJ~@5DGWz{ZFJnpxo<{6+OOI=T+#ioM(P(1$&qThS5!Qw zeU4FfAANcPa!k@NI;FBaA=o6TmhRx8VhmSK^oWEqsu!?Lv`3d-!rW~;<+GcQN)4-fx7~|O%5+i0WZmCjx*62pg)o+0*b6q5#-c$sI z-MebE;41bc`}D13x!Ig#1lQ#Rh!g%2bsqj{sBpr}+pH!l^IQC*AbK?OK}0?3<3=R(27yo@Fu-f}^?A*jSS} zo=_s=PTB*OWq>B#$3syOrW(}G^{cQH73#0gUwh^cm-Zjwu&ihsKpl8u8~mr_!K_46kgEcgDuL2t{7Zv;JA2`TCSRM7iH-Jk`} zA;vlId5u*#XlC%|0DS!KTsR(3+Khjo3rGJl#2V@8u3K;oBNNodD-ZvI2R8zz?Z10) z;*yiUd zdwm@*oZ#_n&boX_@pD*6%Hf2-0?+Q@tWO+Yv3*Gkt@((Q$h^9XtT*85;Z>EmOkON^ zrNEfe)Y3wIsH3F-U9hB_`LRpBSIA=MqIcHV7c#VG^wH{M;95E#7k18sgwGBu_)-qq z2Bh&)*uN|_;`FZjI7~7)jwa7LFTdoh6ZmeqXwTK90l!dt5AWl}`1V4|YjSs{THE^w zH~k)SEL5F>aN@qOMT?rsm0Q1TqcKYlKJBkS@itB3ee965B%{b;1Ikp0XQ}O)!As$) zvf}=f@?iK6W%1XVqd!V_(+gVtM zOSVhZ*;nyRMdFvlf)-&a@tHz!(eTs^OOL2T_;|AtL7Q@XgiXU=TXc-Z-Ues7BqXcy ztkF&(H&vj@v(%G~**m(<9~W z#bdGgeeO#giIMG$og`V=0RHo~3ZN)7{yl&n2k>tId>x#d?c6&(#z>CCJ6B2fC09t_ zGR4*;a6Hnz!nHahInAfc3*giK3x>ka8x90#n(n8Tt>t3iT2fXBWoN4Dm}QqcpQhY~ zP)@L}^bih8Vd&5|Q?84+gI08B){8h0-! + + + System.Threading.Channels + + + + Specifies the behavior to use when writing to a bounded channel that is already full. + + + Removes and ignores the newest item in the channel in order to make room for the item being written. + + + Removes and ignores the oldest item in the channel in order to make room for the item being written. + + + Drops the item being written. + + + Waits for space to be available in order to complete the write operation. + + + Provides options that control the behavior of bounded instances. + + + Initializes the options. + The maximum number of items the bounded channel may store. + + + Gets or sets the maximum number of items the bounded channel may store. + + + Gets or sets the behavior incurred by write operations when the channel is full. + + + Provides static methods for creating channels. + + + Creates a channel with the specified maximum capacity. + The maximum number of items the channel may store. + Specifies the type of data in the channel. + The created channel. + + + Creates a channel with the specified maximum capacity. + Options that guide the behavior of the channel. + Specifies the type of data in the channel. + The created channel. + + + Creates an unbounded channel usable by any number of readers and writers concurrently. + The type of data in the channel. + The created channel. + + + Creates an unbounded channel subject to the provided options. + Options that guide the behavior of the channel. + Specifies the type of data in the channel. + The created channel. + + + Provides a base class for channels that support reading and writing elements of type . + Specifies the type of data readable and writable in the channel. + + + Initializes an instance of the class. + + + Provides a base class for channels that support reading elements of type and writing elements of type . + Specifies the type of data that may be written to the channel. + Specifies the type of data that may be read from the channel. + + + Initializes an instance of the class. + + + Implicit cast from a to its readable half. + The being cast. + The readable half. + + + Implicit cast from a to its writable half. + The being cast. + The writable half. + + + Gets the readable half of this channel. + + + Gets the writable half of this channel. + + + Exception thrown when a channel is used after it's been closed. + + + Initializes a new instance of the class. + + + Initializes a new instance of the class. + The exception that is the cause of this exception. + + + Initializes a new instance of the class with serialized data. + The object that holds the serialized object data. + The contextual information about the source or destination. + + + Initializes a new instance of the class. + The message that describes the error. + + + Initializes a new instance of the class. + The message that describes the error. + The exception that is the cause of this exception. + + + Provides options that control the behavior of channel instances. + + + Initializes an instance of the class. + + + + if operations performed on a channel may synchronously invoke continuations subscribed to + notifications of pending async operations; if all continuations should be invoked asynchronously. + + + + readers from the channel guarantee that there will only ever be at most one read operation at a time; + if no such constraint is guaranteed. + + + + if writers to the channel guarantee that there will only ever be at most one write operation + at a time; if no such constraint is guaranteed. + + + Provides a base class for reading from a channel. + Specifies the type of data that may be read from the channel. + + + Initializes an instance of the class. + + + Creates an that enables reading all of the data from the channel. + The cancellation token to use to cancel the enumeration. + The created async enumerable. + + + Asynchronously reads an item from the channel. + A used to cancel the read operation. + A that represents the asynchronous read operation. + + + Attempts to read an item from the channel. + The read item, or a default value if no item could be read. + + if an item was read; otherwise, . + + + Returns a that will complete when data is available to read. + A used to cancel the wait operation. + + A that will complete with a result when data is available to read + or with a result when no further data will ever be available to be read due to the channel completing successfully. + If the channel completes with an exception, the task will also complete with an exception. + + + + Gets a value that indicates whether is available for use on this instance. + + + Gets a that completes when no more data will ever + be available to be read from this channel. + + + Gets the current number of items available from this channel reader. + Counting is not supported on this instance. + + + Provides a base class for writing to a channel. + Specifies the type of data that may be written to the channel. + + + Initializes an instance of the class. + + + Mark the channel as being complete, meaning no more items will be written to it. + Optional Exception indicating a failure that's causing the channel to complete. + The channel has already been marked as complete. + + + Attempts to mark the channel as being completed, meaning no more data will be written to it. + An indicating the failure causing no more data to be written, or null for success. + + if this operation successfully completes the channel; otherwise, if the channel could not be marked for completion, + for example due to having already been marked as such, or due to not supporting completion. + . + + + Attempts to write the specified item to the channel. + The item to write. + + if the item was written; otherwise, . + + + Returns a that will complete when space is available to write an item. + A used to cancel the wait operation. + A that will complete with a result when space is available to write an item + or with a result when no further writing will be permitted. + + + Asynchronously writes an item to the channel. + The value to write to the channel. + A used to cancel the write operation. + A that represents the asynchronous write operation. + + + Provides options that control the behavior of unbounded instances. + + + Initializes a new instance of the class. + + + \ No newline at end of file diff --git a/Assets/Packages/System.Threading.Channels.5.0.0/lib/netstandard2.1/System.Threading.Channels.xml.meta b/Assets/Packages/System.Threading.Channels.5.0.0/lib/netstandard2.1/System.Threading.Channels.xml.meta new file mode 100644 index 0000000..8ae4212 --- /dev/null +++ b/Assets/Packages/System.Threading.Channels.5.0.0/lib/netstandard2.1/System.Threading.Channels.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: aabf8cb550f8b5c45be443550d9cf7ba +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Threading.Channels.5.0.0/useSharedDesignerContext.txt b/Assets/Packages/System.Threading.Channels.5.0.0/useSharedDesignerContext.txt new file mode 100644 index 0000000..e69de29 diff --git a/Assets/Packages/System.Threading.Channels.5.0.0/useSharedDesignerContext.txt.meta b/Assets/Packages/System.Threading.Channels.5.0.0/useSharedDesignerContext.txt.meta new file mode 100644 index 0000000..8ebac6c --- /dev/null +++ b/Assets/Packages/System.Threading.Channels.5.0.0/useSharedDesignerContext.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4c07d829604facc4b94ba286648fb82d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/System.Threading.Channels.5.0.0/version.txt b/Assets/Packages/System.Threading.Channels.5.0.0/version.txt new file mode 100644 index 0000000..0a6d216 --- /dev/null +++ b/Assets/Packages/System.Threading.Channels.5.0.0/version.txt @@ -0,0 +1 @@ +cf258a14b70ad9069470a108f13765e0e5988f51 diff --git a/Assets/Packages/System.Threading.Channels.5.0.0/version.txt.meta b/Assets/Packages/System.Threading.Channels.5.0.0/version.txt.meta new file mode 100644 index 0000000..3a28333 --- /dev/null +++ b/Assets/Packages/System.Threading.Channels.5.0.0/version.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 91af31e938c3ad04883dbfb788dad5d5 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Websocket.Client.4.6.1.meta b/Assets/Packages/Websocket.Client.4.6.1.meta new file mode 100644 index 0000000..1d24b15 --- /dev/null +++ b/Assets/Packages/Websocket.Client.4.6.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 285aaadc092a63f44ac8171ae00ae139 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Websocket.Client.4.6.1/.signature.p7s b/Assets/Packages/Websocket.Client.4.6.1/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..e06832004d1d7434307a136a05598ceef7dd6ee1 GIT binary patch literal 11512 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 + Log.Information($"Reconnection happened, type: {info.Type}")); + + client.MessageReceived.Subscribe(msg => Log.Information($"Message received: {msg}")); + client.Start(); + + Task.Run(() => client.Send("{ message }")); + + exitEvent.WaitOne(); +} +``` + +More usage examples: +* integration tests ([link](test_integration/Websocket.Client.Tests.Integration)) +* console sample ([link](test_integration/Websocket.Client.Sample/Program.cs)) +* .net framework sample ([link](test_integration/Websocket.Client.Sample.NetFramework)) +* blazor sample ([link](test_integration/Websocket.Client.Sample.Blazor)) + + +**Pull Requests are welcome!** + +### Advanced configuration + +To set some advanced configurations, which are available on the native `ClientWebSocket` class, +you have to provide the factory method as a second parameter to WebsocketClient. +That factory method will be called on every reconnection to get a new instance of the `ClientWebSocket`. + +```csharp +var factory = new Func(() => new ClientWebSocket +{ + Options = + { + KeepAliveInterval = TimeSpan.FromSeconds(5), + Proxy = ... + ClientCertificates = ... + } +}); + +var client = new WebsocketClient(url, factory); +client.Start(); +``` + +Also, you can access the current native class via `client.NativeClient`. +But use it with caution, on every reconnection there will be a new instance. + +#### Change URL on the fly + +It is possible to change the remote server URL dynamically. Example: + +```chsarp +client.Url = new Uri("wss://my_new_url");; +await client.Reconnect(); +``` + + +### Reconnecting + +A built-in reconnection invokes after 1 minute (default) of not receiving any messages from the server. +It is possible to configure that timeout via `communicator.ReconnectTimeout`. +Also, a stream `ReconnectionHappened` sends information about a type of reconnection. +However, if you are subscribed to low-rate channels, you will likely encounter that timeout - higher it to a few minutes or implement `ping-pong` interaction on your own every few seconds. + +In the case of a remote server outage, there is a built-in functionality that slows down reconnection requests +(could be configured via `client.ErrorReconnectTimeout`, the default is 1 minute). + +Beware that you **need to resubscribe to channels** after reconnection happens. You should subscribe to `ReconnectionHappened` stream and send subscription requests. + + +### Multi-threading + +Observables from Reactive Extensions are single threaded by default. It means that your code inside subscriptions is called synchronously and as soon as the message comes from websocket API. It brings a great advantage of not to worry about synchronization, but if your code takes a longer time to execute it will block the receiving method, buffer the messages and may end up losing messages. For that reason consider to handle messages on the other thread and unblock receiving thread as soon as possible. I've prepared a few examples for you: + +#### Default behavior + +Every subscription code is called on a main websocket thread. Every subscription is synchronized together. No parallel execution. It will block the receiving thread. + +```csharp +client + .MessageReceived + .Where(msg => msg.Text != null) + .Where(msg => msg.Text.StartsWith("{")) + .Subscribe(obj => { code1 }); + +client + .MessageReceived + .Where(msg => msg.Text != null) + .Where(msg => msg.Text.StartsWith("[")) + .Subscribe(arr => { code2 }); + +// 'code1' and 'code2' are called in a correct order, according to websocket flow +// ----- code1 ----- code1 ----- ----- code1 +// ----- ----- code2 ----- code2 code2 ----- +``` + +#### Parallel subscriptions + +Every single subscription code is called on a separate thread. Every single subscription is synchronized, but different subscriptions are called in parallel. + +```csharp +client + .MessageReceived + .Where(msg => msg.Text != null) + .Where(msg => msg.Text.StartsWith("{")) + .ObserveOn(TaskPoolScheduler.Default) + .Subscribe(obj => { code1 }); + +client + .MessageReceived + .Where(msg => msg.Text != null) + .Where(msg => msg.Text.StartsWith("[")) + .ObserveOn(TaskPoolScheduler.Default) + .Subscribe(arr => { code2 }); + +// 'code1' and 'code2' are called in parallel, do not follow websocket flow +// ----- code1 ----- code1 ----- code1 ----- +// ----- code2 code2 ----- code2 code2 code2 +``` + + #### Parallel subscriptions with synchronization + +In case you want to run your subscription code on the separate thread but still want to follow websocket flow through every subscription, use synchronization with gates: + +```csharp +private static readonly object GATE1 = new object(); +client + .MessageReceived + .Where(msg => msg.Text != null) + .Where(msg => msg.Text.StartsWith("{")) + .ObserveOn(TaskPoolScheduler.Default) + .Synchronize(GATE1) + .Subscribe(obj => { code1 }); + +client + .MessageReceived + .Where(msg => msg.Text != null) + .Where(msg => msg.Text.StartsWith("[")) + .ObserveOn(TaskPoolScheduler.Default) + .Synchronize(GATE1) + .Subscribe(arr => { code2 }); + +// 'code1' and 'code2' are called concurrently and follow websocket flow +// ----- code1 ----- code1 ----- ----- code1 +// ----- ----- code2 ----- code2 code2 ---- +``` + +### Async/Await integration + +Using `async/await` in your subscribe methods is a bit tricky. Subscribe from Rx.NET doesn't `await` tasks, +so it won't block stream execution and cause sometimes undesired concurrency. For example: + +```csharp +client + .MessageReceived + .Subscribe(async msg => { + // do smth 1 + await Task.Delay(5000); // waits 5 sec, could be HTTP call or something else + // do smth 2 + }); +``` + +That `await Task.Delay` won't block stream and subscribe method will be called multiple times concurrently. +If you want to buffer messages and process them one-by-one, then use this: + +```csharp +client + .MessageReceived + .Select(msg => Observable.FromAsync(async () => { + // do smth 1 + await Task.Delay(5000); // waits 5 sec, could be HTTP call or something else + // do smth 2 + })) + .Concat() // executes sequentially + .Subscribe(); +``` + +If you want to process them concurrently (avoid synchronization), then use this + +```csharp +client + .MessageReceived + .Select(msg => Observable.FromAsync(async () => { + // do smth 1 + await Task.Delay(5000); // waits 5 sec, could be HTTP call or something else + // do smth 2 + })) + .Merge() // executes concurrently + // .Merge(4) you can limit concurrency with a parameter + // .Merge(1) is same as .Concat() (sequentially) + // .Merge(0) is invalid (throws exception) + .Subscribe(); +``` + +More info on [Github issue](https://github.com/dotnet/reactive/issues/459). + +Don't worry about websocket connection, those sequential execution via `.Concat()` or `.Merge(1)` has no effect on receiving messages. +It won't affect receiving thread, only buffers messages inside `MessageReceived` stream. + +But beware of [producer-consumer problem](https://en.wikipedia.org/wiki/Producer%E2%80%93consumer_problem) when the consumer will be too slow. Here is a [StackOverflow issue](https://stackoverflow.com/questions/11010602/with-rx-how-do-i-ignore-all-except-the-latest-value-when-my-subscribe-method-is/15876519#15876519) +with an example how to ignore/discard buffered messages and always process only the last one. + + +### Available for help +I do consulting, please don't hesitate to contact me if you have a custom solution you would like me to implement ([web](http://mkotas.cz/), +) diff --git a/Assets/Packages/Websocket.Client.4.6.1/README.md.meta b/Assets/Packages/Websocket.Client.4.6.1/README.md.meta new file mode 100644 index 0000000..554bc08 --- /dev/null +++ b/Assets/Packages/Websocket.Client.4.6.1/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 13cf276545c6c7c4b8f4cbf3316fbb53 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Websocket.Client.4.6.1/Websocket.Client.nuspec b/Assets/Packages/Websocket.Client.4.6.1/Websocket.Client.nuspec new file mode 100644 index 0000000..eee2f6e --- /dev/null +++ b/Assets/Packages/Websocket.Client.4.6.1/Websocket.Client.nuspec @@ -0,0 +1,37 @@ + + + + Websocket.Client + 4.6.1 + Mariusz Kotas + MIT + https://licenses.nuget.org/MIT + icon.png + README.md + https://github.com/Marfusios/websocket-client + https://raw.githubusercontent.com/Marfusios/websocket-client/master/src/Websocket.Client/icon.png + Client for websocket API with built-in reconnection and error handling + Enhancements + Copyright 2023 Mariusz Kotas. All rights reserved. + websockets websocket client + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/Websocket.Client.4.6.1/Websocket.Client.nuspec.meta b/Assets/Packages/Websocket.Client.4.6.1/Websocket.Client.nuspec.meta new file mode 100644 index 0000000..5158ee1 --- /dev/null +++ b/Assets/Packages/Websocket.Client.4.6.1/Websocket.Client.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b0a40d397b6c83c44b8179ec6be682af +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Websocket.Client.4.6.1/icon.png b/Assets/Packages/Websocket.Client.4.6.1/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..07a610c24ee0a18bb26e0313b35e7b83f71f847d GIT binary patch literal 5481 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 bzkgyB*y`X{bCvqSzJFqP{RW-?ClvVKTZWZq literal 0 HcmV?d00001 diff --git a/Assets/Packages/Websocket.Client.4.6.1/lib/netstandard2.1/Websocket.Client.dll.meta b/Assets/Packages/Websocket.Client.4.6.1/lib/netstandard2.1/Websocket.Client.dll.meta new file mode 100644 index 0000000..aea3501 --- /dev/null +++ b/Assets/Packages/Websocket.Client.4.6.1/lib/netstandard2.1/Websocket.Client.dll.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: 1446a3d68011acc468dc42a4011fd0a1 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 3 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/Websocket.Client.4.6.1/lib/netstandard2.1/Websocket.Client.xml b/Assets/Packages/Websocket.Client.4.6.1/lib/netstandard2.1/Websocket.Client.xml new file mode 100644 index 0000000..cf99b33 --- /dev/null +++ b/Assets/Packages/Websocket.Client.4.6.1/lib/netstandard2.1/Websocket.Client.xml @@ -0,0 +1,1262 @@ + + + + Websocket.Client + + + + + Custom exception that indicates bad user/client input + + + + + + + + + + + + + + Custom exception related to WebsocketClient + + + + + + + + + + + + + + A simple websocket client with built-in reconnection and error handling + + + + + Get or set target websocket url + + + + + Stream with received message (raw format) + + + + + Stream for reconnection event (triggered after the new connection) + + + + + Stream for disconnection event (triggered after the connection was lost) + + + + + Time range in ms, how long to wait before reconnecting if no message comes from server. + Set null to disable this feature. + Default: 1 minute. + + + + + Time range in ms, how long to wait before reconnecting if last reconnection failed. + Set null to disable this feature. + Default: 1 minute. + + + + + Get or set the name of the current websocket client instance. + For logging purpose (in case you use more parallel websocket clients and want to distinguish between them) + + + + + Returns true if Start() method was called at least once. False if not started or disposed + + + + + Returns true if client is running and connected to the server + + + + + Enable or disable reconnection functionality (enabled by default) + + + + + Enable or disable text message conversion from binary to string (via 'MessageEncoding' property). + Default: true + + + + + Returns currently used native websocket client. + Use with caution, on every reconnection there will be a new instance. + + + + + Sets used encoding for sending and receiving text messages. + Default: UTF8 + + + + + Start listening to the websocket stream on the background thread. + In case of connection error it doesn't throw an exception. + Only streams a message via 'DisconnectionHappened' and logs it. + + + + + Start listening to the websocket stream on the background thread. + In case of connection error it throws an exception. + Fail fast approach. + + + + + Stop/close websocket connection with custom close code. + Method doesn't throw exception, only logs it and mark client as closed. + + Returns true if close was initiated successfully + + + + Stop/close websocket connection with custom close code. + Method could throw exceptions, but client is marked as closed anyway. + + Returns true if close was initiated successfully + + + + Send message to the websocket channel. + It inserts the message to the queue and actual sending is done on an other thread + + Message to be sent + + + + Send binary message to the websocket channel. + It inserts the message to the queue and actual sending is done on an other thread + + Binary message to be sent + + + + Send binary message to the websocket channel. + It inserts the message to the queue and actual sending is done on an other thread + + Binary message to be sent + + + + Send message to the websocket channel. + It doesn't use a sending queue, + beware of issue while sending two messages in the exact same time + on the full .NET Framework platform + + Message to be sent + + + + Send binary message to the websocket channel. + It doesn't use a sending queue, + beware of issue while sending two messages in the exact same time + on the full .NET Framework platform + + Message to be sent + + + + Force reconnection. + Closes current websocket stream and perform a new connection to the server. + In case of connection error it doesn't throw an exception, but tries to reconnect indefinitely. + + + + + Force reconnection. + Closes current websocket stream and perform a new connection to the server. + In case of connection error it throws an exception and doesn't perform any other reconnection try. + + + + + Stream/publish fake message (via 'MessageReceived' observable). + Use for testing purposes to simulate a server message. + + Message to be stream + + + + Info about happened disconnection + + + + + + + + Disconnection reason + + + + + Indicates the reason why the remote endpoint initiated the close handshake + + + + + Allows the remote endpoint to describe the reason why the connection was closed + + + + + The subprotocol that was negotiated during the opening handshake + + + + + Exception that cause disconnection, can be null + + + + + Set to true if you want to cancel ongoing reconnection + + + + + Set to true if you want to cancel ongoing connection close (only when Type = ByServer) + + + + + Simple factory method + + + + + Type that specify happened disconnection + + + + + Type used for exit event, disposing of the websocket client + + + + + Type used when connection to websocket was lost in meantime + + + + + Type used when connection to websocket was lost by not receiving any message in given time-range + + + + + Type used when connection or reconnection returned error + + + + + Type used when disconnection was requested by user + + + + + Type used when disconnection was requested by server + + + + + Info about happened reconnection + + + + + + + + Reconnection reason + + + + + Simple factory method + + + + + Type that specify happened reconnection + + + + + Type used for initial connection to websocket stream + + + + + Type used when connection to websocket was lost in meantime + + + + + Type used when connection to websocket was lost by not receiving any message in given time-range + + + + + Type used after unsuccessful previous reconnection + + + + + Type used when reconnection was requested by user + + + + + Type used when reconnection was requested by server + + + + + Received message, could be Text or Binary + + + + + Received text message (only if type = WebSocketMessageType.Text) + + + + + Received text message (only if type = WebSocketMessageType.Binary) + + + + + Current message type (Text or Binary) + + + + + Return string info about the message + + + + + Create text response message + + + + + Create binary response message + + + + + Class that wraps SemaphoreSlim and enables to use locking inside 'using' blocks easily + Don't need to bother with releasing and handling SemaphoreSlim correctly + Example: + + using(await _asyncLock.LockAsync()) + { + // do your synchronized work + } + + + + + + Class that wraps SemaphoreSlim and enables to use locking inside 'using' blocks easily + Don't need to bother with releasing and handling SemaphoreSlim correctly + + + + + Use inside 'using' block + + + + + Use inside 'using' block with await + + + + + It throws if value is null or empty/white spaces + + The value to be validated + Input parameter name + + + + It throws if value is null + + The value to be validated + Input parameter name + + + + It throws if collection is null or collection is empty + + The collection to be validated + Input parameter name + + + + It throws if value is not in specified range + + The value to be validated + Input parameter name + Minimal value of input + Maximum value of input + + + + It throws if value is not in specified range + + The value to be validated + Input parameter name + Minimal value of input + Maximum value of input + + + + It throws if value is not in specified range + + The value to be validated + Input parameter name + Minimal value of input + Maximum value of input + + + + A simple websocket client with built-in reconnection and error handling + + + + + A simple websocket client with built-in reconnection and error handling + + Target websocket url (wss://) + Optional factory for native ClientWebSocket, use it whenever you need some custom features (proxy, settings, etc) + + + + A simple websocket client with built-in reconnection and error handling + + Target websocket url (wss://) + Optional factory for native creating and connecting to a websocket. The method should return a which is connected. Use it whenever you need some custom features (proxy, settings, etc) + + + + + + + Stream with received message (raw format) + + + + + Stream for reconnection event (triggered after the new connection) + + + + + Stream for disconnection event (triggered after the connection was lost) + + + + + Time range in ms, how long to wait before reconnecting if no message comes from server. + Set null to disable this feature. + Default: 1 minute + + + + + Time range in ms, how long to wait before reconnecting if last reconnection failed. + Set null to disable this feature. + Default: 1 minute + + + + + Enable or disable reconnection functionality (enabled by default) + + + + + Get or set the name of the current websocket client instance. + For logging purpose (in case you use more parallel websocket clients and want to distinguish between them) + + + + + Returns true if Start() method was called at least once. False if not started or disposed + + + + + Returns true if client is running and connected to the server + + + + + Enable or disable text message conversion from binary to string (via 'MessageEncoding' property). + Default: true + + + + + + + + + + + Terminate the websocket connection and cleanup everything + + + + + Start listening to the websocket stream on the background thread. + In case of connection error it doesn't throw an exception. + Only streams a message via 'DisconnectionHappened' and logs it. + + + + + Start listening to the websocket stream on the background thread. + In case of connection error it throws an exception. + Fail fast approach. + + + + + Stop/close websocket connection with custom close code. + Method doesn't throw exception, only logs it and mark client as closed. + + Returns true if close was initiated successfully + + + + Stop/close websocket connection with custom close code. + Method could throw exceptions, but client is marked as closed anyway. + + Returns true if close was initiated successfully + + + + Force reconnection. + Closes current websocket stream and perform a new connection to the server. + In case of connection error it doesn't throw an exception, but tries to reconnect indefinitely. + + + + + Force reconnection. + Closes current websocket stream and perform a new connection to the server. + In case of connection error it throws an exception and doesn't perform any other reconnection try. + + + + + Send text message to the websocket channel. + It inserts the message to the queue and actual sending is done on an other thread + + Text message to be sent + + + + Send binary message to the websocket channel. + It inserts the message to the queue and actual sending is done on an other thread + + Binary message to be sent + + + + Send binary message to the websocket channel. + It inserts the message to the queue and actual sending is done on an other thread + + Binary message to be sent + + + + Send text message to the websocket channel. + It doesn't use a sending queue, + beware of issue while sending two messages in the exact same time + on the full .NET Framework platform + + Message to be sent + + + + Send binary message to the websocket channel. + It doesn't use a sending queue, + beware of issue while sending two messages in the exact same time + on the full .NET Framework platform + + Message to be sent + + + + Stream/publish fake message (via 'MessageReceived' observable). + Use for testing purposes to simulate a server message. + + Message to be stream + + + + Simple interface that represent a logger. + + + + + Log a message the specified log level. + + The log level. + The message function. + An optional exception. + Optional format parameters for the message generated by the messagefunc. + true if the message was logged. Otherwise false. + + Note to implementers: the message func should not be called if the loglevel is not enabled + so as not to incur performance penalties. + To check IsEnabled call Log with only LogLevel and check the return value, no event will be written. + + + + + Represents a way to get a + + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. + + + + Opens a nested diagnostics context. Not supported in EntLib logging. + + The message to add to the diagnostics context. + A disposable that when disposed removes the message from the context. + + + + Opens a mapped diagnostics context. Not supported in EntLib logging. + + A key. + A value. + Determines whether to call the destructor or not. + A disposable that when disposed removes the map from the context. + + + + Extension methods for the interface. + + + + + Check if the log level is enabled. + + The to check with. + True if the log level is enabled; false otherwise. + + + + Check if the log level is enabled. + + The to check with. + True if the log level is enabled; false otherwise. + + + + Check if the log level is enabled. + + The to check with. + True if the log level is enabled; false otherwise. + + + + Check if the log level is enabled. + + The to check with. + True if the log level is enabled; false otherwise. + + + + Check if the log level is enabled. + + The to check with. + True if the log level is enabled; false otherwise. + + + + Check if the log level is enabled. + + The to check with. + True if the log level is enabled; false otherwise. + + + + Logs a message at the log level, if enabled. + + The to use. + The message function. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + Optional format parameters for the message. + + + + Logs an exception at the log level, if enabled. + + The to use. + The exception. + The message. + Optional format parameters for the message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + Optional format parameters for the message. + + + + Logs an exception at the log level, if enabled. + + The to use. + The message. + The exception. + + + + Logs an exception at the log level, if enabled. + + The to use. + The message. + The exception. + Optional format parameters for the message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message function. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + Optional format parameters for the message. + + + + Logs an exception at the log level, if enabled. + + The to use. + The exception. + The message. + Optional format parameters for the message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + Optional format parameters for the message. + + + + Logs an exception at the log level, if enabled. + + The to use. + The message. + The exception. + Optional format parameters for the message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message function. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + Optional format parameters for the message. + + + + Logs an exception at the log level, if enabled. + + The to use. + The exception. + The message. + Optional format parameters for the message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + Optional format parameters for the message. + + + + Logs an exception at the log level, if enabled. + + The to use. + The message. + The exception. + Optional format parameters for the message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message function. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + Optional format parameters for the message. + + + + Logs an exception at the log level, if enabled. + + The to use. + The exception. + The message. + Optional format parameters for the message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + Optional format parameters for the message. + + + + Logs an exception at the log level, if enabled. + + The to use. + The message. + The exception. + Optional format parameters for the message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message function. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + Optional format parameters for the message. + + + + Logs an exception at the log level, if enabled. + + The to use. + The exception. + The message. + Optional format parameters for the message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + Optional format parameters for the message. + + + + Logs an exception at the log level, if enabled. + + The to use. + The message. + The exception. + Optional format parameters for the message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message function. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + Optional format parameters for the message. + + + + Logs an exception at the log level, if enabled. + + The to use. + The exception. + The message. + Optional format parameters for the message. + + + + Logs a message at the log level, if enabled. + + The to use. + The message. + Optional format parameters for the message. + + + + Logs an exception at the log level, if enabled. + + The to use. + The message. + The exception. + Optional format parameters for the message. + + + + The log level. + + + + + Trace + + + + + Debug + + + + + Info + + + + + Warn + + + + + Error + + + + + Fatal + + + + + Provides a mechanism to set the . + + + + + Sets the current log provider. + + The log provider. + + + + Gets or sets a value indicating whether this is logging is disabled. + + + true if logging is disabled; otherwise, false. + + + + + Sets an action that is invoked when a consumer of your library has called SetCurrentLogProvider. It is + important that hook into this if you are using child libraries (especially ilmerged ones) that are using + LibLog (or other logging abstraction) so you adapt and delegate to them. + + + + + + Gets a logger for the specified type. + + The type whose name will be used for the logger. + An instance of + + + + Gets a logger for the current class. + + An instance of + + + + Gets a logger for the specified type. + + The type whose name will be used for the logger. + If the type is null then this name will be used as the log name instead + An instance of + + + + Gets a logger with the specified name. + + The name. + An instance of + + + + Opens a nested diagnostics context. + + A message. + An that closes context when disposed. + + + + Opens a mapped diagnostics context. + + A key. + A value. + A optional paramater to indicate message should be destructured. + An that closes context when disposed. + + + + Exception thrown by LibLog. + + + + + Initializes a new LibLogException with the specified message. + + The message + + + + Initializes a new LibLogException with the specified message and inner exception. + + The message. + The inner exception. + + + + Some logging frameworks support structured logging, such as serilog. This will allow you to add names to structured + data in a format string: + For example: Log("Log message to {user}", user). This only works with serilog, but as the user of LibLog, you don't + know if serilog is actually + used. So, this class simulates that. it will replace any text in {curly braces} with an index number. + "Log {message} to {user}" would turn into => "Log {0} to {1}". Then the format parameters are handled using regular + .net string.Format. + + The message builder. + The format parameters. + + + + + Base class for specific log providers. + + + + + Error message should initializing the log provider fail. + + + + + Initialize an instance of the class by initializing the references + to the nested and mapped diagnostics context-obtaining functions. + + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. + + + + Opens a nested diagnostics context. Not supported in EntLib logging. + + The message to add to the diagnostics context. + A disposable that when disposed removes the message from the context. + + + + Opens a mapped diagnostics context. Not supported in EntLib logging. + + A key. + A value. + Determines whether to call the destructor or not. + A disposable that when disposed removes the map from the context. + + + + Returns the provider-specific method to open a nested diagnostics context. + + A provider-specific method to open a nested diagnostics context. + + + + Returns the provider-specific method to open a mapped diagnostics context. + + A provider-specific method to open a mapped diagnostics context. + + + + Delegate defining the signature of the method opening a nested diagnostics context. + + The message to add to the diagnostics context. + A disposable that when disposed removes the message from the context. + + + + Delegate defining the signature of the method opening a mapped diagnostics context. + + A key. + A value. + Determines whether to call the destructor or not. + A disposable that when disposed removes the map from the context. + + + + Finds a type using a type name and assembly name. + + The name of the type. + The name of the assembly. + The requested type or null if it was not found. + + + + Finds a type using a type name and a list of assembly names to search. + + The name of the type. + A list of assembly names to search. + The request type or null if it was not found. + + + + The form of the Loupe Log.Write method we're using + + + + + Gets or sets a value indicating whether [provider is available override]. Used in tests. + + + true if [provider is available override]; otherwise, false. + + + + + Logger delegate. + + The log level + The message function + The exception + The format parameters + A boolean. + + + diff --git a/Assets/Packages/Websocket.Client.4.6.1/lib/netstandard2.1/Websocket.Client.xml.meta b/Assets/Packages/Websocket.Client.4.6.1/lib/netstandard2.1/Websocket.Client.xml.meta new file mode 100644 index 0000000..313fbbb --- /dev/null +++ b/Assets/Packages/Websocket.Client.4.6.1/lib/netstandard2.1/Websocket.Client.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 37022f0ecae80b24ca995a234fbb5297 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/functions-csharp.1.3.2.meta b/Assets/Packages/functions-csharp.1.3.2.meta new file mode 100644 index 0000000..6114bd9 --- /dev/null +++ b/Assets/Packages/functions-csharp.1.3.2.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c88f39718af2b6e468b4e1e955f72483 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/functions-csharp.1.3.2/.signature.p7s b/Assets/Packages/functions-csharp.1.3.2/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..9311f6b1e9c3b659e7072ae6f740fc57ed4501c9 GIT binary patch literal 11513 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 literal 0 HcmV?d00001 diff --git a/Assets/Packages/functions-csharp.1.3.2/README.md b/Assets/Packages/functions-csharp.1.3.2/README.md new file mode 100644 index 0000000..84d9377 --- /dev/null +++ b/Assets/Packages/functions-csharp.1.3.2/README.md @@ -0,0 +1,35 @@ +

    + +

    + +
    + +--- + +C# Client library to interact with Supabase Functions. + +## Package made possible through the efforts of: + +Join the ranks! See a problem? Help fix it! + + + + + +Made with [contrib.rocks](https://contrib.rocks). + +## Contributing + +We are more than happy to have contributions! Please submit a PR. + +### Testing + +To run the tests locally you must have docker and docker-compose installed. Then in the root of the repository run: + +- `docker-compose up -d` +- `dotnet test` diff --git a/Assets/Packages/functions-csharp.1.3.2/README.md.meta b/Assets/Packages/functions-csharp.1.3.2/README.md.meta new file mode 100644 index 0000000..8aa16d2 --- /dev/null +++ b/Assets/Packages/functions-csharp.1.3.2/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a0e8adf89fcca2740a8ec7b52d34a249 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/functions-csharp.1.3.2/functions-csharp.nuspec b/Assets/Packages/functions-csharp.1.3.2/functions-csharp.nuspec new file mode 100644 index 0000000..dea8df7 --- /dev/null +++ b/Assets/Packages/functions-csharp.1.3.2/functions-csharp.nuspec @@ -0,0 +1,25 @@ + + + + functions-csharp + 1.3.2 + Function + Joseph Schultz <joseph@acupofjose.com> + MIT + https://licenses.nuget.org/MIT + icon.png + README.md + https://github.com/supabase-community/functions-csharp + https://avatars.githubusercontent.com/u/54469796?s=200&v=4 + A C# client for Supabase Functions + MIT + supabase, functions + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/functions-csharp.1.3.2/functions-csharp.nuspec.meta b/Assets/Packages/functions-csharp.1.3.2/functions-csharp.nuspec.meta new file mode 100644 index 0000000..8a1f65f --- /dev/null +++ b/Assets/Packages/functions-csharp.1.3.2/functions-csharp.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9811af04b2a5c4b498737e0d4fa916e8 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/functions-csharp.1.3.2/icon.png b/Assets/Packages/functions-csharp.1.3.2/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eb1468e4cc6f2fe2ce24c6740389535073ab60e9 GIT binary patch literal 5771 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 X;OLIKfIj`9$&96;qNCiPXdC^1ZeRCi literal 0 HcmV?d00001 diff --git a/Assets/Packages/functions-csharp.1.3.2/icon.png.meta b/Assets/Packages/functions-csharp.1.3.2/icon.png.meta new file mode 100644 index 0000000..8edb78a --- /dev/null +++ b/Assets/Packages/functions-csharp.1.3.2/icon.png.meta @@ -0,0 +1,156 @@ +fileFormatVersion: 2 +guid: f867320bd208c2a46a1e8466bd699a0a +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 2 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/functions-csharp.1.3.2/lib.meta b/Assets/Packages/functions-csharp.1.3.2/lib.meta new file mode 100644 index 0000000..c0b948d --- /dev/null +++ b/Assets/Packages/functions-csharp.1.3.2/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4b0402acbc3200d408be73861a9b1418 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0.meta b/Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0.meta new file mode 100644 index 0000000..42d55dd --- /dev/null +++ b/Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 046574ba935a00b40abdb1a799267185 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0/Supabase.Functions.dll b/Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0/Supabase.Functions.dll new file mode 100644 index 0000000000000000000000000000000000000000..9a5b9d6eb02576cf2c1e70561d0b3518c631c56a GIT binary patch literal 15360 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 rFDdO>@WYkx zS6KEQ`y#FlSjCi5|2tth2RX-Oq~savo$Y_(J^XLR5ut2v8|-Ca(RpHmofiD!aUt#n zxH+C1@V!cr5yW#HbTjZdUD4wY(r$tVP=|lLN%+;F2lm#(){t1@ks3h^xkp2YRUSIs zXb<~8vWVN>=*Tz|xNSG9n6jh(`}(k2V!8=-EqGQyJo6Pj`rxtrFn)`t;Hz7uowFla zj%Nd6+k%)H)QYFM>1)J2<%D xYL)S9#~5XO3*y4|`mt@*lwe?FekbaSI-f@I?H>_5Usc{{!%?$Q}Ry literal 0 HcmV?d00001 diff --git a/Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0/Supabase.Functions.dll.meta b/Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0/Supabase.Functions.dll.meta new file mode 100644 index 0000000..73e3461 --- /dev/null +++ b/Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0/Supabase.Functions.dll.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: af79bd16752a6ca4a97c0561e6e8c30a +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 3 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0/Supabase.Functions.xml b/Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0/Supabase.Functions.xml new file mode 100644 index 0000000..1d5a8af --- /dev/null +++ b/Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0/Supabase.Functions.xml @@ -0,0 +1,201 @@ + + + + Supabase.Functions + + + + + + + + Function that can be set to return dynamic headers. + + Headers specified in the method parameters will ALWAYS take precedence over headers returned by this function. + + + + + Initializes a functions client + + + + + + Returns an response, allowing for coersion into Streams, Strings, and byte[] + + Function Name, will be appended to BaseUrl + Anon Key. + Options + + + + + Invokes a function and returns the Text content of the response. + + Function Name, will be appended to BaseUrl + Anon Key. + Options + + + + + Invokes a function and returns a JSON Deserialized object according to the supplied generic Type + + + Function Name, will be appended to BaseUrl + Anon Key. + Options + + + + + Internal request handling + + + + + + + + + + Options that can be supplied to a function invocation. + + Note: If Headers.Authorization is set, it can be later overriden if a token is supplied in the method call. + + + + + Headers to be included on the request. + + + + + Body of the Request + + + + + Timout value for HttpClient Requests, defaults to 100s. + https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpclient.timeout?view=net-8.0#remarks + + + + + A hint as to why a request failed. + + + + + A failure reason + + + + + An unknown reason + + + + + Request was not authorized + + + + + An internal error occurred, check your supabase logs. + + + + + Attempts to detect a reason given an exception. + + + + + + + An Exception thrown within + + + + + + + + + + + The Http Response + + + + + The Http response content + + + + + The Http Status code + + + + + A parsed reason for a given failure + + + + + Attempts to detect a reason for this exception + + + + + Represents a contract for a Supabase Functions Client + + + + + Invokes a function given a URL and access token. Returns the string content. + + + + + + + + + Invokes a function given a URL and access token. Returns a typed response (should be a JSON.net parsable object) + + + + + + + + + + Invokes a function given a URL and access token. Returns the raw HTTP response. + + + + + + + + + A wrapper class from which all Responses derive. + + + + + The response message + + + + + The response content. + + + + diff --git a/Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0/Supabase.Functions.xml.meta b/Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0/Supabase.Functions.xml.meta new file mode 100644 index 0000000..7baefa3 --- /dev/null +++ b/Assets/Packages/functions-csharp.1.3.2/lib/netstandard2.0/Supabase.Functions.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2394574ac7e3be448beed975d17bacdd +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/gotrue-csharp.4.2.7.meta b/Assets/Packages/gotrue-csharp.4.2.7.meta new file mode 100644 index 0000000..944a75c --- /dev/null +++ b/Assets/Packages/gotrue-csharp.4.2.7.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 03e606690a49a464f9a6db8401d79e85 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/gotrue-csharp.4.2.7/.signature.p7s b/Assets/Packages/gotrue-csharp.4.2.7/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..dacda38d0e4d0ce2d2d1d62c53d0aa9bc15142ae GIT binary patch literal 11513 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

    3J22RJE=*G$W;LlZV+4+WBTXmW)|$twgav z^B#8v<&G@OG_P`?BHaY3-)K~hI}S~mCiAYY%AAUR>`?7*{It`M{`TmDG6UV0EoJ2`$pQSFzkWnZg&+d-B#spTY;$ayZxcDoHkQd#e? zxWn9KU8KsR^*$|P`|=x>ss%P*AJaE zGOgh{5TDaA94w?_Vb$1L>7&}$ayY>DW^%iuB;Wd2rOy%JZy;!+YBfiPth~GHz=x%> zCeOIOZZi3LgOR1ttESR33Bi(}Q~e+8|GKZz!;nmGI__BzsivTxS6LT$K8J zs5En5Ms#w%Kv7g@Nh{#4#@V=B%{u=BnwIcxGTH0YjJ>5RH2HCBOt;_nd|2^n*}qru zc49tYiFGk{kSgZ2@Ng#fN^FQhfD+)}xB~!9I<5p);IVQ=SM;n{InRIp~$?zo-3 z${lOo89D1EoL!z4xvGdXg2~-^fO`1edVI@EWi6_T_1s0784tdTZkU6ZaRhd-e5$K_0}l+M9;~o@e%c0Gu~^-cu^M$ z__v@9Rpm=>mSP8MBqoyT8&9^9T_9F`Ce*&Ordg{avfeyAROEqQ?Nh2VJ;>I2i(-3# zd1%5#Vyl;ph-vh~ZJ8X~W|P$ld*Y(v`tkit+xCvfjI=4zXR{Vi1HENA6r*a(+if^K drzK4oiPM^LwezK8X%uUejanSv2RDc({XbWqIAZ_+ literal 0 HcmV?d00001 diff --git a/Assets/Packages/gotrue-csharp.4.2.7/README.md b/Assets/Packages/gotrue-csharp.4.2.7/README.md new file mode 100644 index 0000000..45fb651 --- /dev/null +++ b/Assets/Packages/gotrue-csharp.4.2.7/README.md @@ -0,0 +1,296 @@ +

    + +

    + +

    + + + + +

    + +--- + +## New Features + +### Unity Support + +The Client works with Unity. You can find an example of a session persistence +implementation for Unity at this [gist](https://gist.github.com/wiverson/fbb07498743dff19b72c9c58599931e9). + +```csharp + +``` + +### Offline Support + +The Client now better supports online/offline usage. The Client now has a simple boolean option "Online" +which can be set to to false. This can be combined with the NetworkStatus class to allow the client +to automatically go online & offline based on the device's network status. + +To use this new NetworkStatus, add the following: + +```csharp +// Create the client +var client = new Client(new ClientOptions { AllowUnconfirmedUserSessions = true }); +// Create the network status monitor +var status = new NetworkStatus(); +// Tell the network status monitor to update the client's online status +status.Client = client; +// Start the network status monitor +await status.StartAsync(); +// rest of the usual client configuration +``` + +Only the stateful Client supports this feature, and only for the managed user sessions. +Admin JWT methods and the stateless client are not affected. + +By default, this change will not affect existing code. + +### Updated Refresh Token Handling + +The Client now supports setting a maximum wait time before refreshing the token. This is useful +for scenarios where you want to refresh the token before it expires, but not too often. + +By default, GoTrue servers are typically set to expire the token after an hour, and the refresh +thread will refresh the token when ~20% of that time is left. + +However, you can set the expiration time to be much longer on the server (up to a week). In this +scenario, you may want to refresh the token more often than once every 5 days or so, but not every hour. + +There is now a new option `MaximumRefreshWaitTime` which allows you to specify the maximum amount +in time that the refresh thread will wait before refreshing the token. This defaults to 4 hours. +This means that if you have your server set to a one hour token expiration, nothing changes, but +if you extend the server refresh to (for example) a week, as long as the user launches the app +at least once a week, they will never have to re-authenticate. + +## BREAKING CHANGES v3.1 → v4.x + +- Exceptions have been simplified to a single `GotrueException`. A `Reason` field has been added + to `GotrueException` to clarify what happened. This should also be easier to manage as the Gotrue + server API & messages evolve. +- The session delegates for `Save`/`Load`/`Destroy` have been simplified to no longer require `async`. +- Console logging in a few places (most notable the background refresh thread) has been removed + in favor of a notification method. See `Client.AddDebugListener()` and the test cases for examples. + This will allow you to implement your own logging strategy (write to temp file, console, user visible + err console, etc). +- The client now more reliably emits AuthState changes. +- There is now a single source of truth for headers in the stateful Client - the `Options` headers. + +New feature: + +- Added a `Settings` request to the stateless API only - you can now query the server instance to + determine if it's got the settings you need. This might allow for things like a visual + component in a tool to verify the GoTrue settings are working correctly, or tests that run differently + depending on the server configuration. + +Implementation notes: + +- Test cases have been added to help ensure reliability of auth state change notifications + and persistence. +- Persistence is now managed via the same notifications as auth state change + +## BREAKING CHANGES v3.0 → 3.1 + +- We've implemented the PKCE auth flow. SignIn using a provider now returns an instance of `ProviderAuthState` rather + than a `string`. +- The provider sign in signature has moved `scopes` into `SignInOptions` + +In Short: + +```c# +# What was: +var url = await client.SignIn(Provider.Github, "scopes and things"); + +# Becomes: +var state = await client.SignIn(Provider.Github, new SignInOptions { "scopes and things" }); +// Url is now at `state.Uri` +``` + +--- + +## Getting Started + +To use this library on the Supabase Hosted service but separately from the `supabase-csharp`, you'll need to specify +your url and public key like so: + +```c# +var auth = new Supabase.Gotrue.Client(new ClientOptions +{ + Url = "https://PROJECT_ID.supabase.co/auth/v1", + Headers = new Dictionary + { + { "apikey", SUPABASE_PUBLIC_KEY } + } +}) +``` + +Otherwise, using it this library with a local instance: + +```c# +var options = new ClientOptions { Url = "https://example.com/api" }; +var client = new Client(options); +var user = await client.SignUp("new-user@example.com"); + +// Alternatively, you can use a StatelessClient and do API interactions that way +var options = new StatelessClientOptions { Url = "https://example.com/api" } +await new StatelessClient().SignUp("new-user@example.com", options); +``` + +## Persisting, Retrieving, and Destroying Sessions. + +This Gotrue client is written to be agnostic when it comes to session persistence, retrieval, and +destruction. `ClientOptions` exposes +properties that allow these to be specified. + +In the event these are specified and the `AutoRefreshToken` option is set, as the `Client` Initializes, it will also +attempt to +retrieve, set, and refresh an existing session. + +For example, using `Xamarin.Essentials` in `Xamarin.Forms`, this might look like: + +```c# +// This is a method you add your application launch/setup +async void Initialize() { + + // Specify the methods you'd like to use as persistence callbacks + var persistence = new GotrueSessionPersistence(SaveSession, LoadSession, DestroySession); + var client = new Client( + Url = GOTRUE_URL, + new ClientOptions { + AllowUnconfirmedUserSessions = true, + SessionPersistence = persistence }); + + // Specify a debug callback to listen to problems with the background token refresh thread + client.AddDebugListener(LogDebug); + + // Specify a call back to listen to changes in the user state (logged in, out, etc) + client.AddStateChangedListener(AuthStateListener); + + // Load the session from persistence + client.LoadSession(); + // Loads the session using SessionRetriever and sets state internally. + await client.RetrieveSessionAsync(); +} + +// Add callback methods for above +// Here's a quick example of using this to save session data to the user's cache folder +// You'll want to add methods for loading the file and deleting when the user logs out +internal bool SaveSession(Session session) +{ + var cacheFileName = ".gotrue.cache"; + + try + { + var cacheDir = FileSystem.CacheDirectory; + var path = Path.Join(cacheDir, cacheFileName); + var str = JsonConvert.SerializeObject(session); + + using (StreamWriter file = new StreamWriter(path)) + { + file.Write(str); + file.Dispose(); + return Task.FromResult(true); + }; + } + catch (Exception err) + { + Debug.WriteLine("Unable to write cache file."); + throw err; + } +} +``` + +## 3rd Party OAuth + +Once again, Gotrue client is written to be agnostic of platform. In order for Gotrue to sign in a user from an Oauth +callback, the PKCE flow is preferred: + +1) The Callback Url must be set in the Supabase Admin panel +2) The Application should have listener to receive that Callback +3) Generate a sign in request using: `client.SignIn(PROVIDER, options)` and setting the options to use the + PKCE `FlowType` +4) Store `ProviderAuthState.PKCEVerifier` so that the application callback can use it to verify the returned code +5) In the Callback, use stored `PKCEVerifier` and received `code` to exchange for a session. + +```c# +var state = await client.SignIn(Constants.Provider.Github, new SignInOptions +{ + FlowType = Constants.OAuthFlowType.PKCE, + RedirectTo = "http://localhost:3000/oauth/callback" +}); + +// In callback received from Supabase returning to RedirectTo (set above) +// Url is set as: http://REDIRECT_TO_URL?code=CODE +var session = await client.ExchangeCodeForSession(state.PKCEVerifier, RETRIEVE_CODE_FROM_GET_PARAMS); +``` + +## Troubleshooting + +**Q: I've created a User but while attempting to log in it throws an exception:** + +A: Provided the credentials are correct, make sure that the User has also confirmed their email. + +Adding a handler for email confirmation to a desktop or mobile application can be done, but it +requires setting up URL handlers for each platform, which can be pretty difficult to do if you +aren't really comfortable with configuring these handlers. ( +e.g. [Windows](https://learn.microsoft.com/en-us/windows/win32/search/-search-3x-wds-ph-install-registration), +[Apple](https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app), +[Android](https://developer.android.com/training/app-links)) +You may find it easier to create a +simple web application to handle email confirmation - that way a user can just click a link in +their email and get confirmed that way. Your desktop or mobile app should inspect the user object +that comes back and use that to see if the user is confirmed. + +You might find it easiest to do something like create and deploy a +simple [SvelteKit](https://kit.svelte.dev/) or even a very basic +pure [JavaScript](https://github.com/supabase/examples-archive/tree/main/supabase-js-v1/auth/javascript-auth) project +to handle email verification. + +## Status + +- [x] API + - [x] Sign Up with Email + - [x] Sign In with Email + - [x] Send Magic Link Email + - [x] Invite User by Email + - [x] Reset Password for Email + - [x] Signout + - [x] Get Url for Provider + - [x] Get User + - [x] Update User + - [x] Refresh Access Token + - [x] List Users (includes filtering, sorting, pagination) + - [x] Get User by Id + - [x] Create User + - [x] Update User by Id +- [x] Client + - [x] Get User + - [x] Refresh Session + - [x] Auth State Change Handler + - [x] Provider Sign In (Provides URL) +- [x] Provide Interfaces for Custom Token Persistence Functionality +- [x] Documentation +- [x] Unit Tests +- [x] Nuget Release + +## Package made possible through the efforts of: + +Join the ranks! See a problem? Help fix it! + + + + + +Made with [contrib.rocks](https://contrib.rocks). + +## Contributing + +We are more than happy to have contributions! Please submit a PR. + +### Testing + +To run the tests locally you must have docker and docker-compose installed. Then in the root of the repository run: + +- `docker-compose up -d` +- `dotnet test` diff --git a/Assets/Packages/gotrue-csharp.4.2.7/README.md.meta b/Assets/Packages/gotrue-csharp.4.2.7/README.md.meta new file mode 100644 index 0000000..deced92 --- /dev/null +++ b/Assets/Packages/gotrue-csharp.4.2.7/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 566b932e0aff71d408bd3b985ab84037 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/gotrue-csharp.4.2.7/gotrue-csharp.nuspec b/Assets/Packages/gotrue-csharp.4.2.7/gotrue-csharp.nuspec new file mode 100644 index 0000000..55df63e --- /dev/null +++ b/Assets/Packages/gotrue-csharp.4.2.7/gotrue-csharp.nuspec @@ -0,0 +1,26 @@ + + + + gotrue-csharp + 4.2.7 + Gotrue + Joseph Schultz <joseph@acupofjose.com> + MIT + https://licenses.nuget.org/MIT + icon.png + README.md + https://github.com/supabase-community/gotrue-csharp + https://avatars.githubusercontent.com/u/54469796?s=200&v=4 + A C# client for gotrue + MIT + supabase, gotrue + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/gotrue-csharp.4.2.7/gotrue-csharp.nuspec.meta b/Assets/Packages/gotrue-csharp.4.2.7/gotrue-csharp.nuspec.meta new file mode 100644 index 0000000..d1403c3 --- /dev/null +++ b/Assets/Packages/gotrue-csharp.4.2.7/gotrue-csharp.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9be2249a462ef2242a337550e9cfbd0d +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/gotrue-csharp.4.2.7/icon.png b/Assets/Packages/gotrue-csharp.4.2.7/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eb1468e4cc6f2fe2ce24c6740389535073ab60e9 GIT binary patch literal 5771 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 X;OLIKfIj`9$&96;qNCiPXdC^1ZeRCi literal 0 HcmV?d00001 diff --git a/Assets/Packages/gotrue-csharp.4.2.7/icon.png.meta b/Assets/Packages/gotrue-csharp.4.2.7/icon.png.meta new file mode 100644 index 0000000..84bdcf8 --- /dev/null +++ b/Assets/Packages/gotrue-csharp.4.2.7/icon.png.meta @@ -0,0 +1,156 @@ +fileFormatVersion: 2 +guid: b209672d773113a469152c1cdb8a4107 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 2 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/gotrue-csharp.4.2.7/lib.meta b/Assets/Packages/gotrue-csharp.4.2.7/lib.meta new file mode 100644 index 0000000..6d8351e --- /dev/null +++ b/Assets/Packages/gotrue-csharp.4.2.7/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07768465bb4c8ba488f5d791a2b57d91 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0.meta b/Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0.meta new file mode 100644 index 0000000..47b6f7b --- /dev/null +++ b/Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 452df13895ec50348a0c213b0dfcaaba +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0/Supabase.Gotrue.dll b/Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0/Supabase.Gotrue.dll new file mode 100644 index 0000000000000000000000000000000000000000..402903f5b7f2b1b305c557ca0e1c161f506ebfc0 GIT binary patch literal 98304 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 + Admin client for interacting with the Gotrue API. Intended for use on + servers or other secure environments. + + This client does NOT manage user sessions or track any other state. + + + + + The initialized client options. + + + + + Initialize the client with a service key. + + A valid JWT. Must be a full-access API key (e.g. 'service_role' or 'supabase_admin'). + + + + + Headers sent to the API on every request. + + + + + The underlying API requests object that sends the requests + + + + + The service key used to authenticate with the API. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The REST calls to the Gotrue API. + + + + + Function that can be set to return dynamic headers. + Headers specified in the constructor will ALWAYS take precedence over headers returned by this function. + + + + + Headers to be sent with every request. These will be merged with any headers returned by GetHeaders. + + + + + Creates a new API client + + + + + + + Signs a user up using an email address and password. + + + + Optional Signup data. + + + + + Logs in an existing user using their email address. + + + + + + + + Log in a user using magiclink or a one-time password (OTP). + + If the `{{ .ConfirmationURL }}` variable is specified in the email template, a magiclink will be sent. + If the `{{ .Token }}` variable is specified in the email template, an OTP will be sent. + If you're using phone sign-ins, only an OTP will be sent. You won't be able to send a magiclink for phone sign-ins. + + Be aware that you may get back an error message that will not distinguish + between the cases where the account does not exist or, that the account + can only be accessed via social login. + + Do note that you will need to configure a Whatsapp sender on Twilio + if you are using phone sign in with the 'whatsapp' channel. The whatsapp + channel is not supported on other providers at this time. + + + + + + + Log in a user using magiclink or a one-time password (OTP). + + If the `{{ .ConfirmationURL }}` variable is specified in the email template, a magiclink will be sent. + If the `{{ .Token }}` variable is specified in the email template, an OTP will be sent. + If you're using phone sign-ins, only an OTP will be sent. You won't be able to send a magiclink for phone sign-ins. + + Be aware that you may get back an error message that will not distinguish + between the cases where the account does not exist or, that the account + can only be accessed via social login. + + Do note that you will need to configure a Whatsapp sender on Twilio + if you are using phone sign in with the 'whatsapp' channel. The whatsapp + channel is not supported on other providers at this time. + + + + + + + Creates a new anonymous user. + + + A session where the is_anonymous claim in the access token JWT set to true + + + + Allows signing in with an ID token issued by certain supported providers. + The [idToken] is verified for validity and a new session is established. + This method of signing in only supports [Provider.Google] or [Provider.Apple]. + + A supported provider (Google, Apple) + + + + + + InvalidProviderException + + + + + Sends a magic login link to an email address. + + + + + + + + Sends an invite link to an email address. + + + this token needs role 'supabase_admin' or 'service_role' + + + + + + Signs up a new user using their phone number and a password.The phone number of the user. + + The phone number of the user. + The password of the user. + Optional Signup data. + + + + + Logs in an existing user using their phone number and password. + + The phone number of the user. + The password of the user. + + + + + Sends a mobile OTP via SMS. Will register the account if it doesn't already exist + + phone The user's phone number WITH international prefix + + + + + Send User supplied Mobile OTP to be verified + + The user's phone number WITH international prefix + token that user was sent to their mobile phone + e.g. SMS or phone change + + + + + Send User supplied Email OTP to be verified + + The user's email address + token that user was sent to their mobile phone + Type of verification, e.g. invite, recovery, etc. + + + + + Sends a reset request to an email address. + + + + + + + Sends a password reset request to an email address. + + This Method supports the PKCE Flow + + + + + + + Create a temporary object with all configured headers and adds the Authorization token to be used on request methods + + JWT + + + + + Generates the relevant login URI for a third-party provider. + + + + + + + + Log in an existing user via code from third-party provider. + + Generated verifier (probably from GetUrlForProvider) + The received Auth Code Callback + + + + + Removes a logged-in session. + + + + + + + Gets User Details + + + + + + + Get User details by Id + + A valid JWT. Must be a full-access API key (e.g. service_role key). + userID + + + + + Updates the User data + + + + + + + + Lists users + + A valid JWT. Must be a full-access API key (e.g. service_role key). + A string for example part of the email + Snake case string of the given key, currently only created_at is supported + asc or desc, if null desc is used + page to show for pagination + items per page for pagination + + + + + Create a user + + A valid JWT. Must be a full-access API key (e.g. service_role key). + Additional administrative details + + + + + Update user by Id + + A valid JWT. Must be a full-access API key (e.g. service_role key). + userID + User attributes e.g. email, password, etc. + + + + + Sends a re-authentication request, used for password changes. + + See: https://github.com/supabase/gotrue#get-reauthenticate + + The user's auth token. + + + + + Delete a user + + The user uid you want to remove. + A valid JWT. Must be a full-access API key (e.g. service_role key). + + + + + Calls the GoTrue server to get the settings (for example, if email auto confirmation is turned on) + + mpose up -d + + + + + Generates email links and OTPs to be sent via a custom email provider. + + + + + + + + Generates a new Session given a user's access token and refresh token. + + + + + + + + + + + The underlying API requests object that sends the requests + + + + + Handlers for notifications of state changes. + + + + + Gets notifications if there is a failure not visible by exceptions (e.g. background thread refresh failure) + + + + + Object called to persist the session (e.g. filesystem or cookie) + + + + + Get the TokenRefresh object, if it exists + + + + + Initializes the GoTrue stateful client. + + You will likely want to at least specify a + ClientOptions.Url + + + Sessions are not automatically retrieved when this object is created. + + If you want to load the session from your persistence store, + GotrueSessionPersistence + . + + If you want to load/refresh the session, + RetrieveSessionAsync + . + + For a typical client application, you'll want to load the session from persistence + and then refresh it. If your application is listening for session changes, you'll + get two SignIn notifications if the persisted session is valid - one for the + session loaded from disk, and a second on a successful session refresh. + + + + var client = new Supabase.Gotrue.Client(options); + client.LoadSession(); + await client.RetrieveSessionAsync(); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Parses a out of a 's Query parameters. + + + + + + + + + + + + + + Headers sent to the API on every request. + + + + + + + + Saves the session + + + + + + Clears the session + + + + + + + + + + + + + + + + + + + + + + + Class representation options available to the . + + + + + Gotrue Endpoint + + + + + Headers to be sent with subsequent requests. + + + + + Should the Client automatically handle refreshing the User's Token? + + + + + Ask the TokenRefresh system to log extra debug info + + + + + By default, the Client will attempt to refresh the token when roughly 1/5 of the + time is left before expiration (assuming AutoRefreshToken is true). + + + + The default expiration time for GoTrue servers is 3600 (1 hour), with a maximum + of 604,800 seconds (one week). + + If you set the expiration to one week, you may want to refresh the token a bit + more frequently. This setting allows you to set a custom threshold for when the + client should AutoRefreshToken. The default value is 14400 seconds (4 hours). + + In this scenario, if you set the server expiration to one week and leave this + value set to the default, as long as the user logs in at least once a week they + should stay logged in indefinitely. + + + + + Very unlikely this flag needs to be changed except in very specific contexts. + + Enables tests to be E2E tests to be run without requiring users to have + confirmed emails - mirrors the Gotrue server's configuration. + + + + + Constants used throughout the Gotrue Client + + + + + URL for the Gotrue server. Defaults to localhost:9999. + + + + + Providers available to Supabase + Ref: https://supabase.github.io/gotrue-js/modules.html#Provider + + + + + States that the Auth Client will raise events for. + + + + + Specifies the functionality expected from the `SignIn` method + + + + + Represents an OAuth Flow type + + + + + Specifies the functionality expected from the `SignUp` method + + + + + Manages the debug listeners for the Gotrue Client. You'll want to install a debug listener + to get debug information back - especially for errors from the background RefreshToken thread. + + + + + Add a debug listener to the Gotrue Client. This will be called with debug information + + + + + + Send a debug message to all debug listeners + + + + + + + Maps Supabase server errors to hints based on the status code and the contents of the error message. + + + + + Best effort guess at why the exception was thrown. + + + + + The reason for the error could not be determined. + + + + + The client is set to run offline or the network is unavailable. + + + + + The user's email address has not been confirmed. + + + + + The user's email address and password are invalid. + + + + + The user's password is invalid. + + + + + The user's login is invalid. + + + + + The user's email address is invalid. + + + + + The user's phone number is invalid. + + + + + The user's information is incomplete. + + + + + The user is already registered. + + + + + Server rejected due to number of requests + + + + + The refresh token is invalid. + + + + + The refresh token expired. + + + + + This operation requires a bearer/service key (do not include this key in a client app) + + + + + No/invalid session found + + + + + Something wrong with the URL to session transformation + + + + + Detects the reason for the error based on the status code and the contents of the error message. + + + + + + + Errors from the GoTrue server are wrapped by this exception + + + + + Something with wrong with Gotrue / Auth + + Short description of the error source + + + + Something with wrong with Gotrue / Auth + + Short description of the error source + The underlying exception + + + + Something with wrong with Gotrue / Auth + + Short description of the error source + Best effort attempt to detect the reason for the failure + + + + Something with wrong with Gotrue / Auth + + Short description of the error source + Assigned reason + + + + + The HTTP response from the server + + + + + The content of the HTTP response from the server + + + + + The HTTP status code from the server + + + + + Adds the best-effort reason for the failure + + + + + Best guess at what caused the error from the server, see + + + + + Options for Generating an Email Link + + + + + Mapping of link types that can be generated. + + + + + Generate a signup link. + + + + + Generate an invite link. + + + + + Generate a magic link. + + + + + Generate a recovery link. + + + + + Generate an email change link to be sent to the current email address. + + + + + Generate an email change link to be sent to the new email address. + + + + + The type of link being generated + + + + + The User's Email + + + + + Only required if generating a signup link. + + + + + The user's new email. Only required if type is 'email_change_current' or 'email_change_new'. + + + + + A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column. + + The `data` should be a JSON encodable object that includes user-specific info, such as their first and last name. + + + + + The URL which will be appended to the email link generated. + + + + + Constructs options, additional properties may need to be assigned depending on + + - is required for and + - is required for + - is optional for + + + + + + + Shortcut options for + + + + + Constructs options for + + + + + is optional + + + + + Shortcut options for + + + + + Constructs options for + + + + + + + Shortcut options for + + + + + Constructs options for + + + + + + + Utility methods to assist with flow. Includes nonce generation and verification. + + + + + Generates a nonce (code verifier) + Used with PKCE flow and Apple/Google Sign in. + Paired with + + Sourced from: https://stackoverflow.com/a/65220376/3629438 + + + + + Generates a PKCE SHA256 code challenge given a nonce (code verifier) + + Paired with + + Sourced from: https://stackoverflow.com/a/65220376/3629438 + + + + + + Generates a SHA256 nonce given a rawNonce, used Apple/Google Sign in. + + + + + + + Adds query params to a given Url + + + + + + + + Helper to make a request using the defined parameters to an API Endpoint and coerce into a model. + + + + + + + + + + + Helper to make a request using the defined parameters to an API Endpoint. + + + + + + + + + + Interface for the Gotrue Admin Client (auth). + + + + + + Creates a user using the admin key (not the anonymous key). + Used in trusted server environments, not client apps. + + + + + + + Creates a user using the admin key (not the anonymous key). + Used in trusted server environments, not client apps. + + + + + + + + + Creates a user using the admin key (not the anonymous key). + Used in trusted server environments, not client apps. + + + + + Gets a user from a user's JWT. This is using the GoTrue server to validate a user's JWT. + + + + + + + Gets a user by ID from the server using the admin key (not the anonymous key). + + + + + + + Sends an email to the user. + + + + + + + + Lists users + + A string for example part of the email + Snake case string of the given key, currently only created_at is supported + asc or desc, if null desc is used + page to show for pagination + items per page for pagination + + + + + Updates a User using the service key + + + + + + + Update user by Id + + + + + + + + Generates email links and OTPs to be sent via a custom email provider. + + Options for this call. `Password` is required for , `Data` is an optional parameter for . + + + + + GoTrue stateful Client. + + This class is best used as a long-lived singleton object in your application. You can attach listeners + to be notified of changes to the user log in state, a persistence system for sessions across application + launches, and more. It includes a (optional, on by default) background thread that runs to refresh the + user's session token. + + Check out the test suite for examples of use. + + + var client = new Supabase.Gotrue.Client(options); + var user = await client.SignIn("user@email.com", "fancyPassword"); + + + + + Indicates if the client should be considered online or offline. + + In a server environment, this client would likely always be online. + + On a mobile client, you will want to pair this with a network implementation + to turn this on and off as the device goes online and offline. + + + + + The current Session as managed by this client. Does not refresh tokens or have any other side effects. + + You probably don't want to directly make changes to this object - you'll want to use other methods + on this class to make changes. + + + + + The currently logged in User. This is a local cache of the current session User. + To persist modifications to the User you'll want to use other methods. + > + + + + + The method that is called when there is a user state change. + + + + + Sets the persistence implementation for the client (e.g. file system, local storage, etc). + + + + + + Adds a listener to be notified when the user state changes (e.g. the user logs in, logs out, + the token is refreshed, etc). + + + + + + + + Removes a specified listener from event state changes. + + + + + + Clears all of the listeners from receiving event state changes. + + WARNING: The persistence handler and refresh token thread are installed as state change + listeners. Clearing the listeners will also delete these handlers. + + + + + Notifies all listeners that the current user auth state has changed. + + This is mainly used internally to fire notifications - most client applications won't need this. + + + + + + Converts a URL to a session. For client apps, this probably requires setting up URL handlers. + + + + + + + + Refreshes the currently logged in User's Session. + + + + + + Sends a reset request to an email address. + + + + + + + Sends a password reset request to an email address. + + Supports the PKCE Flow (the `verifier` from will be combined with in response) + + + + + + + Typically called as part of the startup process for the client. + + This will take the currently loaded session (e.g. from a persistence implementation) and + if possible attempt to refresh it. If the loaded session is expired or invalid, it will + log the user out. + + + + + + Sends a Magic email login link to the specified email. + + Most of the interesting configuration for this flow is done in the + Supabase/GoTrue admin panel. + + + + + + + + + Sets a new session given a user's access token and their refresh token. + + 1. Will destroy the current session (if existing) + 2. Raise a event. + 3. Decode token + 3a. If expired (or bool set), force an access token refresh. + 3b. If not expired, set the and retrieve from the server using the . + 4. Raise a ` event if successful. + + + + + + Raised when token combination is invalid. + + + + Log in an existing user, or login via a third-party provider. + + Type of Credentials being passed + An email, phone, or RefreshToken + Password to account (optional if `RefreshToken`) + A space-separated list of scopes granted to the OAuth application. + + + + + Sends a magic link login email to the specified email. + + + + + + + Signs in a User. + + + + + + + + Log in a user using magiclink or a one-time password (OTP). + + If the `{{ .ConfirmationURL }}` variable is specified in the email template, a magiclink will be sent. + If the `{{ .Token }}` variable is specified in the email template, an OTP will be sent. + If you're using phone sign-ins, only an OTP will be sent. You won't be able to send a magiclink for phone sign-ins. + + Be aware that you may get back an error message that will not distinguish + between the cases where the account does not exist or, that the account + can only be accessed via social login. + + Do note that you will need to configure a Whatsapp sender on Twilio + if you are using phone sign in with the 'whatsapp' channel. The whatsapp + channel is not supported on other providers at this time. + + Calling this method will wipe out the current session (if any) + + + + + + Log in a user using magiclink or a one-time password (OTP). + + If the `{{ .ConfirmationURL }}` variable is specified in the email template, a magiclink will be sent. + If the `{{ .Token }}` variable is specified in the email template, an OTP will be sent. + If you're using phone sign-ins, only an OTP will be sent. You won't be able to send a magiclink for phone sign-ins. + + Be aware that you may get back an error message that will not distinguish + between the cases where the account does not exist or, that the account + can only be accessed via social login. + + Do note that you will need to configure a Whatsapp sender on Twilio + if you are using phone sign in with the 'whatsapp' channel. The whatsapp + channel is not supported on other providers at this time. + + Calling this method will wipe out the current session (if any) + + + + + + Log in an existing user with an email and password or phone and password. + + + + + + + + Retrieves a to redirect to for signing in with a . + + This will likely be paired with a PKCE flow (set in SignInOptions) - after redirecting the + user to the flow, you should pair with + + + + + + + + Allows signing in with an ID token issued by certain supported providers. + The [idToken] is verified for validity and a new session is established. + This method of signing in only supports [Provider.Google] or [Provider.Apple]. + + A supported provider (Google, Apple) + Provided from External Library + Provided from External Library + Provided from External Library + Calling this method will eliminate the current session (if any). + + InvalidProviderException + + + + + Creates a new anonymous user. + + + A session where the is_anonymous claim in the access token JWT set to true + + + + Logs in an existing user via a third-party provider. + + + + + + + Signs up a user + + + Calling this method will log out the current user session (if any). + + By default, the user needs to verify their email address before logging in. To turn this off, disable confirm email in your project. + Confirm email determines if users need to confirm their email address after signing up. + - If Confirm email is enabled, a user is returned but session is null. + - If Confirm email is disabled, both a user and a session are returned. + When the user confirms their email address, they are redirected to the SITE_URL by default. You can modify your SITE_URL or add additional redirect URLs in your project. + If signUp() is called for an existing confirmed user: + - If Confirm email is enabled in your project, an obfuscated/fake user object is returned. + - If Confirm email is disabled, the error message, User already registered is returned. + To fetch the currently logged-in user, refer to . + + + + + Object containing redirectTo and optional user metadata (data) + + + + + Signs up a user by email address. + + + By default, the user needs to verify their email address before logging in. To turn this off, disable Confirm email in your project. + Confirm email determines if users need to confirm their email address after signing up. + - If Confirm email is enabled, a user is returned but session is null. + - If Confirm email is disabled, both a user and a session are returned. + When the user confirms their email address, they are redirected to the SITE_URL by default. You can modify your SITE_URL or + add additional redirect URLs in your project. + If signUp() is called for an existing confirmed user: + - If Confirm email is enabled in your project, an obfuscated/fake user object is returned. + - If Confirm email is disabled, the error message, User already registered is returned. + To fetch the currently logged-in user, refer to + User + . + + + + Object containing redirectTo and optional user metadata (data) + + + + + Used for re-authenticating a user in password changes. + + See: https://github.com/supabase/gotrue#get-reauthenticate + + + + + + + Signs out a user and invalidates the current token. + + + + + + Updates a User. + + + + + + + Log in a user given a User supplied OTP received via mobile. + + The user's phone number. + Token sent to the user's phone. + SMS or phone change + + + + + Log in a user give a user supplied OTP received via email. + + + + Defaults to MagicLink + + + + + Add a listener to get errors that occur outside of a typical Exception flow. + In particular, this is used to get errors and messages from the background thread + that automatically manages refreshing the user's token. + + Callback method for debug messages + + + + Loads the session from the persistence layer. + + + + + Retrieves the settings from the server + + + + + + Returns the client options. + + + + + Get User details by JWT. Can be used to validate a JWT. + + A valid JWT. Must be a JWT that originates from a user. + + + + + Posts messages and exceptions to the debug listener. This is particularly useful for sorting + out issues with the refresh token background thread. + + + + + + + Let all of the listeners know that the stateless client is being shutdown. + + In particular, the background thread that is used to refresh the token is stopped. + + + + + Refreshes a Token using the current session. + + + + + + Interface for a session persistence auth state handler. + + + + + The persistence implementation for the client (e.g. file system, local storage, etc). + + + + + Routes auth state changes to the persistence implementation. + + + + + + + Interface for session persistence. As a reminder, make sure you handle exceptions and + other error conditions in your implementation. + + + + + Saves the session to the persistence implementation. + + + + + + Destroys the session in the persistence implementation. Usually this means + deleting the session file or clearing local storage. + + + + + Loads the session from the persistence implementation. Returns null if there is no session. + + + + + + A Stateless Gotrue Client + + + var options = new StatelessClientOptions { Url = "https://mygotrueurl.com" }; + var user = await client.SignIn("user@email.com", "fancyPassword", options); + + + + + Create a user + + A valid JWT. Must be a full-access API key (e.g. service_role key). + + + + + + + Create a user + + A valid JWT. Must be a full-access API key (e.g. service_role key). + + + + + + + + + Deletes a User. + + + this token needs role 'supabase_admin' or 'service_role' + + + + + + Initialize/retrieve the underlying API for this client + + + + + + + Parses a out of a 's Query parameters. + + + + + + + + Get User details by JWT. Can be used to validate a JWT. + + A valid JWT. Must be a JWT that originates from a user. + + + + + + Get User details by Id + + A valid JWT. Must be a full-access API key (e.g. service_role key). + + + + + + + Sends an invite email link to the specified email. + + + this token needs role 'supabase_admin' or 'service_role' + + + + + + + Lists users + + A valid JWT. Must be a full-access API key (e.g. service_role key). + + A string for example part of the email + Snake case string of the given key, currently only created_at is supported + asc or desc, if null desc is used + page to show for pagination + items per page for pagination + + + + + Refreshes a Token + + + + + + + + + Sends a reset request to an email address. + + + + + + + + + Sends a Magic email login link to the specified email. + + + + + + + + + Retrieves a Url to redirect to for signing in with a . + + This method will need to be combined with when the + Application receives the Oauth Callback. + + + var client = Supabase.Gotrue.Client.Initialize(options); + var url = client.SignIn(Provider.Github); + + // Do Redirect User + + // Example code + Application.HasReceivedOauth += async (uri) => { + var session = await client.GetSessionFromUri(uri, true); + } + + + + + + + + + Log in an existing user, or login via a third-party provider. + + Type of Credentials being passed + An email, phone, or RefreshToken + Password to account (optional if `RefreshToken`) + + + + + + Sends a Magic email login link to the specified email. + + + + + + + + + Signs in a User with an email address and password. + + + + + + + + + Logout a User + This will revoke all refresh tokens for the user. + JWT tokens will still be valid for stateless auth until they expire. + + + + + + + + Signs up a user + + Type of signup + Phone or Email + + + Object containing redirectTo and optional user metadata (data) + + + + + Signs up a user by email address + + + + + Object containing redirectTo and optional user metadata (data) + + + + + Updates a User's attributes + + + + + + + + + Update user by Id + + A valid JWT. Must be a full-access API key (e.g. service_role key). + + + + + + + + Log in a user given a User supplied OTP received via mobile. + + The user's phone number. + Token sent to the user's phone. + + + + + + + Log in a user give a user supplied OTP received via email. + + + + + + + + + + Retrieve the current settings for the Gotrue instance. + + + + + + + A utility class that represents options for sending a User an Invitation + + + + + The URL which will be appended to the email link sent to the user's email address. Once clicked the user will end up on this URL. + + + + + A custom data object to store additional metadata about the user. This maps to the `auth.users.user_metadata` column. + + + + + A Network status system to pair with the Client. + + + https://learn.microsoft.com/en-us/dotnet/fundamentals/networking/network-info + + + + + + True if the network has been checked. + + + + + A delegate for listening to network changes. + + + + + Adds a listener to the network status system. + + + + + + Removes a listener from the network status system. + + + + + + The that this network status system is attached to. + + + + + Pings the URL in the to check if the network is online. + + https://PROJECTID.supabase.co/auth/v1/settings + + + + + Starts the network status system. This will listen to the OS for network changes, + and also does a ping check to confirm the current network status. + + + + + Removes the network status system checker from the OS. + + + + + A utility class that represents a successful response from a request to send a user + Passwordless Sign In. + + + + + PKCE Verifier generated if using the PKCE flow type. + + + + + Manages the persistence of the Gotrue Session. You'll want to install a persistence listener + to persist user sessions between app restarts. + + + + + Create a new persistence listener + + + + + + + + + If you install a persistence listener, it will be called when the user signs in and signs out. + + + + + + + + + Represents an OAuth Provider's URI and Parameters. + + For use with Provider Auth, PKCE Auth, and ID Token auth. + + + + + The Generated Provider's URI + + + + + The PKCE Verifier nonce, only set during a PKCE auth flow. + + + + + Constructor + + + + + + A utility class that represents a successful response from a request to send a user's password reset using the PKCE flow. + + + + + The Email representing the user's account whose password is being reset. + + + + + The OAuth Flow Type. + + + + + The URL to send the user to after they click the password reset link. + + + + + Verification token received when the user completes the captcha on the site. + + + + + PKCE Verifier generated if using the PKCE flow type. + + + + + Initializes a new instance of the class with the provided email. + + The email of the user account for which the password is being reset. + + + + A utility class that represents a successful response from a request to send a user's password reset using the PKCE flow. + + + + + PKCE Verifier generated if using the PKCE flow type. + + + + + A wrapper class from which all Responses derive. + + + + + The HTTP response message. + + + + + The HTTP response content as a string. + + + + + An extended user response returned when generating a link. + + + + + The email link to send to the user. + The action_link follows the following format: auth/v1/verify?type={verification_type}&token={hashed_token}&redirect_to={redirect_to} + + + + + The raw email OTP. + You should send this in the email if you want your users to verify using an OTP instead of the action link. + + + + + The hashed token appended to the action link. + + + + + The URL appended to the action link. + + + + + The verification type that the email link is associated to. + + + + + Represents a Gotrue Session + + + + + The expiration date of this session, in UTC time. + + + + + + Returns true if the session has expired + + + + + + Settings data retrieved from the GoTrue server. + + + + + A custom data object to store the user's metadata. This maps to the `auth.users.raw_user_meta_data` column. + + The `data` should be a JSON serializable object that includes user-specific info, such as their first and last name. + + + + + Verification token received when the user completes the captcha on the site. + + + + + Options used for signing in a user. + + + + + A URL or mobile address to send the user to after they are confirmed. + + + + + A space-separated list of scopes granted to the OAuth application. + + + + + An object of key-value pairs containing query parameters granted to the OAuth application. + + + + + Represents an OAuth Flow type, defaults to `Implicit` + + PKCE is recommended for mobile and server-side applications. + + + + + Options used for signing in a user with passwordless Options + + + + + A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column. + + The `data` should be a JSON serializable object that includes user-specific info, such as their first and last name. + + + + + Verification token received when the user completes the captcha on the site. + + + + + If set to false, this method will not create a new user. Defaults to true. + + + + + + + + The user's email address. + + + + + The redirect url embedded in the email link. + + + + + Represents an OAuth Flow type, defaults to `Implicit` + + PKCE is recommended for mobile and server-side applications. + + + + The user's email address. + + + + + + + Represents a messaging channel to use for sending the OTP. + + + + + SMS + + + + + + + + + + The user's phone number + + + + + Messaging channel to use (e.g. whatsapp or sms), Defaults to SMS. + + + + The user's phone number + + + + Options used for signing up a user. + + + + + Optional user metadata. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Class representation options available to the . + + + + + Gotrue Endpoint + + + + + Headers to be sent with subsequent requests. + + + + + Very unlikely this flag needs to be changed except in very specific contexts. + + Enables tests to be E2E tests to be run without requiring users to have + confirmed emails - mirrors the Gotrue server's configuration. + + + + + Manages the auto-refresh of the Gotrue Session. + + + + + Internal timer reference for token refresh + + AutoRefreshToken + + + + + + Turn on debug logging for the TokenRefresh + + + + + Sets up the TokenRefresh class, bound to a specific client + + + + + + Turns the auto-refresh timer on or off based on the current auth state + + The Client and Session data + + + + + + Sets up the auto-refresh timer + + + + + The timer calls this method at the configured interval to refresh the token. + + If the user is offline, it won't try to refresh the token. + + + + + Create a new refresh timer. + + + We pass to ensure the handler only runs once. + We create a new timer after each refresh so that each refresh runs in a new thread. + This keeps the refresh going if a thread crashes. + Creating a thread each refresh is not so expensive when the refresh interval is an hour or longer. + + + + + Interval should be t - (1/5(n)) (i.e. if session time (t) 3600s, attempt refresh at 2880s or 720s (1/5) seconds before expiration) + + + + + Represents a Gotrue User + Ref: https://supabase.github.io/gotrue-js/interfaces/User.html + + + + + Ref: https://supabase.github.io/gotrue-js/interfaces/AdminUserAttributes.html + + + + + A custom data object for app_metadata that. Can be any JSON serializable data. + Only a service role can modify + + Note: GoTrue does not yest support creating a user with app metadata + (see: https://github.com/supabase/gotrue-js/blob/d7b334a4283027c65814aa81715ffead262f0bfa/test/GoTrueApi.test.ts#L45) + + + + + A custom data object for user_metadata. Can be any JSON serializable data. + Only a service role can modify. + + + + + Sets if a user has confirmed their email address. + Only a service role can modify + + + + + Sets if a user has confirmed their phone number. + Only a service role can modify + + + + + Ref: https://supabase.github.io/gotrue-js/interfaces/UserAttributes.html + + + + + A custom data object for user_metadata that a user can modify.Can be any JSON. + + + + + Ref: https://supabase.github.io/gotrue-js/interfaces/VerifyEmailOTPParams.html + + + + + Ref: https://supabase.github.io/gotrue-js/interfaces/UserIdentity.html + + + + diff --git a/Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0/Supabase.Gotrue.xml.meta b/Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0/Supabase.Gotrue.xml.meta new file mode 100644 index 0000000..95b46ca --- /dev/null +++ b/Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0/Supabase.Gotrue.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cbc6b47ee9727c348878a65b9d4bd7da +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/postgrest-csharp.3.5.1.meta b/Assets/Packages/postgrest-csharp.3.5.1.meta new file mode 100644 index 0000000..3f79d7c --- /dev/null +++ b/Assets/Packages/postgrest-csharp.3.5.1.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ab69047131f7cf0409565caf19731aa8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/postgrest-csharp.3.5.1/.signature.p7s b/Assets/Packages/postgrest-csharp.3.5.1/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..aec7105299e1c6efda2602a069d444a9ea36e09b GIT binary patch literal 11513 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 literal 0 HcmV?d00001 diff --git a/Assets/Packages/postgrest-csharp.3.5.1/README.md b/Assets/Packages/postgrest-csharp.3.5.1/README.md new file mode 100644 index 0000000..d6afe5d --- /dev/null +++ b/Assets/Packages/postgrest-csharp.3.5.1/README.md @@ -0,0 +1,360 @@ +

    + +

    + +
    + +--- + +## Now supporting (many) LINQ expressions! + +```c# +await client.Table() + .Select(x => new object[] { x.Id, x.Name, x.Tags, x.ReleaseDate }) + .Where(x => x.Tags.Contains("Action") || x.Tags.Contains("Adventure")) + .Order(x => x.ReleaseDate, Ordering.Descending) + .Get(); + +await client.Table() + .Set(x => x.WatchedAt, DateTime.Now) + .Where(x => x.Id == "11111-22222-33333-44444") + // Or .Filter(x => x.Id, Operator.Equals, "11111-22222-33333-44444") + .Update(); + +``` + +--- + +Documentation can be found [here](https://supabase-community.github.io/postgrest-csharp/api/Postgrest.html). + +Postgrest-csharp is written primarily as a helper library +for [supabase/supabase-csharp](https://github.com/supabase/supabase-csharp), however, it should be easy enough to use +outside of the supabase ecosystem. + +The bulk of this library is a translation and c-sharp-ification of +the [supabase/postgrest-js](https://github.com/supabase/postgrest-js) library. + +## Getting Started + +Postgrest-csharp is _heavily_ dependent on Models deriving from `BaseModel`. To interact with the API, one must have the +associated +model specified. + +To use this library on the Supabase Hosted service but separately from the `supabase-csharp`, you'll need to specify +your url and public key like so: + +```c# +var auth = new Supabase.Gotrue.Client(new ClientOptions +{ + Url = "https://PROJECT_ID.supabase.co/auth/v1", + Headers = new Dictionary + { + { "apikey", SUPABASE_PUBLIC_KEY }, + { "Authorization", $"Bearer {SUPABASE_USER_TOKEN}" } + } +}) +``` + +Leverage `Table`,`PrimaryKey`, and `Column` attributes to specify names of classes/properties that are different from +their C# Versions. + +```c# +[Table("messages")] +public class Message : BaseModel +{ + [PrimaryKey("id")] + public int Id { get; set; } + + [Column("username")] + public string UserName { get; set; } + + [Column("channel_id")] + public int ChannelId { get; set; } + + public override bool Equals(object obj) + { + return obj is Message message && + Id == message.Id; + } + + public override int GetHashCode() + { + return HashCode.Combine(Id); + } +} +``` + +Utilizing the client is then just a matter of instantiating it and specifying the Model one is working with. + +```c# +void Initialize() +{ + var client = new Client("http://localhost:3000"); + + // Get All Messages + var response = await client.Table().Get(); + List models = response.Models; + + // Insert + var newMessage = new Message { UserName = "acupofjose", ChannelId = 1 }; + await client.Table().Insert(); + + // Update + var model = response.Models.First(); + model.UserName = "elrhomariyounes"; + await model.Update(); + + // Delete + await response.Models.Last().Delete(); +} +``` + +## Foreign Keys, Join Tables, and Relationships + +The Postgrest server does introspection on relationships between tables and supports returning query data from +tables with these included. **Foreign key constrains are required for postgrest to detect these relationships.** + +This library implements the attribute, `Reference` to specify on a model when a relationship should be included in a +query. + +- [One-to-one Relationships](https://postgrest.org/en/stable/api.html#one-to-one-relationships): One-to-one + relationships are detected if there’s an unique constraint on a foreign key. +- [One-to-many Relationships](https://postgrest.org/en/stable/api.html#one-to-many-relationships): The inverse + one-to-many relationship between two tables is detected based on the foreign key reference. +- [Many-to-many Relationships](https://postgrest.org/en/stable/api.html#many-to-many-relationships): Many-to-many + relationships are detected based on the join table. The join table must contain foreign keys to other two tables and + they must be part of its composite key. + +Given the following schema: + +![example schema](.github/postgrest-relationship-example.drawio.png) + +We can define the following models: + +```c# +[Table("movie")] +public class Movie : BaseModel +{ + [PrimaryKey("id")] + public int Id { get; set; } + + [Column("name")] + public string Name { get; set; } + + [Reference(typeof(Person))] + public List Persons { get; set; } + + [Column("created_at")] + public DateTime CreatedAt { get; set; } +} + +[Table("person")] +public class Person : BaseModel +{ + [PrimaryKey("id")] + public int Id { get; set; } + + [Column("first_name")] + public string FirstName { get; set; } + + [Column("last_name")] + public string LastName { get; set; } + + [Reference(typeof(Profile))] + public Profile Profile { get; set; } + + [Column("created_at")] + public DateTime CreatedAt { get; set; } +} + +[Table("profile")] +public class Profile : BaseModel +{ + [Column("email")] + public string Email { get; set; } +} +``` + +**Note that each related model should inherit `BaseModel` and specify its `Table` and `Column` attributes as usual.** + +The `Reference` Attribute by default will include the referenced model in all GET queries on the table (this can be +disabled +in its constructor). + +As such, a query on the `Movie` model (given the above) would return something like: + +```js +[ + { + id: 1, + created_at: "2022-08-20T00:29:45.400188", + name: "Top Gun: Maverick", + person: [ + { + id: 1, + created_at: "2022-08-20T00:30:02.120528", + first_name: "Tom", + last_name: "Cruise", + profile: { + profile_id: 1, + email: "tom.cruise@supabase.io", + created_at: "2022-08-20T00:30:33.72443" + } + }, + { + id: 3, + created_at: "2022-08-20T00:30:33.72443", + first_name: "Bob", + last_name: "Saggett", + profile: { + profile_id: 3, + email: "bob.saggett@supabase.io", + created_at: "2022-08-20T00:30:33.72443" + } + } + ] + }, + // ... +] +``` + +### Circular References + +Circular relations can be added between models, however, circular relations should only be parsed one level deep for +models. For example, given the +models [here](https://github.com/supabase-community/postgrest-csharp/blob/master/PostgrestTests/Models/LinkedModels.cs), +a raw response would look like the following (note that the `Person` object returns the root `Movie` and +the `Person->Profile` returns its root `Person` object). + +If desired, this can be avoided by making specific join models that do not have the circular references. + +```json +[ + { + "id": "68722a22-6a6b-4410-a955-b4eb8ca7953f", + "created_at": "0001-01-01T05:51:00", + "name": "Supabase in Action", + "person": [ + { + "id": "6aa849d8-dd09-4932-bc6f-6fe3b585e87f", + "first_name": "John", + "last_name": "Doe", + "created_at": "0001-01-01T05:51:00", + "movie": [ + { + "id": "68722a22-6a6b-4410-a955-b4eb8ca7953f", + "name": "Supabase in Action", + "created_at": "0001-01-01T05:51:00" + } + ], + "profile": { + "person_id": "6aa849d8-dd09-4932-bc6f-6fe3b585e87f", + "email": "john.doe@email.com", + "created_at": "0001-01-01T05:51:00", + "person": { + "id": "6aa849d8-dd09-4932-bc6f-6fe3b585e87f", + "first_name": "John", + "last_name": "Doe", + "created_at": "0001-01-01T05:51:00" + } + } + }, + { + "id": "07abc67f-bf7d-4865-b2c0-76013dc2811f", + "first_name": "Jane", + "last_name": "Buck", + "created_at": "0001-01-01T05:51:00", + "movie": [ + { + "id": "68722a22-6a6b-4410-a955-b4eb8ca7953f", + "name": "Supabase in Action", + "created_at": "0001-01-01T05:51:00" + } + ], + "profile": { + "person_id": "07abc67f-bf7d-4865-b2c0-76013dc2811f", + "email": "jane.buck@email.com", + "created_at": "0001-01-01T05:51:00", + "person": { + "id": "07abc67f-bf7d-4865-b2c0-76013dc2811f", + "first_name": "Jane", + "last_name": "Buck", + "created_at": "0001-01-01T05:51:00" + } + } + } + ] + } +] +``` + +### Top Level Filtering + +**By default** relations expect to be used as top level filters on a query. If following the models above, this would +mean that a `Movie` with no `Person` relations on it would not return on a query **unless** the `Relation` +has `useInnerJoin` set to `false`: + +The following model would return any movie, even if there are no `Person` models associated with it: + +```c# +[Table("movie")] +public class Movie : BaseModel +{ + [PrimaryKey("id")] + public string Id { get; set; } + + [Column("name")] + public string? Name { get; set; } + + [Reference(typeof(Person), useInnerJoin: false)] + public List People { get; set; } = new(); +} +``` + +**Further Notes**: + +- Postgrest _does not support nested inserts or upserts_. Relational keys on models will be ignored when attempting to + insert or upsert on a root model. +- The `Relation` attribute uses reflection to only select the attributes specified on the Class Model (i.e. + the `Profile` model has a property only for `email`, only the property will be requested in the query). + +## Status + +- [x] Connects to PostgREST Server +- [x] Authentication +- [x] Basic Query Features + - [x] CRUD + - [x] Single + - [x] Range (to & from) + - [x] Limit + - [x] Limit w/ Foreign Key + - [x] Offset + - [x] Offset w/ Foreign Key +- [x] Advanced Query Features + - [x] Filters + - [x] Ordering +- [ ] Custom Serializers + - [ ] [Postgres Range](https://www.postgresql.org/docs/9.3/rangetypes.html) + - [x] `int4range`, `int8range` + - [ ] `numrange` + - [ ] `tsrange`, `tstzrange`, `daterange` +- [x] Models + - [x] `BaseModel` to derive from + - [x] Coercion of data into Models +- [x] Unit Testing +- [x] Nuget Package and Release + +## Package made possible through the efforts of: + +| | | +|:----------------------------------------------------------------------:|:---------------------------------------------------------------------------:| +| [acupofjose](https://github.com/acupofjose) | [elrhomariyounes](https://github.com/elrhomariyounes) | + +## Contributing + +We are more than happy to have contributions! Please submit a PR. diff --git a/Assets/Packages/postgrest-csharp.3.5.1/README.md.meta b/Assets/Packages/postgrest-csharp.3.5.1/README.md.meta new file mode 100644 index 0000000..f847b18 --- /dev/null +++ b/Assets/Packages/postgrest-csharp.3.5.1/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4e101396409e89643908532e33b789be +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/postgrest-csharp.3.5.1/icon.png b/Assets/Packages/postgrest-csharp.3.5.1/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eb1468e4cc6f2fe2ce24c6740389535073ab60e9 GIT binary patch literal 5771 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 X;OLIKfIj`9$&96;qNCiPXdC^1ZeRCi literal 0 HcmV?d00001 diff --git a/Assets/Packages/postgrest-csharp.3.5.1/icon.png.meta b/Assets/Packages/postgrest-csharp.3.5.1/icon.png.meta new file mode 100644 index 0000000..5db0b5b --- /dev/null +++ b/Assets/Packages/postgrest-csharp.3.5.1/icon.png.meta @@ -0,0 +1,156 @@ +fileFormatVersion: 2 +guid: fd14d51228251f6469816d34f2bb009b +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 2 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/postgrest-csharp.3.5.1/lib.meta b/Assets/Packages/postgrest-csharp.3.5.1/lib.meta new file mode 100644 index 0000000..1ce9494 --- /dev/null +++ b/Assets/Packages/postgrest-csharp.3.5.1/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a3f8d01bd87536645bfdf07aa3875e9c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0.meta b/Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0.meta new file mode 100644 index 0000000..39eebbf --- /dev/null +++ b/Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 722c5e3d046392e428844e384d54384b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0/Supabase.Postgrest.dll b/Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0/Supabase.Postgrest.dll new file mode 100644 index 0000000000000000000000000000000000000000..48518c80aa5d2e4d3f1c2fa23a748633edd06da3 GIT binary patch literal 76800 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 literal 0 HcmV?d00001 diff --git a/Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0/Supabase.Postgrest.dll.meta b/Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0/Supabase.Postgrest.dll.meta new file mode 100644 index 0000000..f50c8c3 --- /dev/null +++ b/Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0/Supabase.Postgrest.dll.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: 3f7d789c8adbd974a9f2dccf72483324 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 3 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0/Supabase.Postgrest.xml b/Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0/Supabase.Postgrest.xml new file mode 100644 index 0000000..a2dacdf --- /dev/null +++ b/Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0/Supabase.Postgrest.xml @@ -0,0 +1,1879 @@ + + + + Supabase.Postgrest + + + +

    + Used to map a C# property to a Postgrest Column. + + + + class User : BaseModel { + [ColumnName("firstName")] + public string FirstName {get; set;} + } + + + + + + The name in postgres of this column. + + + + + Specifies what should be serialized in the event this column's value is NULL + + + + + If the performed query is an Insert or Upsert, should this value be ignored? + + + + + If the performed query is an Update, should this value be ignored? + + + + + + + + Used to map a C# property to a Postgrest PrimaryKey. + + + + class User : BaseModel { + [PrimaryKey("id")] + public string Id {get; set;} + } + + + + + + Would be set to false in the event that the database handles the generation of this property. + + + + + Used to specify that a foreign key relationship exists in PostgreSQL + + See: https://postgrest.org/en/stable/api.html#resource-embedding + + + + + Specifies the Join type on this reference. PostgREST only allows for a LEFT join and an INNER join. + + + + + INNER JOIN: returns rows when there is a match on both the source and the referenced tables. + + + + + LEFT JOIN: returns all rows from the source table, even if there are no matches in the referenced table + + + + + Type of the model referenced + + + + + Column this attribute references as specified in Postgres, DOES NOT need to be set if is set. + + + + + The explicit SQL defined foreign key that this references. + + + + + Table name of model + + + + + Columns that exist on the model we will select from. + + + + + If the performed query is an Insert or Upsert, should this value be ignored? (DEFAULT TRUE) + + + + + If the performed query is an Update, should this value be ignored? (DEFAULT TRUE) + + + + + If Reference should automatically be included in queries on this reference. (DEFAULT TRUE) + + + + + As to whether the query will filter top-level rows. + + See: https://postgrest.org/en/stable/api.html#resource-embedding + + + + Establishes a reference between two tables + Model referenced + Should referenced be included in queries? + Specifies the join type for this relationship + Column this attribute references as specified in Postgres, DOES NOT need to be set if <see cref="ForeignKey"/> is set. + Foreign Key this attribute references as specified in Postgres (only required if the model references the same table multiple times) + + + + Establishes a reference between two tables + Model referenced + Should referenced be included in queries? + As to whether the query will filter top-level rows. + Column this attribute references as specified in Postgres, DOES NOT need to be set if is set. + Foreign Key this attribute references as specified in Postgres (only required if the model references the same table multiple times) + + + + + + + + Parses relationships that exist on this model. Called by + + + + + + Used to map a C# Model to a Postgres Table. + + + + [Table("user")] + class User : BaseModel { + [ColumnName("firstName")] + public string FirstName {get; set;} + } + + + + + + + + + Custom Serializer resolvers and converters that will be used for encoding and decoding Postgrest JSON responses. + + By default, Postgrest seems to use a date format that C# and Newtonsoft do not like, so this initial + configuration handles that. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Function that can be set to return dynamic headers. + + Headers specified in the constructor options will ALWAYS take precedence over headers returned by this function. + + + + + Should be the first call to this class to initialize a connection with a Postgrest API Server + + Api Endpoint (ex: "http://localhost:8000"), no trailing slash required. + Optional client configuration. + + + + + + + + + + + + + + + + + Options that can be passed to the Client configuration + + + + + See: https://postgrest.org/en/v7.0.0/api.html?highlight=operators#operators + + + + + See: https://postgrest.org/en/v7.0.0/api.html?highlight=nulls%20first#ordering + + + + + See: https://postgrest.org/en/v7.0.0/api.html?highlight=count#estimated-count + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Used by Newtonsoft.Json to convert a C# range into a Postgrest range. + + + + + A Singleton used for debug notifications + + + + + Returns the Singleton Instance. + + + + + Adds a debug listener + + + + + + Removes a debug handler. + + + + + + Clears debug handlers. + + + + + Notifies debug listeners. + + + + + + + + https://postgrest.org/en/v10.2/errors.html?highlight=exception#http-status-codes + + + + + Errors from Postgrest are wrapped by this exception + + + + + + + + + + + The response object from Postgrest + + + + + The content of the response object from Postgrest + + + + + The HTTP status code of the response object from Postgrest + + + + + Postgres client's best effort at decoding the error from the GoTrue server. + + + + + Attempts to decode the error from the GoTrue server. + + + + + Adds functionality to get a typed Attribute attached to an enum value. + + + + + Gets a typed Attribute attached to an enum value. + + + + + + + + Adds functionality to transform a C# Range to a Postgrest String. + + + https://www.postgresql.org/docs/14/rangetypes.html + + + + + + Transforms a C# Range to a Postgrest String. + + + + + + + Pull the instance info out of the Uri + + + + + Pull the instance info out of the Uri + + + + + + + Helper to make a request using the defined parameters to an API Endpoint and coerce into a model. + + + + + + + + + + + + + + + Helper to make a request using the defined parameters to an API Endpoint. + + + + + + + + + + + + + Prepares the request with appropriate HTTP headers expected by Postgrest. + + + + + + + + + + + Delegate representing the request to be sent to the remote server. + + + + + A internal singleton used for hooks applied to and + + + + + Returns the Singleton Instance. + + + + + Adds a handler that is called prior to a request being sent. + + + + + + Removes an handler. + + + + + + Clears all handlers. + + + + + Notifies all listeners. + + + + + + + + + + + + A caching provider than can be used by postgrest to store requests. + + + + + Gets an item from a caching solution, should coerce into a datatype. + + This will most likely be a JSON deserialization approach. + + A reproducible key for a defined query. + + + + + + Sets an item within a caching solution, should store in a way that the data can be retrieved and coerced into a generic type by + + This will most likely be a JSON serialization approach. + + A reproducible key for a defined query. + An object of serializable data. + + + + + Clear an item within a caching solution by a key. + + A reproducible key for a defined query. + + + + + An empty/clear cache implementation. + + + + + + Client interface for Postgrest + + + + + API Base Url for subsequent calls. + + + + + The Options was initialized with. + + + + + Adds a handler that is called prior to a request being sent. + + + + + + Removes an handler. + + + + + + Clears all handlers. + + + + + Adds a debug handler + + + + + + Removes a debug handler + + /// + + + + Clears debug handlers + + + + + Perform a stored procedure call. + + The function name to call + The parameters to pass to the function call + + + + + Perform a stored procedure call. + + The function name to call + The parameters to pass to the function call + A type used for hydrating the HTTP response content (hydration through JSON.NET) + A hydrated model + + + + Returns a Table Query Builder instance for a defined model - representative of `USE $TABLE` + + Custom Model derived from `BaseModel` + + + + + Returns a Table Query Builder instance with a Cache Provider for a defined model - representative of `USE #$TABLE` + + + + + + + + Interface for getting debug info from Postgrest + + + + + + + + Adds a debug handler + + + + + + Removes a debug handler + + + + + + Clears debug handlers + + + + + Logs a message + + + + + + + + Client interface for Postgrest + + + + + + API Base Url for subsequent calls. + + + + + Name of the Table parsed by the Model. + + + + + Generates the encoded URL with defined query parameters that will be sent to the Postgrest API. + + + + + Adds an AND Filter to the current query args. + + + + + + + Clears currently defined query values. + + + + + By using the columns query parameter it’s possible to specify the payload keys that will be inserted and ignore the rest of the payload. + + The rest of the JSON keys will be ignored. + Using this also has the side-effect of being more efficient for Bulk Insert since PostgREST will not process the JSON and it’ll send it directly to PostgreSQL. + + See: https://postgrest.org/en/stable/api.html#specifying-columns + + + + + + + By using the columns query parameter it’s possible to specify the payload keys that will be inserted and ignore the rest of the payload. + + The rest of the JSON keys will be ignored. + Using this also has the side-effect of being more efficient for Bulk Insert since PostgREST will not process the JSON and it’ll send it directly to PostgreSQL. + + See: https://postgrest.org/en/stable/api.html#specifying-columns + + + + + + + Returns ONLY a count from the specified query. + + See: https://postgrest.org/en/v7.0.0/api.html?highlight=count + + The kind of count. + + + + + + Executes a delete request using the defined query params on the current instance. + + + + + + Executes a delete request using the model's primary key as the filter for the request. + + + + + + + + + Add a Filter to a query request + + Column Name in Table. + Operation to perform. + Value to filter with, must be a `string`, `List<object>`, `Dictionary<string, object>`, `FullTextSearchConfig`, or `Range` + + + + + Add a filter to a query request using a predicate to select column. + + Expects a columns from the Model to be returned + Operation to perform. + Value to filter with, must be a `string`, `List<object>`, `Dictionary<string, object>`, `FullTextSearchConfig`, or `Range` + + + + + + Executes the query using the defined filters on the current instance. + + + + + + + Executes a BULK INSERT query using the defined query params on the current instance. + + + + + A typed model response from the database. + + + + Executes an INSERT query using the defined query params on the current instance. + + + + + A typed model response from the database. + + + + Sets a limit with an optional foreign table reference. + + + + + + + + Finds all rows whose columns match the specified `query` object. + + The object to filter with, with column names as keys mapped to their filter values. + + + + + Fills in query parameters based on a given model's primary key(s). + + A model with a primary key column + + + + + Adds a NOT filter to the current query args. + + + + + + + Adds a NOT filter to the current query args. + + + + + + + + + Adds a NOT filter to the current query args. + + Expects a column from the model to be returned. + + + + + + + Adds a NOT filter to the current query args. + Allows queries like: + + await client.Table<User>().Not("status", Operators.In, new List<string> {"AWAY", "OFFLINE"}).Get(); + + + + + + + + + + Adds a NOT filter to the current query args. + Allows queries like: + + await client.Table<User>().Not("status", Operators.In, new List<string> {"AWAY", "OFFLINE"}).Get(); + + + Expects a column from the model to be returned. + + + + + + + Adds a NOT filter to the current query args. + + Allows queries like: + + await client.Table<User>().Not("status", Operators.Equal, "OFFLINE").Get(); + + + + + + + + + + Adds a NOT filter to the current query args. + + Allows queries like: + + await client.Table<User>().Not("status", Operators.Equal, "OFFLINE").Get(); + + + Expects a column from the model to be returned. + + + + + + + Sets an offset with an optional foreign table reference. + + + + + + + + By specifying the onConflict query parameter, you can make UPSERT work on a column(s) that has a UNIQUE constraint. + + + + + + + Set an onConflict query parameter for UPSERTing on a column that has a UNIQUE constraint using a linq predicate. + + Expects a column from the model to be returned. + + + + + Adds a OR Filter to the current query args. + + + + + + + Adds an ordering to the current query args. + + NOTE: If multiple orderings are required, chain this function with another call to + Order(Expression{Func{T,object}},Ordering,NullPosition) + + . + + Column Name + + + + + + + Adds an ordering to the current query args using a predicate function. + + NOTE: If multiple orderings are required, chain this function with another call to + Order(Expression{Func{T,object}},Ordering,NullPosition) + + . + + + >Expects a columns from the Model to be returned + + + + + + Adds an ordering to the current query args. + + NOTE: If multiple orderings are required, chain this function with another call to + Order(Expression{Func{T,object}},Ordering,NullPosition) + + . + + + + + + + + + + Sets a FROM range, similar to a `StartAt` query. + + + + + + + Sets a bounded range to the current query. + + + + + + + + Select columns for query. + + + + + + + Select columns using a predicate function. + + For example: + `Table<Movie>().Select(x => new[] { x.Id, x.Name, x.CreatedAt }).Get();` + + Expects an array of columns from the Model to be returned. + + + + + Filter a query based on a predicate function. + + Note: Chaining multiple calls will + be parsed as an "AND" query. + + Examples: + `Table<Movie>().Where(x => x.Name == "Top Gun").Get();` + `Table<Movie>().Where(x => x.Name == "Top Gun" || x.Name == "Mad Max").Get();` + `Table<Movie>().Where(x => x.Name.Contains("Gun")).Get();` + `Table<Movie>().Where(x => x.CreatedAt <= new DateTime(2022, 08, 21)).Get();` + `Table<Movie>().Where(x => x.Id > 5 && x.Name.Contains("Max")).Get();` + + + + + + + Executes a query that expects to have a single object returned, rather than returning list of models + it will return a single model. + + + + + + + Specifies a key and value to be updated. Should be combined with filters/where clauses. + + Can be called multiple times to set multiple values. + + + + + + + + Specifies a KeyValuePair to be updated. Should be combined with filters/where clauses. + + Can be called multiple times to set multiple values. + + + + + + + + Calls an Update function after `Set` has been called. + + + + + + + + + Executes an UPDATE query using the defined query params on the current instance. + + + + + A typed response from the database. + + + + Executes an UPSERT query using the defined query params on the current instance. + + By default the new record is returned. Set QueryOptions.ReturnType to Minimal if you don't need this value. + By specifying the QueryOptions.OnConflict parameter, you can make UPSERT work on a column(s) that has a UNIQUE constraint. + QueryOptions.DuplicateResolution.IgnoreDuplicates Specifies if duplicate rows should be ignored and not inserted. + + + + + + + + + Executes an UPSERT query using the defined query params on the current instance. + + By default the new record is returned. Set QueryOptions.ReturnType to Minimal if you don't need this value. + By specifying the QueryOptions.OnConflict parameter, you can make UPSERT work on a column(s) that has a UNIQUE constraint. + QueryOptions.DuplicateResolution.IgnoreDuplicates Specifies if duplicate rows should be ignored and not inserted. + + + + + + + + + Client interface for Postgrest + + + + + + Performs a Get request, returning a which populates from the cache, if applicable. + + + + + + Represent a type can be used to index a collection either from the start or the end. + + Index is used by the C# compiler to support the new index syntax + + int[] someArray = new int[5] { 1, 2, 3, 4, 5 } ; + int lastElement = someArray[^1]; // lastElement = 5 + + + + + Construct an Index using a value and indicating if the index is from the start or from the end. + The index value. it has to be zero or positive number. + Indicating if the index is from the start or from the end. + + If the Index constructed from the end, index value 1 means pointing at the last element and index value 0 means pointing at beyond last element. + + + + Create an Index pointing at first element. + + + Create an Index pointing at beyond last element. + + + Create an Index from the start at the position indicated by the value. + The index value from the start. + + + Create an Index from the end at the position indicated by the value. + The index value from the end. + + + Returns the index value. + + + Indicates whether the index is from the start or the end. + + + Calculate the offset from the start using the giving collection length. + The length of the collection that the Index will be used with. length has to be a positive value + + For performance reason, we don't validate the input length parameter and the returned offset value against negative values. + we don't validate either the returned offset is greater than the input length. + It is expected Index will be used with collections which always have non negative length/count. If the returned offset is negative and + then used to index a collection will get out of range exception which will be same affect as the validation. + + + + Indicates whether the current Index object is equal to another object of the same type. + An object to compare with this object + + + Indicates whether the current Index object is equal to another Index object. + An object to compare with this object + + + Returns the hash code for this instance. + + + Converts integer number to an Index. + + + Converts the value of the current Index object to its equivalent string representation. + + + Represent a range has start and end indexes. + + Range is used by the C# compiler to support the range syntax. + + int[] someArray = new int[5] { 1, 2, 3, 4, 5 }; + int[] subArray1 = someArray[0..2]; // { 1, 2 } + int[] subArray2 = someArray[1..^0]; // { 2, 3, 4, 5 } + + + + + Represent the inclusive start index of the Range. + + + Represent the exclusive end index of the Range. + + + Construct a Range object using the start and end indexes. + Represent the inclusive start index of the range. + Represent the exclusive end index of the range. + + + Indicates whether the current Range object is equal to another object of the same type. + An object to compare with this object + + + Indicates whether the current Range object is equal to another Range object. + An object to compare with this object + + + Returns the hash code for this instance. + + + Converts the value of the current Range object to its equivalent string representation. + + + Create a Range object starting from start index to the end of the collection. + + + Create a Range object starting from first element in the collection to the end Index. + + + Create a Range object starting from first element to the end. + + + Calculate the start offset and length of range object using a collection length. + The length of the collection that the range will be used with. length has to be a positive value. + + For performance reason, we don't validate the input length parameter against negative values. + It is expected Range will be used with collections which always have non negative length/count. + We validate the range is inside the length scope though. + + + + + Helper class for parsing Select linq queries. + + + + + The columns that have been selected from this linq expression. + + + + + The root call that will be looped through to populate . + + Called like: `Table<Movies>().Select(x => new[] { x.Id, x.Name, x.CreatedAt }).Get()` + + + + + + + A Member Node, representing a property on a BaseModel. + + + + + + + A Unary Node, delved into to represent a property on a BaseModel. + + + + + + + Gets a column name from property based on it's supplied attributes. + + + + + + + Helper class for parsing Set linq queries. + + + + + The column that have been selected from this linq expression. + + + + + The Column's type that value should be checked against. + + + + + Value to be updated. + + + + + A Unary Node, delved into to represent a property on a BaseModel. + + + + + + + A Member Node, representing a property on a BaseModel. + + + + + + + Called when visiting a the expected new KeyValuePair(). + + + + + + + + Gets a column name from property based on it's supplied attributes. + + + + + + + Helper class for parsing Where linq queries. + + + + + The filter resulting from this Visitor, capable of producing nested filters. + + + + + An entry point that will be used to populate . + + Invoked like: + `Table<Movies>().Where(x => x.Name == "Top Gun").Get();` + + + + + + + + Called when evaluating a method + + + + + + + + + A constant expression parser (i.e. x => x.Id == 5 <- where '5' is the constant) + + + + + + + + A member expression parser (i.e. => x.Id == Example.Id <- where both `x.Id` and `Example.Id` are parsed as 'members') + + + + + + + + A unary expression parser (i.e. => x.Id == 1 <- where both `1` is considered unary) + + + + + + + + An instantiated class parser (i.e. x => x.CreatedAt <= new DateTime(2022, 08, 20) <- where `new DateTime(...)` is an instantiated expression. + + + + + + + + Gets a column name (postgrest) from a Member Expression (used on BaseModel) + + + + + + + Get the value from a MemberExpression, which includes both fields and properties. + + + + + + + Creates map between linq and + + + + + + + Gets arguments from a method call expression, (i.e. x => x.Name.Contains("Top")) <- where `Top` is the argument on the called method `Contains` + + + + + + + Abstract class that must be implemented by C# Postgrest Models. + + + + + Gets the values of the PrimaryKey columns (there can be multiple) on a model's instance as defined by the [PrimaryKey] attributes on a property on the model. + + + + + Represents a cacheable model + + + + + + The stored Models + + + + + Cache time in UTC. + + + + + A custom resolver that handles mapping column names and property names as well + as handling the conversion of Postgrest Ranges to a C# `Range`. + + + + + Sets the state of the contract resolver to either insert, update, or upsert. + + + + + + + + + + + Allow for the expression of a query filter with linq expressions. + + + + + + + + + + + + + + + + Allows the creation of a Query Filter using a LINQ expression. + + + + + + + + + + + + String value to be substituted for a null criterion + + + + + + + + + + + + + + Contractor to use single value filtering. + + Column name + Operation: And, Equals, GreaterThan, LessThan, GreaterThanOrEqual, LessThanOrEqual, NotEqual, Is, Adjacent, Not, Like, ILike + + + + + Constructor for Full Text Search. + + Column Name + Operation: FTS, PHFTS, PLFTS, WFTS + + + + + Constructor for Range Queries. + + + Operator: Overlap, StrictlyLeft, StrictlyRight, NotRightOf, NotLeftOf, Adjacent + + + + + Constructor to enable `AND` and `OR` Queries by allowing nested QueryFilters. + + Operation: And, Or + + + + + Constructor to enable `NOT` functionality + + Operation: Not. + + + + + Configuration Object for Full Text Search. + API Reference: http://postgrest.org/en/v7.0.0/api.html?highlight=full%20text%20search#full-text-search + + + + + Query Text + + + + + Defaults to english + + + + + Constructor for Full Text Search. + + + + + + + By default the new record is returned. Set this to 'Minimal' if you don't need this value. + + + + + Specifies if duplicate rows should be ignored and not inserted. + + + + + Count algorithm to use to count rows in a table. + + + + + If the record should be upserted + + + + + /// By specifying the onConflict query parameter, you can make UPSERT work on a column(s) that has a UNIQUE constraint. + + + + + Represents a Request that is backed by a caching strategy. + + + + + + Handler for when Remote Models have been populated + + + + + The Async action that represents the Remote Request + + + + + The Postgrest Table Instance + + + + + The Cache lookup key - a Base64 encoded reproducible URL for this request configuration. + + + + + The Caching provider. + + + + + The Models returned either by Cache Hit or Remote Response + + + + + The response (if applicable) from + + + + + If the cache was hit for this request. + + + + + If the response was stored in cache. + + + + + The stored cache time in UTC. + + + + + + + + Invoked when Remote Models have been populated on this object. + + + + + Constructs a Cache Backed Request that automatically populates itself using the Cache provider (if possible). + + + + + + + + Attempts to load a model from the cache. + + + + + Invokes the stored + + + + + Caches a modeled response using the + + + + + + Raises a property change event. + + + + + + Sets a field within this instance and raises + + + + + + + + + + A wrapper class from which all Responses derive. + + + + + A representation of a successful Postgrest response that transforms the string response into a C# Modelled response. + + + + + + The first model in the response. + + + + + A list of models in the response. + + + + + + + + Class created from a model derived from `BaseModel` that can generate query requests to a Postgrest Endpoint. + + Representative of a `USE $TABLE` command. + + Model derived from `BaseModel`. + + + + + + + + + + + + + Typically called from the Client `new Client.Table<ModelType>` + + Api Endpoint (ex: "http://localhost:8000"), no trailing slash required. + + Optional client configuration. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Generates the encoded URL with defined query parameters that will be sent to the Postgrest API. + + + + + + Transforms an object into a string mapped list/dictionary using `JsonSerializerSettings`. + + + + + + + + + + Transforms the defined filters into the expected Postgrest format. + + See: http://postgrest.org/en/v7.0.0/api.html#operators + + + + + + + + + + Performs an INSERT Request. + + + + + + + + + Represents a table constructed with a + + + + + + Represents a caching provider to be used with Get Requests. + + + + + + + + + + + + + + + Slices the specified array using the specified range. + + + + diff --git a/Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0/Supabase.Postgrest.xml.meta b/Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0/Supabase.Postgrest.xml.meta new file mode 100644 index 0000000..721acf6 --- /dev/null +++ b/Assets/Packages/postgrest-csharp.3.5.1/lib/netstandard2.0/Supabase.Postgrest.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9f6ade59161442c46b11031376158fb2 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/postgrest-csharp.3.5.1/postgrest-csharp.nuspec b/Assets/Packages/postgrest-csharp.3.5.1/postgrest-csharp.nuspec new file mode 100644 index 0000000..4f4f195 --- /dev/null +++ b/Assets/Packages/postgrest-csharp.3.5.1/postgrest-csharp.nuspec @@ -0,0 +1,26 @@ + + + + postgrest-csharp + 3.5.1 + postgrest-csharp + Joseph Schultz <joseph@acupofjose.com> + MIT + https://licenses.nuget.org/MIT + icon.png + README.md + https://github.com/supabase-community/postgrest-csharp + https://avatars.githubusercontent.com/u/54469796?s=200&v=4 + Postgrest-csharp is written primarily as a helper library for supabase/supabase-csharp, however, it should be easy enough to use outside of the supabase ecosystem. + The bulk of this library is a translation and c-sharp-ification of the supabase/postgrest-js library. + MIT + supabase,postgrest + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/postgrest-csharp.3.5.1/postgrest-csharp.nuspec.meta b/Assets/Packages/postgrest-csharp.3.5.1/postgrest-csharp.nuspec.meta new file mode 100644 index 0000000..b0d8572 --- /dev/null +++ b/Assets/Packages/postgrest-csharp.3.5.1/postgrest-csharp.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 80449a7945ab78d4890c268475e4bb07 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/realtime-csharp.6.0.4.meta b/Assets/Packages/realtime-csharp.6.0.4.meta new file mode 100644 index 0000000..c3344a9 --- /dev/null +++ b/Assets/Packages/realtime-csharp.6.0.4.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6242a86adfe17344895af05bdcba8051 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/realtime-csharp.6.0.4/.signature.p7s b/Assets/Packages/realtime-csharp.6.0.4/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..f5a1dd83018667ba2a8037b2c9214300c70eb348 GIT binary patch literal 11512 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 literal 0 HcmV?d00001 diff --git a/Assets/Packages/realtime-csharp.6.0.4/README.md b/Assets/Packages/realtime-csharp.6.0.4/README.md new file mode 100644 index 0000000..9fde2dd --- /dev/null +++ b/Assets/Packages/realtime-csharp.6.0.4/README.md @@ -0,0 +1,298 @@ +

    + +

    +
    + +--- + +## BREAKING CHANGES MOVING FROM v5.x.x to v6.x.x + +- The realtime client now takes a "fail-fast" approach. On establishing an initial connection, client will throw + a `RealtimeException` in `ConnectAsync()` if the socket server is unreachable. After an initial connection has been + established, the **client will continue attempting reconnections indefinitely until disconnected.** +- [Major, New] C# `EventHandlers` have been changed to `delegates`. This should allow for cleaner event data access over + the previous subclassed `EventArgs` setup. Events are scoped accordingly. For example, the `RealtimeSocket` error + handlers will receive events regarding socket connectivity; whereas the `RealtimeChannel` error handlers will receive + events according to `Channel` joining/leaving/etc. This is implemented with the following methods prefixed by ( + Add/Remove/Clear): + - `RealtimeBroadcast.AddBroadcastEventHandler` + - `RealtimePresence.AddPresenceEventHandler` + - `RealtimeSocket.AddStateChangedHandler` + - `RealtimeSocket.AddMessageReceivedHandler` + - `RealtimeSocket.AddHeartbeatHandler` + - `RealtimeSocket.AddErrorHandler` + - `RealtimeClient.AddDebugHandler` + - `RealtimeClient.AddStateChangedHandler` + - `RealtimeChannel.AddPostgresChangeHandler` + - `RealtimeChannel.AddMessageReceivedHandler` + - `RealtimeChannel.AddErrorHandler` + - `Push.AddMessageReceivedHandler` +- [Major, new] `ClientOptions.Logger` has been removed in favor of `Client.AddDebugHandler()` which allows for + implementing custom logging solutions if desired. + - A simple logger can be set up with the following: + ```c# + client.AddDebugHandler((sender, message, exception) => Debug.WriteLine(message)); + ``` +- [Major] `Connect()` has been marked `Obsolete` in favor of `ConnectAsync()` +- Custom reconnection logic has been removed in favor of using the built-in logic from `Websocket.Client@4.6.1`. +- Exceptions that are handled within this library have been marked as `RealtimeException`s. +- The local, docker-composed test suite has been brought back (as opposed to remotely testing on live supabase servers) + to test against. +- Comments have been added throughout the entire codebase and an `XML` file is now generated on build. + +--- + +**See realtime-csharp in action [here](https://multiplayer-csharp.azurewebsites.net/).** + +`realtime-csharp` is written as a client library for [supabase/realtime](https://github.com/supabase/realtime). + +Documentation can be +found [here](https://supabase-community.github.io/realtime-csharp/api/Supabase.Realtime.Client.html). + +The bulk of this library is a translation and c-sharp-ification of +the [supabase/realtime-js](https://github.com/supabase/realtime-js) library. + +**The Websocket-sharp implementation that Realtime-csharp is dependent on does _not_ support TLS1.3** + +## Getting Started + +Care was had to make this API as _easytm_ to interact with as possible. `Connect()` and `Subscribe()` +have `await`-able signatures +which allow Users to be assured that a connection exists prior to interacting with it. + +```c# +var endpoint = "ws://realtime-dev.localhost:4000/socket"; +client = new Client(endpoint); + +await client.ConnectAsync(); + +// Shorthand for registering a postgres_changes subscription +var channel = client.Channel("realtime", "public", "todos"); + +// Listen to Updates +channel.AddPostgresChangeHandler(ListenType.Updates, (_, change) => +{ + var model = change.Model(); + var oldModel = change.OldModel(); +}); +await channel.Subscribe(); +``` + +Leveraging `Postgrest.BaseModel`s, one ought to be able to coerce SocketResponse Records into their associated models by +calling: + +```c# +// ... +var channel = client.Channel("realtime", "public", "users"); + +channel.AddPostgresChangeHandler(ListenType.Inserts, (_, change) => +{ + var model = change.Model(); +}); + +await channel.Subscribe(); +``` + +## Broadcast + +"Broadcast follows the publish-subscribe pattern where a client publishes messages to a channel with a unique +identifier. For example, a user could send a message to a channel with id room-1. + +Other clients can elect to receive the message in real-time by subscribing to the channel with id room-1. If these +clients are online and subscribed then they will receive the message. + +Broadcast works by connecting your client to the nearest Realtime server, which will communicate with other servers to +relay messages to other clients. + +A common use-case is sharing a user's cursor position with other clients in an online game." + +[Find more information here](https://supabase.com/docs/guides/realtime#broadcast) + +**Given the following model (`CursorBroadcast`):** + +```c# +class MouseBroadcast : BaseBroadcast { } +class MouseStatus +{ + [JsonProperty("mouseX")] + public float MouseX { get; set; } + + [JsonProperty("mouseY")] + public float MouseY { get; set; } + + [JsonProperty("userId")] + public string UserId { get; set; } +} +``` + +**Listen for typed broadcast events**: + +```c# +var channel = supabase.Realtime.Channel("cursor"); + +var broadcast = channel.Register(false, true); +broadcast.AddBroadcastEventHandler((sender, _) => +{ + // Retrieved typed model. + var state = broadcast.Current(); + + Debug.WriteLine($"{state.Payload}: {state.Payload.MouseX}:{state.Payload.MouseY}"); +}); +await channel.Subscribe(); +``` + +**Broadcast an event**: + +```c# +var channel = supabase.Realtime.Channel("cursor"); +var data = new CursorBroadcast { Event = "cursor", Payload = new MouseStatus { MouseX = 123, MouseY = 456 } }; +channel.Send(ChannelType.Broadcast, data); +``` + +## Presence + +"Presence utilizes an in-memory conflict-free replicated data type (CRDT) to track and synchronize shared state in an +eventually consistent manner. It computes the difference between existing state and new state changes and sends the +necessary updates to clients via Broadcast. + +When a new client subscribes to a channel, it will immediately receive the channel's latest state in a single message +instead of waiting for all other clients to send their individual states. + +Clients are free to come-and-go as they please, and as long as they are all subscribed to the same channel then they +will all have the same Presence state as each other. + +The neat thing about Presence is that if a client is suddenly disconnected (for example, they go offline), their state +will be automatically removed from the shared state. If you've ever tried to build an “I'm online” feature which handles +unexpected disconnects, you'll appreciate how useful this is." + +[Find more information here](https://supabase.com/docs/guides/realtime#presence) + +**Given the following model: (`UserPresence`)** + +```c# +class UserPresence: BasePresence +{ + [JsonProperty("lastSeen")] + public DateTime LastSeen { get; set; } +} +``` + +**Listen for typed presence events**: + +```c# +var presenceId = Guid.NewGuid().ToString(); + +var channel = supabase.Realtime.Channel("last-seen"); +var presence = channel.Register(presenceId); + +presence.AddPresenceEventHandler(EventType.Sync, (sender, type) => +{ + foreach (var state in presence.CurrentState) + { + var userId = state.Key; + var lastSeen = state.Value.First().LastSeen; + Debug.WriteLine($"{userId}: {lastSeen}"); + } +}); +await channel.Subscribe(); +``` + +**Track a user presence event**: + +```c# +var presenceId = Guid.NewGuid().ToString(); +var channel = supabase.Realtime.Channel("last-seen"); + +var presence = channel.Register(presenceId); +presence.Track(new UserPresence { LastSeen = DateTime.Now }); +``` + +## Postgres Changes + +"Postgres Changes enable you to listen to database changes and have them broadcast to authorized clients based +on [Row Level Security (RLS)](https://supabase.com/docs/guides/auth/row-level-security) policies. + +This works by Realtime polling your database's logical replication slot for changes, passing those changes to +the [apply_rls](https://github.com/supabase/walrus#reading-wal) SQL function to determine which clients have permission, +and then using Broadcast to send those changes to clients. + +Realtime requires a publication called `supabase_realtime` to determine which tables to poll. You must add tables to +this publication prior to clients subscribing to channels that want to listen for database changes. + +We strongly encourage you to enable RLS on your database tables and have RLS policies in place to prevent unauthorized +parties from accessing your data." + +[Find More Information here](https://supabase.com/docs/guides/realtime#postgres-changes) + +**Using the new `Register` method:** + +```c# +var channel = supabase.Realtime.Channel("public-users"); +channel.Register(new PostgresChangesOptions("public", "users")); +channel.AddPostgresChangeHandler(ListenType.All, (sender, change) => +{ + switch (change.Event) + { + case EventType.Insert: + // User has been created + break; + case EventType.Update: + // User has been updated + break; + case EventType.Delete: + // User has been deleted + break; + } +}); +await channel.Subscribe(); +``` + +## Status + +- [x] Client Connects to Websocket +- [x] Socket Event Handlers + - [x] Open + - [x] Close - when channel is explicitly closed by server or by calling `Channel.Unsubscribe()` + - [x] Error +- [x] Realtime Event Handlers + - [x] `INSERT` + - [x] `UPDATE` + - [x] `DELETE` + - [x] `*` +- [x] Join channels of format: + - [x] `{database}` + - [x] `{database}:{schema}` + - [x] `{database}:{schema}:{table}` + - [x] `{database}:{schema}:{table}:{col}.eq.{val}` +- [x] Responses supply a Generically Typed Model derived from `BaseModel` +- [x] Ability to remove subscription to Realtime Events +- [x] Ability to disconnect from socket. +- [x] Socket reconnects when possible +- [x] Unit Tests +- [x] Documentation +- [x] Nuget Release + +## Package made possible through the efforts of: + +Join the ranks! See a problem? Help fix it! + + + + + +Made with [contrib.rocks](https://contrib.rocks/preview?repo=supabase-community%2Frealtime-csharp). + +## Contributing + +We are more than happy to have contributions! Please submit a PR. + +## Testing + +Note that the latest versions of `supabase/realtime` expect to be able to access a subdomain matching the tenant. For +the case of testing, this means that `realtime-dev.localhost:4000` should be available. To have tests run locally, +please add a hosts entry on your system for: `127.0.0.1 realtime-dev.localhost` diff --git a/Assets/Packages/realtime-csharp.6.0.4/README.md.meta b/Assets/Packages/realtime-csharp.6.0.4/README.md.meta new file mode 100644 index 0000000..862aaa1 --- /dev/null +++ b/Assets/Packages/realtime-csharp.6.0.4/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b2a44699dfd9c5d4991d5f0eeb4f7875 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/realtime-csharp.6.0.4/icon.png b/Assets/Packages/realtime-csharp.6.0.4/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eb1468e4cc6f2fe2ce24c6740389535073ab60e9 GIT binary patch literal 5771 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 X;OLIKfIj`9$&96;qNCiPXdC^1ZeRCi literal 0 HcmV?d00001 diff --git a/Assets/Packages/realtime-csharp.6.0.4/icon.png.meta b/Assets/Packages/realtime-csharp.6.0.4/icon.png.meta new file mode 100644 index 0000000..e7fa638 --- /dev/null +++ b/Assets/Packages/realtime-csharp.6.0.4/icon.png.meta @@ -0,0 +1,156 @@ +fileFormatVersion: 2 +guid: b99ed2d865a3ce14a8611c959d268b02 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 2 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/realtime-csharp.6.0.4/lib.meta b/Assets/Packages/realtime-csharp.6.0.4/lib.meta new file mode 100644 index 0000000..6619e91 --- /dev/null +++ b/Assets/Packages/realtime-csharp.6.0.4/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 89c03fe0e7fc8ab4191a303698273191 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/realtime-csharp.6.0.4/lib/netstandard2.0.meta b/Assets/Packages/realtime-csharp.6.0.4/lib/netstandard2.0.meta new file mode 100644 index 0000000..0081b4c --- /dev/null +++ b/Assets/Packages/realtime-csharp.6.0.4/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3ca908092f78fd44baae1f64c7beb2ef +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/realtime-csharp.6.0.4/lib/netstandard2.0/Supabase.Realtime.dll b/Assets/Packages/realtime-csharp.6.0.4/lib/netstandard2.0/Supabase.Realtime.dll new file mode 100644 index 0000000000000000000000000000000000000000..c75c32a27859cb8886e64eb8580ce5da9d79ec63 GIT binary patch literal 70144 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%0AM-2&md3TS8we9#5jaa&L_QgO+J}=U2&v&3;ymD| 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 + + + Supabase.Realtime + + + + + Options + + + + + self option enables client to receive message it broadcast + + + + + ack option instructs server to acknowledge that broadcast message was received + + + + + Initializes broadcast options + + + + + + + Channel Options + + + + + A function that returns the current access token. + + + + + Parameters that are sent to the channel when opened (JSON Serializable) + + + + + The Client Options + + + + + The Serializer Settings + + + + + The Channel Options (typically only called from within the ) + + + + + + + + Class representation of a single request sent to the Socket server. + + `Push` also adds additional functionality for retrying, timeouts, and listeners + for its associated response from the server. + + + + + Flag representing the `sent` state of a request. + + + + + Invoked when this `Push` has not been responded to within the timeout interval. + + + + + Accessor for the returned Socket Response + + + + + The associated channel. + + + + + The event requested. + + + + + Payload of data to be sent. + + + + + Represents the Pushed (sent) Message + + + + + Ref Of this Message + + + + + Handlers for notifications of message events. + + + + + Initializes a single request that will be `Pushed` to the Socket server. + + + + + + + + + + + Resends a `Push` request. + + + + + + Sends a `Push` request and initializes the Timeout. + + + + + Keeps an internal timer for raising an event if this message is not responded to. + + + + + Handles when a socket message is received for this push. + + + + + + + Adds a listener to be notified when a message is received. + + + + + + Removes a specified listener from messages received. + + + + + + Notifies all listeners that the socket has received a message + + + + + + Clears all of the listeners from receiving event state changes. + + + + + Singleton that represents a Client connection to a Realtime Server. + + It maintains a singular Websocket with asynchronous listeners (RealtimeChannels). + + + client = Client.Instance + + + + + Exposes all Realtime RealtimeChannel Subscriptions for R/O public consumption + + + + + The backing Socket class. + + Most methods of the Client act as proxies to the Socket class. + + + + + Client Options - most of which are regarding Socket connection Options + + + + + Custom Serializer resolvers and converters that will be used for encoding and decoding Postgrest JSON responses. + + By default, Postgrest seems to use a date format that C# and Newtonsoft do not like, so this initial + configuration handles that. + + + + + JWT Access token for WALRUS security + + + + + Handlers for notifications of state changes. + + + + + + Initializes a Client instance, this method should be called prior to any other method. + + The connection url (ex: "ws://localhost:4000/socket" - no trailing slash required) + + Client + + + + Attempts to connect to the Socket. + + Returns when socket has successfully connected. + + + + + + Attempts to connect to the socket. + + Provides a callback for `Task` driven returns. + + + + + + + Adds a listener to be notified when the socket state changes. + + + + + Removes a specified listener from socket state changes. + + + + + Clears all of the listeners from receiving socket state changes. + + + + + Notifies all listeners that the current user auth state has changed. + + This is mainly used internally to fire notifications - most client applications won't need this. + + + + + + Adds a debug handler, likely used within a logging solution of some kind. + + + + + + Removes a debug handler + + + + + + Clears debug handlers; + + + + + Sets the current Access Token every heartbeat (see: https://github.com/supabase/realtime-js/blob/59bd47956ebe4e23b3e1a6c07f5fe2cfe943e8ad/src/RealtimeClient.ts#L437) + + + + + Disconnects from the socket server (if connected). + + Status Code + Reason for disconnect + + + + + Sets the JWT access token used for channel subscription authorization and Realtime RLS. + Ref: https://github.com/supabase/realtime-js/pull/117 | https://github.com/supabase/realtime-js/pull/117 + + + + + + Adds a RealtimeChannel subscription - if a subscription exists with the same signature, the existing subscription will be returned. + + The name of the Channel to join (totally arbitrary) + + + + + + Adds a RealtimeChannel subscription - if a subscription exists with the same signature, the existing subscription will be returned. + + Database to connect to, with Supabase this will likely be `realtime`. + Postgres schema, usually `public` + Postgres table name + Postgres column name + Value the specified column should have + + + + + + Removes a channel subscription. + + + + + + The default socket message encoder, used to serialize messages to the socket + server. + + It is unlikely that this will be overriden by the developer. + + + + + + + The default socket message decoder, used to deserialize messages from the socket server. + Ref: + + It is unlikely that this will be overriden by the developer. + + + + + + + Options used when initializing a + + + + + The function to encode outgoing messages. Defaults to JSON + + + + + The function to decode incoming messages. + + + + + The Websocket Transport, for example WebSocket. + + + + + The default timeout in milliseconds to trigger push timeouts. + + + + + @todo Presently unused: Limit the number of events that can be sent per second. + + + + + The interval to send a heartbeat message + + + + + The interval to reconnect + + + + + Request headers to be appended to the connection string. + + + + + The optional params to pass when connecting + + + + + Datetime Style for JSON Deserialization of Models + + + + + Datetime format for JSON Deserialization of Models (Postgrest style) + + + + + Shared constants for Realtime + + + + + The Current Socket state, used in + + + + + Socket Open + + + + + Socket Closed + + + + + Socket is Reconnecting + + + + + Socket has errored + + + + + Mapping of channel states, used with + + + + + Channel is closed + + + + + Channel has errored + + + + + Channel is joined + + + + + Channel is joining + + + + + Channel is leaving + + + + + A channel event type used and parsed in a + + + + + postgres_changes `Insert` event + + + + + postgres_changes `Update` event + + + + + postgres_changes `Delete` event + + + + + A broadcast event + + + + + A presence `state` or `sync` event + + + + + A presence `leave` or `join` event + + + + + The catchall event for `postgres_changes`, parsed into a more specific `Insert`, `Update` or `Delete` + + + + + A system event (likely unused by the developer) + + + + + An internal event (likely unused by the developer) + + + + + A presently unknown event, if this is seen, please open an issue at https://github.com/supabase-community/realtime-csharp + + + + + Map of Presence listener types, used with: + + + + + A sync event (either join or leave) + + + + + A join event + + + + + A leave event + + + + + Mapping for event names that can be used with to send arbitrary data. + This is unlikely to be used by the developer. + + + + + The broadcast event + + + + + The Presence event + + + + + A postgres_changes event + + + + + Timeout interval for requests (used in Socket and Push) + + + + + Phoenix Socket Server Event: CLOSE + + + + + Phoenix Socket Server Event: ERROR + + + + + Phoenix Socket Server Event: JOIN + + + + + Phoenix Socket Server Event: REPLY + + + + + Phoenix Socket Server Event: SYSTEM + + + + + Phoenix Socket Server Event: LEAVE + + + + + Phoenix Server Event: OK + + + + + Phoenix Server Event: POSTGRES_CHANGES + + + + + Phoenix Server Event: BROADCAST + + + + + Phoenix Server Event: PRESENCE_STATE + + + + + Phoenix Server Event: PRESENCE_DIFF + + + + + Phoenix Server Event: ERROR + + + + + The transport type, used with Phoenix server implementations and appended on the + + + + + The event name used to send an access_token to the Phoenix server + + + + + An int array converter that specifically parses Postgrest styled arrays `{1,2,3}` and `[1,2,3]` from strings + into a . + + + + + + + + + + + + + + + + + + + + An string array converter that specifically parses Postgrest styled arrays `{big,string,array}` and `[1,2,3]` + from strings into a . + + + + + + + + + + + + + + + + + + + + A custom resolver that handles mapping column names and property names as well + as handling the conversion of Postgrest Ranges to a C# `Range`. + + + + + A Singleton used for debug notifications + + + + + Returns the Singleton Instance. + + + + + Adds a debug listener + + + + + + Removes a debug handler. + + + + + + Clears debug handlers. + + + + + Notifies debug listeners. + + + + + + + + A failure hint + + + + + Reasons for a failure + + + + + Catchall for any kind of failure that is presently untyped. + + + + + A push timeout + + + + + Channel is not open + + + + + Channel cannot be joined + + + + + Socket has errored, either in connection or reconnection. + + + + + Connection has been lost + + + + + No message has been received, usually given by server. + If seen, please open an issue. + + + + + Parses a Failure reason from a + + + + + + + An Exception thrown within + + + + + + + + + + + A specific reason for this exception, as provided by this library. + + + + + Creates exception from a instance. + + + + + + + A contract representing a realtime broadcast + + + + + A delegate for broadcast events + + + + + Adds a broadcast event handler + + + + + + Removes a broadcast event handler + + + + + + Clears all broadcast event handlers + + + + + Sends a broadcast to a given event name with an arbitrary, serializable payload. + + + + + + + + + An internal trigger used for notifying event delegates. + + + + + + A contract representing a realtime channel + + + + + Delegate for messages received on this channel + + + + + Delegate for channel state changes + + + + + Delegate for postgres changes + + + + + Delegate for errors on this channel + + + + + If this channel has been successfully joined (and thus, should be rejoined on a failure) + + + + + Is channel closed? + + + + + Is channel erroring? + + + + + Is channel joined? + + + + + Is channel being joined? + + + + + Is channel leaving? + + + + + The Channel's initialization options + + + + + The Channel's broadcast options (used prior to ) + + + + + The Channel's presence options (used prior to ) + + + + + The Channel's postgres_changes options (used prior to ) + + + + + The Channel's current state + + + + + A string representing this channel's topic, used for identifying/repeat access to this channel. + + + + + Add a state changed listener + + + + + + Remove a state changed handler + + + + + + Clear state changed handlers + + + + + Add a message received handler + + + + + + Remove a message received handler. + + + + + + Clear message received handlers. + + + + + Add a postgres_changes handler + + + + + + + Remove a postgres_changes handler + + + + + + + Clear postgres_changes handlers + + + + + Add an error handler + + + + + + Remove an error handler + + + + + + Clear error handlers. + + + + + Get the helper + + + + + + Get the helper. + + + + + + Push an arbitrary event to a subscribed channel. + + + + + + + + + + Rejoin a channel. + + + + + + Send an arbitrary event with an awaitable task. + + + + + + + + + + Register broadcast options, must be called to use , and prior to + + + + + + + + + Register presence options, must be called to use , and prior to + + + + + + + + Register postgres_changes options, must be called to use , and + prior to + + + + + + + Subscribes to a channel. + + + + + + + Unsubscribes from a channel. + + + + + + Contract representing a Realtime Client + + + + + + + The options initializing this client. + + + + + Json serializer settings + + + + + The connected realtime socket + + + + + A collection of channels ordered by topic name + + + + + Delegate for handling a socket state event, this can be seen as synonymous with the Client's state. + + + + + Add a Socket State listener + + + + + + Remove a Socket State listener + + + + + + Clear socket state listeners + + + + + Adds a debug handler, likely used within a logging solution of some kind. + + + + + + Removes a debug handler + + + + + + Clears debug handlers; + + + + + Initialize a new channel with an arbitrary channel name. + + + + + + + Shorthand initialization of a channel with postgres_changes options already set. + + + + + + + + + + + + Connect to the + + + + + + + Connect to the + + + + + + Disconnect from the + + + + + + + + Remove an initialized + + + + + + Sets the authentication JWT to be passed into all realtime channels. Used for WALRUS permissions. + + + + + + Contract representing an internal debugger. + + + + + A debug event handler + + + + + Adds a debug listener + + + + + + Removes a debug handler. + + + + + + Clears debug handlers. + + + + + Notifies debug listeners + + + + + + + + Contract representing a Realtime Presence class + + + + + Delegate for a presence event. + + + + + Mapping of presence event types + + + + + Sync event (both join and leave) + + + + + Join event + + + + + Leave event + + + + + Send an arbitrary payload as a presence event, MUST be called once to register this client as an active presence. + + + + + + + Add a presence event handler + + + + + + + Remove a presence event handler + + + + + + + Clear presence events. + + + + + + Contract representing a "Push" or an outgoing message to the socket server + + + + + + + Delegate for a message event. + + + + + Add a message received handler + + + + + + Remove a message received handler + + + + + + Clear Message received handlers. + + + + + The calling or parent channel + + + + + The event name this push is registered under. + + + + + Is push sent? + + + + + The wrapped SocketRequest + + + + + The payload (present in ) + + + + + A unique ID representing this push. + + + + + The server's response + + + + + A timeout event handler. + + + + + Resend this push, only called on a failed push attempt. + + + + + + Send this push. + + + + + Contract for a realtime socket. + + + + + Is this socket connected? + + + + + Delegate for errors on this socket + + + + + Delegate for handling socket state changes. + + + + + Delegate for handling message received events. + + + + + Delegate for handling a heartbeat event. + + + + + Add a state changed handler. + + + + + + Remove a state changed handler. + + + + + + Clear state changed handlers. + + + + + Add a message received handler. + + + + + + Remove a message received handler. + + + + + + Clear message received handlers. + + + + + Add a heartbeat handler. + + + + + + Remove heartbeat handler. + + + + + + Clear heartbeat handlers. + + + + + Add an error handler + + + + + + Remove an error handler + + + + + + Clear error handlers. + + + + + Gets the roundtrip time of a single message between client and server. + + + + + + Connects to a socket + + + + + + Disconnects from a socket + + + + + + + Generates a Message ref, used in + + + + + + Push a to the + + + + + + The phoenix specific reply event name for a message. + + + + + + + Contract for a socket response + + + + + The raw event name + + + + + The parsed event type + + + + + The opinionated payload matching a + + + + + The unique id of this response + + + + + The topic. + + + + + Represents a Broadcast response with a modeled payload. + + + + + + The typed payload. + + + + + Represents an arbitrary Broadcast response. + + + + + The event. + + + + + The payload. + + + + + Represents an arbitrary Presence response. + + + + + The ref for this event. (can be used to establish sequence) + + + + + The previous ref for this presence event (can be used to establish sequence) + + + + + Disables serialization of phoenix_ref + + + + + + Disables serialization of phoenix_prev_ref + + + + + + Handles a `postgres_changes` channel + + For Example in the js client: + + const databaseFilter = { + schema: 'public', + table: 'messages', + filter: `room_id=eq.${channelId}`, + event: 'INSERT', + } + + Would translate to: + + new PostgresChangesOptions("public", "messages", $"room_id=eq.{channelId}"); + + + + + Mapping of postgres changes listener types + + + + + All event + + + + + INSERT events + + + + + UPDATE events + + + + + DELETE events + + + + + The schema for this listener, likely: `public` + + + + + The table for this listener, can be: `*` matching all tables in schema. + + + + + The filter for this listener + + + + + The parameters passed to the server + + + + + The stringified event listener type + + + + + Postgres changes options. + + + + + + + + + + + + + + + + A postgres changes event. + + + + + + + + Hydrates the referenced record into a Model (if possible). + + + + + + + Hydrates the old_record into a Model (if possible). + + NOTE: If you want to receive the "previous" data for updates and deletes, you will need to set `REPLICA IDENTITY to FULL`, like this: `ALTER TABLE your_table REPLICA IDENTITY FULL`; + + + + + + + The payload. + + + + + + The payload data. + + + + + Options used to initialize Realtime Presence + + + + + key option is used to track presence payload across clients + + + + + Presence options. + + + + + + Represents a presence_diff response + + + + + + + + + a Presence Diff payload + + + + + + The joining presences. + + + + + The leaving presences. + + + + + A presence diff payload + + + + + + The metas containing current presences + + + + + + + + + + + A presence state payload response + + + + + + The metas containing joins and leaves + + + + + Represents a realtime broadcast client. + + Broadcast follows the publish-subscribe pattern where a client publishes messages to a channel with a unique identifier. + Other clients can elect to receive the message in real-time by subscribing to the channel with the same unique identifier. If these clients are online and subscribed then they will receive the message. + + Broadcast works by connecting your client to the nearest Realtime server, which will communicate with other servers to relay messages to other clients. + A common use-case is sharing a user's cursor position with other clients in an online game. + + A model representing expected payload. + + + + The last received broadcast. + + + + + Initializes a realtime broadcast helper class. + + + + + + + + Adds a broadcast event listener. + + + + + + Removes a broadcast event listener. + + + + + + Clears all broadcast event listeners + + + + + Called by when a broadcast event is received, then parsed/typed here. + + + + + + + Broadcasts an arbitrary payload + + + + + + + + Class representation of a channel subscription + + + + + As to whether this Channel is Closed + + + + + As to if this Channel has Errored + + + + + As to if this Channel is currently Joined + + + + + As to if this Channel is currently Joining + + + + + As to if this channel is currently leaving + + + + + The channel's topic (identifier) + + + + + The Channel's current state. + + + + + Options passed to this channel instance. + + + + + The saved Broadcast Options, set in + + + + + The saved Presence Options, set in + + + + + The saved Postgres Changes Options, set in + + + + + Flag stating whether a channel has been joined once or not. + + + + + Flag stating if a channel is currently subscribed. + + + + + Returns the instance. + + + + + + Returns a typed instance. + + + + + + + Returns the instance. + + + + + + Returns a typed instance. + + Model representing a Presence payload + + + + + The initial request to join a channel (repeated on channel disconnect) + + + + + Buffer of Pushes held because of Socket availability + + + + + Initializes a Channel - must call `Subscribe()` to receive events. + + + + + Handles socket state changes, specifically when a socket reconnects this channel (if previously subscribed) + should also rejoin. + + + + + + + Registers a instance - allowing broadcast responses to be parsed. + + + enables client to receive message it has broadcast + instructs server to acknowledge that broadcast message was received + + + + + + Registers a instance - allowing presence responses to be parsed and state to be tracked. + + The model representing a presence payload. + used to track presence payload across clients + + Thrown if called multiple times. + + + + Registers a state changed listener relative to this channel. Called when channel state changes. + + + + + + Removes a channel state changed listener + + + + + + Clears all channel state changed listeners + + + + + Notifies registered listeners that a channel state has changed. + + + + + + + Registers a message received listener, called when a socket message is received for this channel. + + + + + + Removes a message received listener. + + + + + + Clears message received listeners. + + + + + Notifies registered listeners that a channel message has been received. + + + + + + Add a postgres changes listener. Should be paired with . + + The type of event this callback should process. + + + + + Removes a postgres changes listener. + + The type of event this callback was registered to process. + + + + + Clears all postgres changes listeners. + + + + + Adds an error event handler. + + + + + + Removes an error event handler + + + + + + + Clears Error Event Handlers + + + + + Notifies listeners of a postgres change message being received. + + + + + + + Registers postgres_changes options, can be called multiple times. + + Should be paired with + + + + + + + Subscribes to the channel given supplied Options/params. + + + + + + Unsubscribes from the channel. + + + + + Sends a `Push` request under this channel. + + Maintains a buffer in the event push is called prior to the channel being joined. + + + + + + + + + Sends an arbitrary payload with a given payload type () + + + + + + + + + Rejoins the channel. + + + + + + Enqueues a message. + + + + + + Generates the Join Push message by merging broadcast, presence, and postgres_changes options. + + + + + + Generates an auth push. + + + + + + If the channel errors internally (phoenix error, not transport) attempt rejoining. + + + + + + + Sends the phoenix server a join message. + + + + + + Handles a received join response (received after sending on subscribe/reconnection) + + + + + + + Called when a socket message is received, parses the correct event handler to pass to. + + + + + + Represents a realtime presence client. + + When a client subscribes to a channel, it will immediately receive the channel's latest state in a single message. + Clients are free to come-and-go as they please, and as long as they are all subscribed to the same channel then they will all have the same Presence state as each other. + If a client is suddenly disconnected (for example, they go offline), their state will be automatically removed from the shared state. + + A model representing expected payload. + + + + The Last State of this Presence instance. + + + + + The Current State of this Presence instance. + + + + + Initializes a realtime presence helper class. + + + + + + + + Add presence event handler for a given event type. + + + + + + + Remove an event handler + + + + + + + Clears all event handlers for a given type (if specified) or clears all handlers. + + + + + + Notifies listeners of state changes + + + + + + Called in two cases: + - By `RealtimeChannel` when it receives a `presence_state` initializing message. + - By `RealtimeChannel` When a diff has been received and a new response is saved. + + + + + + Triggers a diff comparison and emits events accordingly. + + + + + + + "Tracks" an event, used with . + + + + + + + Untracks an event. + + + + + Sets the internal Presence State from the + + + + + Socket connection handler. + + + + + Returns whether or not the connection is alive. + + + + + The Socket Endpoint + + + + + Initializes this Socket instance. + + + + + + + Connects to a socket server and registers event listeners. + + + + + Disconnects from the socket server. + + + + + + + Adds a listener to be notified when the socket state changes. + + + + + + Removes a specified listener from socket state changes. + + + + + + Notifies all listeners that the socket state has changed. + + + + + + Clears all of the listeners from receiving event state changes. + + + + + Adds a listener to be notified when a message is received. + + + + + + Removes a specified listener from messages received. + + + + + + Notifies all listeners that the socket has received a message + + + + + + Clears all of the listeners from receiving event state changes. + + + + + Adds a listener to be notified when a message is received. + + + + + + Removes a specified listener from messages received. + + + + + + Notifies all listeners that the socket has received a heartbeat + + + + + + Clears all of the listeners from receiving event state changes. + + + + + Adds an error event handler. + + + + + + Removes an error event handler + + + + + + + Clears Error Event Handlers + + + + + Pushes formatted data to the socket server. + + If the connection is not alive, the data will be placed into a buffer to be sent when reconnected. + + + + + + Returns the latency (in millis) of roundtrip time from socket to server and back. + + + + + + Maintains a heartbeat connection with the socket server to prevent disconnection. + + + + + Called when the socket opens, registers the heartbeat thread and cancels the reconnection timer. + + + + + The socket has reconnected (or connected) + + + + + + The socket has disconnected, called either through a socket closing or erroring. + + + + + + Parses a received socket message into a non-generic type. + + + + + + Handles socket errors, increments reconnection count if a connection has been established at least once. + + + + + + + Begins the reconnection thread with a progressively increasing interval. + + + + + Generates an incrementing identifier for message references - this reference is used + to coordinate requests with their responses. + + + + + + Returns the expected reply event name based off a generated message ref. + + + + + + + Dispose of the web socket connection. + + + + + Flushes `Push` requests added while a socket was disconnected. + + + + + A generic, internal phoenix server response + + + + + The response. + + + + + The status. + + + + + Options to initialize a socket. + + + + + A user token (used for WALRUS permissions) + + + + + A Supabase hosted public key + + + + + Representation of a Socket Request, used by + + + + + The type + + + + + The topic being sent to + + + + + The Event name + + + + + The json serializable payload + + + + + The unique ref for this request. + + + + + The join ref (if applicable) + + + + + A SocketResponse with support for Generically typed Payload + + + + + + + + + The typed payload response + + + + + Representation of a Socket Response. + + + + + Represents a socket response + + + + + + The internal realtime topic. + + + + + The internal, raw event given by the socket + + + + + The typed, parsed event given by this library. + + + + + The payload/response. + + + + + An internal reference to this particular feedback loop. + + + + + The raw JSON string of the received data. + + + + + + + + The record referenced. + + + + + The previous state of the referenced record. + + + + + A socket response payload. + + + + + Displays Column information from the Database. + + Will always be an array but can be empty + + + + + The timestamp of the commit referenced. + + Will either be a string or null + + + + + The record referenced. + + Will always be an object but can be empty. + + + + + The previous state of the referenced record. + + Will always be an object but can be empty. + + + + + The Schema affected. + + + + + The Table affected. + + + + + The action type performed (INSERT, UPDATE, DELETE, etc.) + + + + + The parsed type. + + + + + Status of response + + + + + The unparsed response object + + + + + Either null or an array of errors. + See: https://github.com/supabase/walrus/#error-states + + + + + Presence joins (parsed later) + + + + + Presence leaves (parsed later) + + + + + The channel (system) + + + + + The extension (system) + + + + + The message (system) + + + + + Simple method to form a query string (albeit poorly) from a dictionary. + + + + + + + Generates a Channel topic string of format: `realtime{:schema?}{:table?}{:col.eq.:val?}` + + + + + + + + + + diff --git a/Assets/Packages/realtime-csharp.6.0.4/lib/netstandard2.0/Supabase.Realtime.xml.meta b/Assets/Packages/realtime-csharp.6.0.4/lib/netstandard2.0/Supabase.Realtime.xml.meta new file mode 100644 index 0000000..65129ac --- /dev/null +++ b/Assets/Packages/realtime-csharp.6.0.4/lib/netstandard2.0/Supabase.Realtime.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: de465e77fa622bb4c9356be1eedec228 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/realtime-csharp.6.0.4/realtime-csharp.nuspec b/Assets/Packages/realtime-csharp.6.0.4/realtime-csharp.nuspec new file mode 100644 index 0000000..6f797da --- /dev/null +++ b/Assets/Packages/realtime-csharp.6.0.4/realtime-csharp.nuspec @@ -0,0 +1,26 @@ + + + + realtime-csharp + 6.0.4 + realtime-csharp + Joseph Schultz <joseph@acupofjose.com> + MIT + https://licenses.nuget.org/MIT + icon.png + README.md + https://github.com/supabase/realtime-csharp + Realtime-csharp is written as a client library for supabase/realtime. + MIT + supabase, realtime, phoenix + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/realtime-csharp.6.0.4/realtime-csharp.nuspec.meta b/Assets/Packages/realtime-csharp.6.0.4/realtime-csharp.nuspec.meta new file mode 100644 index 0000000..b02e5bd --- /dev/null +++ b/Assets/Packages/realtime-csharp.6.0.4/realtime-csharp.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2f5201ef89c639d4584a2e6bc60fa967 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-core.0.0.3.meta b/Assets/Packages/supabase-core.0.0.3.meta new file mode 100644 index 0000000..d26c86d --- /dev/null +++ b/Assets/Packages/supabase-core.0.0.3.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2a029613f1927ec40aed5e184eb92ae7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-core.0.0.3/.signature.p7s b/Assets/Packages/supabase-core.0.0.3/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..050ac15a83621362c27fc6f0ec8bf6b3693cdb34 GIT binary patch literal 11511 zcmeI2c{o*T`^W9UJP*lin`hSEW`zuyWgat+nTKso*gFxCAtW-ZOqmL0$gCtoQYaA_ zqll29`Yn}?I=$~X@AbQ`^ZxVthi9+#EYDu+xj*0g{@x3~3a;T1@<*vfZIVLpp}APW zX#gwu3JQTC$pKP4LYpWxh$9RRh2Y`<4u6~o$u)r+89Vx-UA#PHkVHf%VWfnxlo%k4 z6h;C_VNqc*Velg%HCyy4882mJRkV_Wu0f!-4&aYc64h7H4i=Ntuyxl~QqT&}Q&CYs z+UfXe=xA%p5)tKM$rJ%BtPa3Jb8=x&2oy>|GWTlc@QBLigc+M%#uY$%Z(ZM448aB0 z<%lE(2=QP>a6D?Lkpc1$K)p90q9##xaduI1^z}oid)g!Efx~+r6H`+J1_lZ{fQRhC zL&El69!O4reeV#An(@aB1vJ{<*Ux6^I!Yqo(fG@wMfuCF zJ8Y}^wi7vsVb-at(a&@agH$K2w@m588&!MrB(~hbhbpDyS{d8pL`O$N=sxq3-@0-3 zS-Yoli>-JX?Ps&A7Xmzn-{)(R3Vb20zXQ`MERfsk8%M^3oOwtmy)EpfCsyq`)4q1<1gM%1jP{e1XHkjT8lt?~SSV z#<&0s`~@)YeLx1Mh0`2g%&+*6+=E35>0P*SgDq>#;{iFqx_6iZP6yCN{QiWW_aXQg zAUOGCjT2LES6=&~LmX0?H+`K(P}7S3cIDBFt4~MAjc?^V>Z9SkOM2PHf=bJD`ibmW z_2Z_O#a$SRRNokP1(#BdIAbCw!U>P2%--P^L^R3X;*Hs~{=ze_ZVwTKZ)SyZgs zj$?Ug_x_%)bDewB+IvgoNEu?C&fIE-EC+p@^`&RoEy*dGWf z|6hV20TFPsfCS*TZLuvR3`KSQs(85@I9=M>^jB$|V`GjF3FQ?m zoEJo-mNRKY6HJh-PifoG-7D#+F84+{iTcQudFPk*g)fBmBK{EBfStXh_Y0#)y z@S7F*?A{aRCoMsmxIA5RqOkalD^Y3WTAA~SnvTu5#|SQtMFIyo{j}Cqa;guV7s*@m z=LPjP(Tz>#s_f396|nfzQWsp&hyij3^wI2`>!QV<=qI=?J^mKQSV%8;r@8^Ey;%Gj zy959p7`spi&Y$9Y5Btnqa1wwBk3awqlm>hl3<%!;8v=oQ0B!*1{uqEn(Vg=1^Og}2 z@v=vI|D*_j(vP#CQIg-!vbWt64D?SYitIn`?+;pCc~32r6ol=4{QwMRZ$Yf^5FiMU z$(72Lh!Wesl&`zk-@T6epXZAH{kb}OOF+QY02M$Ak7!TLqdvLgK;ZyCz`Oq)p%7Z8 zy@jE{Tk)$liYVzC?A_1rGhqjqY2I=7G(SAOOBHQ*MdW zob%Qi`{P3o1Vg#_0*aU|nS^8*I+g+3;V@#GPwleg9TgWoE%Q$xj3g^3Hy$VZlk45~ zymrxi%8C#_XKaY=>LB@v{dQ>>6poNQa>MD(DUdX9a6`40I5Ei38RU`=wMISqp7-; zje2F)frN`d5mhY_%L)A~;v2>^tbROg-i&!++t0zRdeKSg`K`*hrwgPnHz0_B?cEVrP(NEaR z*BPPj=QxM%V=-v|a3dz0h7xe*5Rb{>Hg~$<}w_^-+19{J5!g%TCH~@UGLe z!h_vI-Q76I*0zJi2os$#KFt~3nurDGki#D?MY>AAnsFx#ObQtZKjU*Wb&8==qH$(2 zGrIr%b5h&8JTIW~4Am#B)Nf8q?WCR-bFxJ4{+v z+$|gIZOx=L@-LVDSl2={t*eUbEI;qjETVLTKf3UR!yi+Yd#q4i``j0&6qi#pa zRG&z{j2&52`UAAGA1hDY&m6{&_?mwIiNk^4Sm+IS0^+%%xyUGyKUnw+&(NoAQ9`!g z5^y1Vw2(6r#HstAr~QJ^e=$w-8v&I8ML^En{qN*tFM0SODSMg2_r&45vXJb3r>|-V1#o`h z!&jt^z+OKL>F;D?-jW#$WU!yo2)8Ixv0*_6KV%`U#Hzf*`_gs(F#po>I-_yIX!%r$ zRP51vqNkBpxZqN^C#mryId+oE*p%~~^uv>lms1k@4_%m z_03aV1e42)l)3O8o~edcD=&*tm6J61q!-=GX)404Dd5Ug z8s=Y~Y$v}nEnlq)O+)%pZddm{e-Xn_wEM93P9%{}0=L)QRGO)4Ze5)eTqg;Pq|-RZ z9EuRMWgp(vmENloaNH0hJffb>ki*sGS{&Q=io~?&vaukxvh;z-@-R+V)zCe>xBPd@ z+jj?$SQaJ#%R&d%u@N-C-LyZ~wz*hHEkO69tR#dXiGK|6App~l0U<7u9Au#=SP23s z04XgdW)2=D0n-gQ1S@F>g+QQ4FaaSUK>K^!+S#HV0Tw*s@5L%11(f1zRsF{Ycu+8L z+%IMc;YfBkA~j>ipC!8TY3Ey)IyeRiyP~~30nF2b3lTwLIsr@@fN2IWjR5#%e-!#~ggGDN z+0BB-Sev_D6I0YjQ-?LPmt9}YjEQPR8a`G%^8vub0s)17|Bb8}O7ZX15v+ybSO|`| zD1D&PnedmH@41e1q2;q44NW{kuLeDWL(9@oMQl^aVjtZDNVN6U-XxfuNgTK}HKK<1 zJb$^37J-jxz>4HNXp)XBekW|Lu6BC*TA{@k0!@m?iIQ{bLUxoM!Za4@K2!ti%Rij$uDx>uIJ;1I9k!(|VB=o(dDY;Sv~F)~hrDTmDpeCq$CTWQNf=h0gY= z*1Qex>vTNB0z&^#cOkf7gdhBkut9Y zu=f%sHfgnx1dNT#yddwB!rZfV=F&g<`DU*EoDMNLz5bm^AfYLw%3>h*vc#oxZ^rYm zjI02bk@4X3CPQKwiNFu>e(bhAvxi|5z%s1;*6hJtJun>t&&9;SF);up3f$p8C<;af za*sYg_6~Ue5e51c6N=PoZ*Sn{B4p zB5s$}(n*HK#qR#zGO=UURUuCA0w1UqIhmN`7@A%r5vbF-0gM{IdwAON_04V_s~Pb* zWY66B9$0_?&zA}V+0 z9j=Q$j=`U7s+(0Rq`PxH5Hd-gLc+#eZOF$J<32;CuczvFkGrf^!GAoY%sO7ayYYzv zCDq9p3f)Cy=R;pwcEX8JEq{6YB{u60gr1vMRcX`(owjGkt+Nojc`ThR3HeoFMBG=_ zr(HzSnT6Izi>sMu824Q<8L)Db_;-%>((r5SppT`4)`YOL{9Ju{ITN|gPnF(pE$?3~ z^Z%lIcKlnxCGHK+^3H8mvM`#Hvd%5=W0b9> z9o}pFll5X6r_7{XC`a0exN^LLb6>Tshp> zzfj#V6ygaRkr`d7jZXV?^07r3UAuM;x(-sDV^U(pJ9Re&z~YsIKu-G(WPAz9I!?pT z5!JF!yiWX9Cl3O7&$j<3NVsP?p#V`ZG5kSeNpOhTr?LIdG(HR*0-rQ!C6Vp3RdBEE zCyYD-NbenhQKR+`{D7{i7((AbK@5k4F`5{yf^+(XvO>&QsH;iHiezw(Wm(UBq{D6f z)d1B^+q3j9t#2C=vz_vkWNSE9W?en5ai(uwn#y^Z?3%s%^z}~WUI|i*r?ZSjtqy+2 zZnXGz)}LUlsxj3L{ydz3zEmbCJ#|g(*-9mny4Zv-jYoJr`g+2NfI~*y-s#-oxeTfZ zrPoUK5vTnf~E{SdxZTJe5E@X2_@&R%EnC&V zHLc-=bPZFvC$RIMZzVjj(hQ)|yVM;=a^z$zdr>Pl!4?e#73_>PM}xy_`&ZW|B*b>~G|XMWObu{SMV3m2G(fYM%0473b%r3TEs`W}QR%VBUIXxR;Q=F`%6Qsn4}^6hxXl9uqf?7Fn}GvhDF**q8_p0PMN>=C^kiQp1LI``I6rFnJeYS}T9 z5MYaFn~IJ55252B>|A}RF7m2@JHCE2!(U2uVg*A=&-E%74 zuF-)z+C8}`D|En{D0I1~(O;+De6yIM+H&CwuVKu}(^#JX$LEh$dAmmO1x={_4au-e24zQ>3Dn6`dZj~Ne&Mpe!Xqdv?{?$8Q@cX1PVKQw zHnw8}b<~`_W6VJ^)7dv?#C(#6x!tCv(52TQI!*FNf^KTv-04U?{g%jDR61HAC`4-E z>f}p~Pt3ee?r+V%Pq*F?7ztZd$?_Lu;SuD1;dSUV3;hL&JC}xLR}Wt?d+5C)*_@6u zfuPml*|Bk^&2y@MY1AUa7gd>_EATc|p-$%Mp>*VJJ3?}zCd?@H=jOu4YbK+O@NMik zY62d!g41i+wl%;Jjzc^h0OcNCaSTwr&KFInDli+)Pl_aq4cx+Exs5cun_ ziiG~9Yuqwj#j9=&@vWp8FY@MT&iRQlaF-1*8L_ZPcr+#(k=TC7A`Fy0ltv)p=1}+v z?=04TZS299z(Te5Vh0_f|L3cxFCyl#W z>KzOk_-W^K)f&#bkeu&&fA5vZnIlyX4dRcTWtr>oRp({VieNcsJa_Kxs%>M54E~vo zQqLKums1w&B5&h|v{NHby^iQ{4SqaGk)*=6D962eJFZvjuG52t5?v|MnYa{7dh_P> z)5ko$Xp1tgrm9Ar3zj3Xa*AUh;=FgYWbkV3rjBP&2d{hq6S*#)WIe&C`1Kl==Ru~- z((@m+k|@%`v?pJ--Mkj|QHYUsNkE0JfPO=IbG=o^M>qyXnXlQ9-n^|deOh7}PkGwt zi^Q9mP~_ZNn|{YE?P>F{Yh36TEv{GCgzRU`*0n_v!6wIGDb0+OQ?wp|+m3;f^nk;* zasR6iM6)y=4nYm+pHkY z>uepiM-lFHdN%dfG310?2Jf4XER^Dtx#COP(RV*P7fwAIAKY)(xioqD?jvVv{EXJ1 zw_WESRC=OKvRa|Tw{MuTVQ`OIJ^wk_WrM>9o+4fjnA z$pr4J(gjeJqW{#M`MG&Oy9Zycy_aGR_RR_Y29yuJ9`jpm`$PKdV#fz;cN35_Z!Z(~ z%JQesOz2+)%)e=e0iXxy;GEk**T8)yIZN!nOw7* zzOm`;fkO_vhjt{|)b#{|&f6Oisz~GPx(q$c{feqn&!JVw(o2*QC zmeLhgHpn7&roT*NQQTO>skhchV35(j{ic~v{gAkXSq8b`U^QcSm=)p80K-^6kB5V} z&H@38U(&0&Q>Ez7E7QynndQ69vCAp54azgMWWEhms~$-vNzys$lu}^{HCW7^%AS70 z8U=BcDAu~Cp47&36?w1pZ;v2n1V^cW|a|L=+Zo-@gzO*xQ%GU zD~|Dxu)>Ywsxy6eV2Y~q3KBknH$UaiU-mm8{G5e3&inyO#?!WyF7_gw%%%~h480DK zj1B7>JeTX!gwL6@*vthPhr2GfrDkYSLLXqSb~E6H*89|)2)W|^VLp4vJpDmVb9@7x zh0^)}|NNBQyCC?BrpG%ciHf|#RxU>dy(WNJstVc{aYJzi+Kz% z{OA#YeK69W+5rEu6ZX}&2LukB3?)G_0So~6_8gpMEt*|BN)($cUYyd{l#sUYnJEx?rr>X)DynZH^CNFKbp2$C1z2EaEr;fVVm zChwtmV-TfN+%oqVI(BttgP4RI2DBplO>#MEYPS!D-q#ip6o)7=<2=#%=MM9q@Qlr= zOE=8s%1?$p3oLvV-cIxKS@Pzm9mOXs-frT|HXIda#8yv+m@V>@NGg)(g&*0av>2)g zaMrdo*IzKU>WslqRV=SH&Nhp?awKJzy>UDTyWWhCNi$Q8YI8G{lU#O@^na#!QfH^J z@I^)fw=eA_r}t;Yy^g9%h6a!|F$sHgy?Z5z6RcGok2#!vKTvEUgEprljB3D!mv!oN2@eAeIK`(rw5;4 zlM3TKOFV8%)nnYv@CED4qRGM)MM1<`G;xS@$KVHP0%6-$^!0a{N~d z*G8*!50}AhnQ9+dG#aRQmW&0WcA5oxYTipfB<|Z#_g6yD+oWqO^xnDUwgp?LwT+sc zzf!PncuUGA=T6$r%Gr&cm6n&sTgbOU?E9)YW*qaKm2MxZa~_8P literal 0 HcmV?d00001 diff --git a/Assets/Packages/supabase-core.0.0.3/README.md b/Assets/Packages/supabase-core.0.0.3/README.md new file mode 100644 index 0000000..7085808 --- /dev/null +++ b/Assets/Packages/supabase-core.0.0.3/README.md @@ -0,0 +1,25 @@ +

    + +

    +

    + + + + +

    + +This repo contains shared resources for the [supabase-csharp](https://github.com/supabase-community/supabase-csharp) repo and its dependent libraries. + +## Package made possible through the efforts of: + +Join the ranks! See a problem? Help fix it! + + + + + +Made with [contrib.rocks](https://contrib.rocks/preview?repo=supabase-community%core-csharp). + +## Contributing + +We are more than happy to have contributions! Please submit a PR. diff --git a/Assets/Packages/supabase-core.0.0.3/README.md.meta b/Assets/Packages/supabase-core.0.0.3/README.md.meta new file mode 100644 index 0000000..cfbf9c0 --- /dev/null +++ b/Assets/Packages/supabase-core.0.0.3/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 21cc2bfe590bcb3499d1d754828332cf +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-core.0.0.3/icon.png b/Assets/Packages/supabase-core.0.0.3/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eb1468e4cc6f2fe2ce24c6740389535073ab60e9 GIT binary patch literal 5771 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 X;OLIKfIj`9$&96;qNCiPXdC^1ZeRCi literal 0 HcmV?d00001 diff --git a/Assets/Packages/supabase-core.0.0.3/icon.png.meta b/Assets/Packages/supabase-core.0.0.3/icon.png.meta new file mode 100644 index 0000000..a4302a1 --- /dev/null +++ b/Assets/Packages/supabase-core.0.0.3/icon.png.meta @@ -0,0 +1,156 @@ +fileFormatVersion: 2 +guid: 7f90316eb110ec241b1dcd3dd2c1e4a2 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 2 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-core.0.0.3/lib.meta b/Assets/Packages/supabase-core.0.0.3/lib.meta new file mode 100644 index 0000000..c5b6333 --- /dev/null +++ b/Assets/Packages/supabase-core.0.0.3/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 41d77fc258818c440add0b9673352d46 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0.meta b/Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0.meta new file mode 100644 index 0000000..577ebc0 --- /dev/null +++ b/Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e44698d9ce1b0144da08b6e95f07c71d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0/Supabase.Core.dll b/Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0/Supabase.Core.dll new file mode 100644 index 0000000000000000000000000000000000000000..a378d133ec505e23e8d6d4797a458318ef7fc992 GIT binary patch literal 7680 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 V#BcSrmd)feBJ;6 literal 0 HcmV?d00001 diff --git a/Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0/Supabase.Core.dll.meta b/Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0/Supabase.Core.dll.meta new file mode 100644 index 0000000..8ba197f --- /dev/null +++ b/Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0/Supabase.Core.dll.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: 37185a47a77f10a41b406dc1e2b84619 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 3 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0/Supabase.Core.xml b/Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0/Supabase.Core.xml new file mode 100644 index 0000000..1db8fa5 --- /dev/null +++ b/Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0/Supabase.Core.xml @@ -0,0 +1,13 @@ + + + + Supabase.Core + + + + + Used internally to add a string value to a C# field. + + + + diff --git a/Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0/Supabase.Core.xml.meta b/Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0/Supabase.Core.xml.meta new file mode 100644 index 0000000..c2290ba --- /dev/null +++ b/Assets/Packages/supabase-core.0.0.3/lib/netstandard2.0/Supabase.Core.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 76bb4bd5e9eac444885a8c802fef3eff +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-core.0.0.3/supabase-core.nuspec b/Assets/Packages/supabase-core.0.0.3/supabase-core.nuspec new file mode 100644 index 0000000..fcf92d6 --- /dev/null +++ b/Assets/Packages/supabase-core.0.0.3/supabase-core.nuspec @@ -0,0 +1,22 @@ + + + + supabase-core + 0.0.3 + Supabase Core + Joseph Schultz <joseph@acupofjose.com> + MIT + https://licenses.nuget.org/MIT + icon.png + README.md + https://github.com/supabase-community/core-csharp + https://avatars.githubusercontent.com/u/54469796?s=200&v=4 + Shared core for supabase-csharp + MIT + supabase, core + + + + + + \ No newline at end of file diff --git a/Assets/Packages/supabase-core.0.0.3/supabase-core.nuspec.meta b/Assets/Packages/supabase-core.0.0.3/supabase-core.nuspec.meta new file mode 100644 index 0000000..0427ff0 --- /dev/null +++ b/Assets/Packages/supabase-core.0.0.3/supabase-core.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f6de0b0029f6a3746856aef52a7638b4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-csharp.0.16.2.meta b/Assets/Packages/supabase-csharp.0.16.2.meta new file mode 100644 index 0000000..f3a3687 --- /dev/null +++ b/Assets/Packages/supabase-csharp.0.16.2.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb30f65f5ed1f9e458f37dbf42364319 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-csharp.0.16.2/.signature.p7s b/Assets/Packages/supabase-csharp.0.16.2/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..dbaeb0d76200b3ad68fdc422885ee920df65dd5f GIT binary patch literal 11525 zcmeI2WmHvbx5wEVq@-KQO*gE)X^?J3=@9Ae+O*^bK@dfhRwPBb1rd~x5EPIO=@118 zK|ny^E>t||@t$+;xMQ66%e%k8if4^yt@X^`f6o700E!2KiNhJL9KMYY!GflvxYq#` z_X-q(4krZgF>y@8l_6H>7*NOwG{EwY6Cvq(7&^LE?npZqXE8V~E`k>>#492I@WOfF z0GyYfSAZAX#iMM7v=x)pu`)Po&3BGVK}k;SybvIxprI`TIB}_|h{*a{xXRn=y4cvC z<&(4Zv5~;VO-B*P0x0xq00m7;M~6b7P$ImAsd>s_#r>Fh)6X<(fau}8zRwtP0-To> z{3L*biLQfzNeb1`f|CQJha0%0c=C2Oc5+tk9xxSW3-~F3@^JS_QX+3}Z(d9AkOg>% z*TTgK&I~Xf9zrLj`7uHUiS%^0vV^I~!!%u7JYaG%06ir>AOwfQfp0$pN_>8B>&NE5 zH4PMm@%RG(Uko}5LWl;SAh=Kz1cFvXK;AVc7i?G-u~BWh<3@77c#JjfYW~NrO_(UV zzA4_P;L$wtc!b%Rhh^+xQBh-QxOkzIela%-qZWL%4B=s%TZBmnA+MJc<7aX+SMB#0 z)-}y0(_llVXUazQsVsX*E}87;Qwi27b!G_dI0W^VibyunJd5TZ8RnzfXD6(95IXqG zS-!zcFo9zK;@xXrPD39u&*5_&oOB<(XZq^KO~FwpgY__fI)#lrm&P*^6}OS6r4xn+JgrSsT)qu34zmxhnX;_0E*z>pYZcK1YZLL zEt8;ba%OpL)*b0*8CSpUZas{cll3$&j#yeB7@5$mNPF2u#$JP;Xlh8Jsz28!5vrn~ zpD1WYovXB{+v;0DGHeqPHW`F-ChpB6R&Ll6i3;|}ZIc7WnZ&Tu@2plMrY0M0R4R;? z%5gZCSeJdC21s#jRI>^?nM6XWR4%1KPTVPwU}=0=71Z>>CA@Xl(sn6?CvHi$dN-PW z-2B5+b(?C(CmSD5JKzanQ3MJ5=UsC0`#_>-8al*=@$_6*;?rj~oVLW1!3%i&*7cBwr!9!+cdyg1I621LuQr2}^=7eV5V@rm%{<$AmaI|Dg@xV4`$oO|!7i=>U*;MJ zj}riZ!l3#dx)?ZAG$sSJ)}C5&4_)Hbv5&9ZlmBYy!ujC<0s%)H1}_-82$5r(fcyWK zAaH;WTr40#*nbd2OIZd1JBATC7fUOcmYt2WowLm$PW~>AKlN461`!aK*mz_0orJ5L z>VCDSkX$DAT7ENVJ~#C>V#saLEA<3#bnnasl-J^`1wU*hgsY!F4%qA*Qp`Rxs>)lmu zSbQ<<*$C`Oyv>>Orc_V!o6Cz`;nw_al7+6B1zkb!{9oM4m=}lBb}z2u&gs>jefZAf z4cEToi$D)iA^e-Ga}O_M=Plaf7KCjS+FW?pydB*GV_{mtwv^ONXj~^G`Pg!Uurc#3 zx5hTI?#Y!h^H8J=3TsZ}nmrQsiqH~y=3ZJ3f8LiAnE);_Hr}#d^J{=1N9)OF9&4md{0~R_u;Cu8x1cKoNH~`E?+W;h-%GSffRg90% z#RBR2lOh0eKhA=N3x7Y$!t78mkUyQscl5fyzi1WtL$#2T;k9u00760zCv+Oa5AXrR z(nZpR!Uc{lH#;a?olpcnurz z;lz;Oqxe-D`Q+5K4xi`uk?6;mY0zAAnG-kb{-PUtgXs>>mX#-g{{M-YAOOBHQ}R8& z0dvI$V-NXrZhsaIuUtAKS{^a#=2gIKDDb4|muC`$%_Y~qta47mbc9Q%w|Z`Q5^7XB z-@jonW6T_Kfhc=L%I$^)0qMD-ArpDu4IwhjsO`Io7Yq+>meF7l#FFnlE_tZYbe*}F zxwVarGlPSjTFi|ddWJVPtAT}h<}R61hM%o%$(;v=FvAhIGQ61D+)phewrSncFQnz~ zldiq7#ACshMU)FgF+=zH+yiNcR1^~4UZi`s>tX3ozGN*oT2UH3@D6``3j*s(hFeHr zQ&Uxh+)-=2O@#RwD`fZD=nhI{+uS)rYnLRB>I(0z*hO1Mc|^H&#sXD#ilxRX$V@em znZn2O$6m!UYlhf}(<=20%#k z&jcj}h{1)2flZ352d01^@jP6d;Y42}76XeEOVi5I$;H_cez*w1({M={E_f_Fmqqnc{>Yt7o>}|$I-dy|KQxeW$Q}N&%xf=_)&hm9cC{&HSdVy9qTt76ySCyeulb5sBV7x zPDJ;IQGBx+w%1T8>hcT5Dn*ksd-0d~ZSM7+ePI2icfdeZ#3MX(nfpcu%SJ-G<+Mpj zO<`|m;~fee&ti#B)eX3F>PjbUq~1E!^T~;0tM$zbrqDk=5Y6{TlDfY@5bL08I?j6L zXD9P$mWhXWk;Z8V_o7N&Etc`<+hPM*wtatCyxtU53G=J}U~4n@q#AyT+202BA9>Oz_2#&l zF1~ItbAs@s=SX>v(`?m0a~Lc5Yx?~s4tsxNp)24F2&VI=!^8RhVBs%3L)w}lc+9>f z;5-&c9ve7_Q^!9K`vsx@%dm6b2q+K80z%*F8IXYJ5P$<}U)qCq97JKa`UTN235}xa`q=|CO8^CJ#R(g=Uxp{MV2D&slVS=p?cFM5kk7Q%47#Pe8W+<|evJ&%KAie&)ll))yOf56#8(`5 z7YEc~w05uK7J^=|&D1`&uBCptHlBwlohHM=zu{O+RuW`FM5Ui33UEHWnI*?tY&$?z z`*!@&Gr~u6Qsqj}1h_l#Zh7bE>qzR{&mC2d!f@SUSY2x3$!6|5w6+kjT*B57O<*3g z%!N@Deq5<8cv{9~wIzTfu5yn$jiuE-FRE(_Pd_(Nmm5`D@SJaT2raOz|0(7&XHD_5 z&#&MpdQJdE&kEMD!DPQ(v_IFj=_p7OK=q@n#6gFj{IP)r0cd}0;GBRHf-DpOK>Pvx z2n4@~0YHy=@_RXoLj)!IS~vf(0}~1|4i8L6Fd!&lZ72i+g@XkJ9l##y$jL` z4;$&}YG!VRv;vdJqrw&k1I~y6%Pd?*Yaor(7G?FIOlw*vXGqV)51qTWYCknU#;+Qt-J=xn5eSI_ys|z16B#s= z=&zI#tcx*F5Hzjk1@1gDI!pF;VM8Jv-}U4|Q9bp{r5y!pS}Wj#?SyX0H5LoloALO* z*`Osj`pvcXE~kpSV{6PAlJym@FViz9Rz&-2Q8+(LyWRXM5Ub4HYI#3VOKNbhoRwEV z<6;Yyf^gocaoi=kX90`j=w{GeWy?iFKy<@z4=??C*Qz03|S2keuACGg>o2=W#_XsJ(cmY*8+R3 z`U$NfN&!B+osOaab?m>6(KoB>SjBl{T>V|8`CrHAzmCy=)G@jaRzIHKs~>_pR5x~B z@hq&qR-eI^rZPC5-QfMJju8R@h=5G{`ulG70-{F+kNMB_&i~zWX84+RgN_l^k%a)$ zcK1YjfS&W$xK$DW9q>Opz0gCa7YaJPpaD|<<|fj1qIS;c>=}R&u;YK<^niu8ok3zf zYWQN)G{*x8{Q|F)&f?27Vff9!=?$7}5sD?<)(c8vjH)4WEt74O+Z~8v-X{#!0erQi6f=+aOxL-J%_e8+eO_U^2 ztZRV|N(M3X8UxAc91HPhQ0=cPra|{K^06KfgUhGzOV?u$8K`78y~#_r8P8^`%TN=2 zNUTq}&1|R`W4YaEchxJ&OX8xDtXD*2qMe`e+EgY9jdhAg$HY1M1p9F0B!uUm~Dpga^mXRp!I=hS8f^8{4xtF z`FLtC^T4g((!IBqIs845Skq6c-^gWCJ<9QhOcTc8G0>H3bFf4@&J$>AD0w_(Ev%C9 zobW3&xh~aS*C#_va%rAOeF@&u;ZDJbGwHADDP{4V!K4|c;owqM5PnUqX;8r=74|uU zzNH~1vn&voHFuJ*WD+W>on1yUwFkivCE^|z4LLq5b#U6R&Lzi-6JP|M~-1B!97E{GWkWS z+5=292YV+jdYGi&<~D;0iWx8^jybR5Ws7XH6M!bAHB0hU|*f6!R?u=+ZpvBl3crUb~r zHx1fK1V?P;K5PNm6!vpA~h@%5PpsOSR)6|j?07QjghsC#`5KP<7$x6$^%*pl0 zu>Ttzw}uO1s#G*exT|RBw6UN!ug41KC2C|0_J;P{Q_XZrFMS!hW3WY>Ax|!Al6`f< zb~j+-Zsf_J)YJC}`A@5po@7NPIDOK~g$8_)s|*_@{(vm2Sm6o|i(;gjTpE>VrVJ`L z#U&{_W^-dvLt<@Ew|{}1XQ{93q36PBOsng09DO72?IuTVMku0Pel0H(Ip%M#=eH*8 zn`Tt_;%%5^rRKVq(zaRXsd1A^?UM|)&cY0}(uF4F6K4auHbqHnRtfG~IL_s?&~*yo z8xFjo$!)askbcnM-tzdu>9U9V=Y98wVvx5BxkYF0D-W)f!b$V=I1<=+HzRUlE_jja zu(~F(2BlLg!Q^J;EP^k4IrdRZR?$@dsIeiWa{d~ums?NJmn(Ne!L*L)y8iZ< z*~IOA(T1IJ;J)h6yQH)Fl6~k`_bX!hjL&(IXxwg(#uL93#hBa3ioHWdM1me*!c=QH zYcZ8GExFa?Q7%P~aKmZe=fQvU8ZdbV^<;gQb0<8y!8DytR zsd$OblXe4IUG-FZZR$od=Q#FUqww=N>^|EycGF?KlQexkd~)9K(vVZcZWxS30B+M+ zMUvpstgdQKhlh>IrFfF3+f9zV4q;^Jino(e^4@dzAR9U;P>bUBE4b1rXR>Tsm9G|S zeUJOzR8-;om*_f6)(FR2Pg4C~x#Ie-=GJ+tJvP|RBPus~cfhV4xi%2x=4Cbda?L%9 zX}5t5C10G(MpM8{&)Qf$!MU_`ugo_&Buh8E09T=XviW-YLekz|PO5uJb6aDhz1v7D zX)sQ6Ra$361aqxgmP(Dcb?gWCyYJ3HH6I8E-qtD#JSJkA*DmCj=}%n~dUU)0%{pcB z#SYgs;rb-BNf?D1+n%WnMTYg`ah(P+j_}f?bgt!inQE~C@+5erISwK2laLY8{rc>l z4ZV>%j9t_OViF^A4Xx9tY3CJF5ZcK(FDUECnw6Jq4o3uz64#p`>g+3opOX@{bhNon z2k$nl6L8HB?&a~xlb>B6C7^pPEJB^ZwY5Cx{~1)QCQz~Rzbn=W`I3#eRBX|l`qxq> z^JWykEE(WmQHw*#;s=D`0)I%B0QhMPsA1naCd&U%vS6US_*JqfkAmi_Fd+|x2?ly4 z{C`^}WN9fx(1qT(R4A!k!8FyKHZ6y+&ir!w zaUzZ=dUFfAKK;9bZuMe`OL6Kkw6Mjt6mh-;>sh-6yZuYg2DxCgjfruU_titzyI)}C z0Ja^WvZJ4aaG2w=QPiXMkB7xOj3!P|UD;Du#5Z$H-FGu?#!NZ0*23#cNMo%z`+QK+ zWK^y%Z1YvymNJjAf@gx~{y0$vO=#nzH=6Mem4;DlE+)>(bDbTC?^?yCTtr!( zKVX{e2w$npX0UW!8kkQXwW#2IcVZ=fi+Pi-?hb8vwaMh#idO(U*-A+#^(-@AAy?wl zw7D;rk&=iNO@Y1s+NJ(A3 z9QVLifG9A>5LaInP4bGJXIrS{pl4?ciI?tu=G~!Y2ZqOQPYWdRi7h%nO1Jko!{1-l z6v<1%$#5%obSsg3nHri2^4zgE>Y&^F=7yjCxZ>PUB!xO?k1Mx~uA8@^ig zL!q8_6YOl)toOJdh7ajW_VEOpRGQU-~Kg92T)hg-2YUeAj@J&6m01ZGb{e1elaFu_m9!dh=6Sr@9+wrvRYrDh|2)TKrZlETHgaRSK z|4MJaTyKZ}g9-sz_eQf|HD4v|UdPS99y-?z_7_Gqw)<8F%eP+jHo|Uk1o-D zqS`X8*uvgdv>=D(I`J~;-l<6R#r{~~)$^Jg?WPRPx=PEV#OI=0i{K?&-y zQ@pTSN2HYZ4vRf1Qw(=_O!=kR+mYO{xS#|n_Etr)dLZa!l}N+zd)m#aj7M_ZlNVG2 z=xtpaym9-XQ--Fs><1$Ang)Y~l#EOlKECgx+*5Zr!16xrmMAaN{z$RU5#g`TXQN~_ zPlK#V-f`f@R9uyzUt2SodOcEfGg!VPm`ElHjzaeWeQbBoRR_HP6_J7x{Z1;6Ir!-z zJplEOE&=d`Jw76gQkU!4!m4zL2?cbpio z-mN*OWe>)eJ^j*pwlYF4sHjn$lwy90lJnFl{dhj?$3yRHlL(4tb+$e#>pA{sn=KUI zwUSV34Rv&Sk*rUMxYZXM8&!=JlocDUA8RO!_FUB6V>W~9mv0%{3GQ1pkSFEePtbX7 zV3k<@MUukLP3DYF_p6xffTB9KQ}LhVLZ9MTv~~%)^RIEV3*+kR?{;4c_^AJxw86-I zS9iO2i;Sq9u1Us^bI66-7E3X+K4aE$VIFeD*XGNq?TP zGFe+ms86SnRcnMvQ(2elLdJzsOv$2IG<3(ZDd{v!!_3*?#MD+~6H2Bfk~ZAy)2!O|0$qd{d5+I5+fj za^_MJiB^w33~RYtR`zMj4^0h~rLX}Bcq)N;H32%gk+y3Bs-C_dtfodN!GseJy9L`t zvQFktlOA}<$ zk8;?xaiYhtF<$IfyyAN%J*Sl~0_Bk}u2SE}^jfkTp^9T2y?wIvZ9sxoOAhjiS2sd~ r<3c!swt`8m-mS^uZo-9^lu}pT%F8;B=ahSF_+r1JxZc()syy>QERR3+ literal 0 HcmV?d00001 diff --git a/Assets/Packages/supabase-csharp.0.16.2/README.md b/Assets/Packages/supabase-csharp.0.16.2/README.md new file mode 100644 index 0000000..1759e17 --- /dev/null +++ b/Assets/Packages/supabase-csharp.0.16.2/README.md @@ -0,0 +1,68 @@ +

    + +

    +

    + + + + +

    + +Documentation can be found [below](#getting-started), on the [Supabase Developer Documentation](https://supabase.com/docs/reference/csharp/introduction) and additionally in the [Generated API Docs](https://supabase-community.github.io/supabase-csharp/api/Supabase.Client.html). + +[**CHANGELOG is available in the repository root.**](https://github.com/supabase-community/supabase-csharp/blob/master/CHANGELOG.md) + +## Features + +- [x] Integration with [Supabase.Realtime](https://github.com/supabase-community/realtime-csharp) + - Realtime listeners for database changes +- [x] Integration with [Postgrest](https://github.com/supabase-community/postgrest-csharp) + - Access your database using a REST API generated from your schema & database functions +- [x] Integration with [Gotrue](https://github.com/supabase-community/gotrue-csharp) + - User authentication, including OAuth, email/password, and native sign-in +- [x] Integration with [Supabase Storage](https://github.com/supabase-community/storage-csharp) + - Store files in S3 with additional managed metadata +- [x] Integration with [Supabase Edge Functions](https://github.com/supabase-community/functions-csharp) + - Run serverless functions on the edge +- [x] [Nuget Release](https://www.nuget.org/packages/supabase-csharp) + +## Quickstart + +1. To get started, create a new project in the [Supabase Admin Panel](https://app.supabase.io). +2. Grab your Supabase URL and Supabase Public Key from the Admin Panel (Settings -> API Keys). +3. Initialize the client! + +_Reminder: `supabase-csharp` has some APIs that require the `service_key` rather than the `public_key` (for instance: the administration of users, bypassing database roles, etc.). If you are using the `service_key` **be sure it is not exposed client side.** Additionally, if you need to use both a service account and a public/user account, please do so using a separate client instance for each._ + +## Documentation + +- [Getting Started](https://github.com/supabase-community/supabase-csharp/wiki#getting-started) +- [Unity](https://github.com/supabase-community/supabase-csharp/wiki/Unity) +- [Desktop/Mobile Clients (e.g. Xamarin, MAUI, etc.)](https://github.com/supabase-community/supabase-csharp/wiki/Desktop-Clients) +- [Server-Side Applications](https://github.com/supabase-community/supabase-csharp/wiki/Server-Side-Applications) +- [Release Notes/Breaking Changes](https://github.com/supabase-community/supabase-csharp/wiki/Release-Notes) +- [Using the Client](https://github.com/supabase-community/supabase-csharp/wiki#using-the-client) +- [Examples](https://github.com/supabase-community/supabase-csharp/wiki/Examples) + +### Specific Features + +- [Offline Support](https://github.com/supabase-community/supabase-csharp/wiki/Authorization-with-Gotrue#offline-support) +- [Refresh Token Thread](https://github.com/supabase-community/supabase-csharp/wiki/Authorization-with-Gotrue#updated-refresh-token-handling) +- [Native Sign in with Apple]([Documentation/NativeSignInWithApple.md](https://github.com/supabase-community/supabase-csharp/wiki/Authorization-with-Gotrue#native-sign-in-with-apple)) + +### Troubleshooting + +- [Troubleshooting](https://github.com/supabase-community/supabase-csharp/wiki/Troubleshooting) +- [Discussion Forum](https://github.com/supabase-community/supabase-csharp/discussions) + +## Package made possible through the efforts of: + + + + + +Join the ranks! See a problem? Help fix it! + +## Contributing + +We are more than happy to have contributions! Please submit a PR. diff --git a/Assets/Packages/supabase-csharp.0.16.2/README.md.meta b/Assets/Packages/supabase-csharp.0.16.2/README.md.meta new file mode 100644 index 0000000..043c7e6 --- /dev/null +++ b/Assets/Packages/supabase-csharp.0.16.2/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c19b82a249300414088d16eda6187244 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-csharp.0.16.2/icon.png b/Assets/Packages/supabase-csharp.0.16.2/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eb1468e4cc6f2fe2ce24c6740389535073ab60e9 GIT binary patch literal 5771 zcmcgw8=G9fh7f$a_I)?lI}(t>6KVgniXk@r9mVGq*e(DSvnLDBqWvw z>3zBP{U7d!XXeYynRA}!ocYb1L_HlfGGZoTEG#TC4RvLMhk5uvAi{YVIi;n(V`0%5 zXecWf1sCiWdZb$p1P)E?bC~*ENY!$v_$DAX97onJe@>e`a+ z)csdy`|*8GTJC9ctBj2Qw$4PM+;)NNc7U$$>DG9kNWE$~1gipKXZJ+M_J0iC3doy% zjz*CwVNDh9YV%@qEWT+rJs~?g#e-x{Dn=Foy2|}<{|gvi(x^g7yG(lmRGnT ze_APG$$DR}p$-eukVNE;%lREQ)jNl>gBARAu>Su3mZ9`V1aiIyN83VeMzg5=z9O-- z+6jTWF9E!Wl1(bW3iDZkKk|s(GCHAFHYtI*p$lt1kVm$GrrT%@mT-@lHP`(hQX|0 zClU=iOT+!2m8A8}z7}I#4;Oj9LD^hZ98kVUrq8=${T^~yjiEwkf_?4U0Z-@(x$CCF zBvQkViD^C=<45B3oa4INNUNLKyIO_ZJe&Lq&jtNuu%lJE^04TX3@f53~1A&!1gv)~q+4T9=hSs5m6m9U?`-i~sCj%SFq=cuM3GR~b86pEF(Axw`{>!b<04 z+L$2fIaHyx-WA@wjC(iV7Q(hwQkdm-AYfPDhbi&J19y%hYX z4S5|1uvuT|{45P`qj=XhDc93H51#Y>ExvAwA6QJo4z< z+JyD+;%Hrlw;innAT*)@5DVETXiR%2!FbH7f zPr9icnRVEYK4TZ|t0c4Gy;e<_rFGpyg0SD;s!4syb~@pyL%Kq*2J1_|-Gn&i6+Ghq z^~O6}Vq;vogNhD0OfQ6%a(Kaf^kgTK$BxWXD(v@e^Ym`A;tE(4(9vOrn3hNhUuzPV z`2A-ilI4V>4jC7?$^3Ei4Mc52!AwQ}{(7$A09+=R^z_()A(6pG~*Z^8+Zi5)o*GAuupd?Im|CstT6r?yqepTC#sW6u+^ zr^5B4aAP|sZ(P|YD6St%j@hN~SPF&9;>JEb>9v$WE1)9esdC~ZHUldQg!>YkQ_>ob zkkEyQoO+{!h)n5#oeNKj!`6pK{Ut;M(z|zc#X2#9a6if6FIzR0yuG16x4DuXGw?LF zF)xDN`8b06(s5@~?iv4TXv7kaVg#8)iOVU}!J!RAtnwjwoN+Prm+My$9XN8Ma;Ekcr6Pno?4(6;fgvC%)*@t6%s+|G-!PRI*4%OZOmG(che%S(#YJr2V7N#N; z<0O73lfu0fXIRohIio`7Dsap69F>W|1g6-LuH$%5qWZ}wb%^>C?i2#oJU-#*b>wkG*rYQqM*8xRfyak^HGT&JD9f&DDOt36kjEfOl5i2;n9pI52z3uIoeU= zH%O#9uPs~N;H8tZQFuIg_MBm|ok)jsY&#Rr>=J3aT|vrtMXm+k$6|7aO>ofaC<~BE{mN3yXljg; zjj+ZHR3c>JT4P$;;^Sht24py8sPrfYP>W2DPVv)`>=aoJER3?HR1Slsf9bX z`yZ@H3ewl4WBGM#-6|qnKPBbIjo6I;BnVeFljf5*Fq8%n8vHi&SK?PHNkZ9H?DX@h zxrY!H_RZU85|wi*vj86*xi#x9*S=uW_-%kV?XcIKAI$&ts&AXXslt`Tp+YGznwYc$ zFHsMz`hszB4nJiKd%W603Qs(`;kS?mS@EKxNwIYmt7a*%Fs>0VHS%g?itjs|-dst9 zi)5VCm{xFtk=4}povXT}ZZSoH<@R7-&3$#&PBd5aCKlx^UdEhg{>xu?NtSMgrjnP( zYv-}A6MH)e+N8UsU+(5!P5+s|0I;#VA zl9vf3*h8)KJa6AaFJbT;0JncNRjb*+iR~5heA0m>{ytuLVT5Aqh?)NL>e&xEj!YUx z@?ElJ)=16FYC@+CXpESqIJq7HIq4%Re`AQG%z0rvb(hKamjVK`qd(i};%}(K2Hq*T zSWA1rRF$x?#2MMFT%YKuBDpqk5V?{f${NMak7*Lx#x~r`!QR!Of49Q+nv)NNQdRtr zOxI&qkjl+)Ir8-zB-r|hk%YCROysLTo|ht(Ie!;-Oj_>~IG4TzQxIWbkO}7tWWFzh zDuE`Gzrs!k^=hQ;W)5N27o$gyYR%XzF^T@BqYIk^g=-*6+T8|vjJ2K9MynLb56WNf z)D3FQ!(8#SU9006ctUl`p`7VJEjN#Yp2}_Zh5TWaDG;bGs@^4e1(dW4P-s@rW%v}N zCthAih;0Bd9NL+grTj^g$IKN4aOP%oJJ5O`A^KOw0FUWZ>kR_(@x}6S!k)*pHm7fZ z!kJY%8qm`kr8@cel21OFlx)u)f6^p8#hFW*QN%%L$57-C0cg z8ZBRI&fI&|b3LO-Ob=!>HDh7+%n^)-mo!nCijU~`YVlO@}-|rGj3F; z+S0nV0b%IMcJkYixyCmyqLzQ9LevhRgLf)Y;6#SZP$ijcXbM4j93$&s|J@71={s-=DAu^xBGdYy6{asnN;JdH zI8`i7nIwKN=@nr+Uo<|$L$S?(I83CRvDRblO={aUJpBU=^cH<#>a9S9tYOVNr8A)l z=Gf-da>`>wrDoEcybb3O=U%PG1%1l9$e6i!O8>4k4}P49wW8^DoBwZ~C-d*;P>)QC zckPXqi#Mt`!r2rx1PS8JSXj2&4Db#`ai)%a8eXbJ;JE8wZTK8Qr*q0jh$*+A=X7$U z=&st5HaYgOhguLMXN;tSt8Tr7GA({2Q&~HyOxqOY>OnXiHf4>6m8S}vnvVbb$mP#m z2I0kz``;Lg+qN`#Y;5c0M$cvrwflmPvbb1T)>FS2Hnp%EH_>R5U{~+xmLD+Z6|iI) z>2g^%);F_jah!`BfX+%AiD>h-t-%h$J>uko&`<-romd?Aq@o3cmXN^N*CRw8g@9JP zpM&xP5p|UAqXgg`b~3Q!SiY4f-oBe>V~}{}sD(*Un8WT5welP|raTo}$$T!NM@oUU zPswmDQBt;>-QX+%&%Z`}nVsonToppm#iaK9xc9DjssH7?w;WyK<8Lm9i;#$U2PqxM z@UZhGlrc+ABi~(JVNfzbGbPreC6U;TW4Pw&v(1-xtA?*3JuNqI&`KmrW<$$Z_+e$r zl}|LQOFbUK`<=Y072dd9{XNSaufaCMJpmV8JDNi(h4L^yFG~b7EbM$3QgeQI#+rp> zE1xyx*@m{zm+vpNC}el0J_{RRF%V*TfAS9ld@2L<;6~!pyIXL*v6ay?z;Jl<2Jn2q z@JQ98TD@A$aP!~k1J_4tspIcY2pcm8hG`|dR|@7ll6wp$a);nL%SJ5B-wx~t@hY_Z z?F=jWV43kS#j_0Dod8!lVx~~43>%tGW}NzNrRYl9^o_4$r@ZLvw0U|k;r(sc?42Q> zO=Vg7RwseCUC8nGh-BRZ540O1TgL<&o^&S>NqQSWP9eDMGO%L;kJ}ng^DFla&l2<0 z{4&~E@Y%`5*%+Sa_0}A~DSbu!$X+f0+S#qcPuzvCG4gYn(Dj*BF6(!2mfg8uZgqVw z6l#CWBiwoqX-j=ZLnnWl`QAj2e8Byw%?`1Rk?p&xe~nX0oE<_$%+o2;3tT1xOkDL# zpP|P?!ar`ev+AKSf(Qs~6VE{mSOz7?3$vw|)P`p^GZ6gvOX4*$6Z0yTyncSfBa0f^ zD|S<;E>QQBi+kAh*tpS||8KX)NM0T~yrpWM#<_$xt|TPd)t*7W_#?~x-p!W>n=1!0 zv9MO>@FyA|Rzg*PCT-B);{HF8O$8SToDI85QE{&(%S4-?1|#30;U7AoqTN~)F<%;j zbO{StDyyrvUfO5B#PaV4W2JA=v;NE)hFEHn+lDR;q8Gc0&BJd8%2!W5A?ZBE)!%f+ zn`8{^%VR0ad~Yyv{j4Ysi&>*`A#F$Dm?vF$3*7I+bD?*>?uQUrfjS0dz}PU(``Umv zXNUE>_wrKGXwjHdp)%%C^~_non9i?Gt{ZF_*n{7W*{olIneD*ZmbwbL7C*}kYi>z} zeMY7%Y;Rwu+pU`~UyMy(n)x27_e3p#XTTXI#bKW#;f{=T4RxsWYL;Be;F4^=-Je}G zH-O61$W?5Cx?o#F5uGo2v!C}d=^wI6UH1|Ta81Vz$L@}HU~16ZeG5;r{}McND~r?I zG4T0Co1v*)*N%9-;s;~ZnOQb@v(T;C+%C4)n8AX+ow!zqazXejdFXLsM?NkCwWv|szoiq~W^cYTMow_N;1`wefB`?YF znnpUB{+;JSL&TRK9{o6khra3JXR3yeO;)3OyyDQI*f4X+ig0JI_2CUc8NcppgMK=G z0BE&=ndUDI%78pmp13cMN0o;d`rX~@hz${>DRJtx5%j2)pVH!+CkjOOGLzndmI|^?Y9+qs5*7EJ!<;Mv)kKL7sCh_!8kz^ zQpfSKwT$a~ED_>ZCQzW0NSNEOLgUF)$&SnthizqJqdf{0m>lHGd!O>V!AT?dNW^X@A$ zDQ4BZvW!WVon$PG7S~g=ds;chnx35ntZxkM zt6GjNwFuv!KmCW+*e?7W|FGg^jyYIbOa=M6g-86Ee*HYNknGYNP|3Uw zM7$a#7R8^kyr-}|cm-Qxj=OJ`waM)aRI7OS!AW_3S_huzgkYzW;t1}eit>OoS>?{W z3UhnYt4qc*@4uOTuOuSj2XvwV=ri~VlX%i@B6ikf36^zr-@wJ`hD+H^Iktlfh!M1t?Ev`mEb-D?r1OI0HQUYLzDIS5|J%F1i> zLzVy$lT>9%F;PB_m#nppHAG;%Q#x=~`@ZMln?mFRPuWZAxwOn8;5SD4J=~`oGidUM z0tG>SpV`_C$eTdQ+*tFZS0~MS5vc{3`-2g~+@DW=@;y}eUs?TbkETtAC~*sXsIAjK ze*e{p5z}8F0up|Lrh}I%g;*zEJn9CgDL-d%#irXK*&qLtjSsOFsqsskF?0LCmjJ^s zc(ujrE&KnMOlcv+iN?p(P-betx=12o=xghIbC*NgL%}>rf9eKOO?etaH2By|5_%{G zFK!Daxnb!?CPlq6Q(F?$q%vOv4C!56-FIM?3NM1E|D*0sh-z!xGs}$nWsg7pV(pNH zsQ+9!w7A~x9N>))lbLnhz>&?}v-Y46HSiALY2d>-RXxuS1dUK;Zc2IgOeR`Ceq99z zt}5r1jS)OVJdD_#YM>A3(~(xh4H4WAf5j&!<1E7sJLDgGI%~s9hYPXdN%=srd-E+u z#AAo&#<}+Zz%oU_a4=!aw!Y~X*6wRvnTEDXly X;OLIKfIj`9$&96;qNCiPXdC^1ZeRCi literal 0 HcmV?d00001 diff --git a/Assets/Packages/supabase-csharp.0.16.2/icon.png.meta b/Assets/Packages/supabase-csharp.0.16.2/icon.png.meta new file mode 100644 index 0000000..2b5fcc9 --- /dev/null +++ b/Assets/Packages/supabase-csharp.0.16.2/icon.png.meta @@ -0,0 +1,156 @@ +fileFormatVersion: 2 +guid: 3066ae406539d6d4ea780c472ebaa248 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 2 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-csharp.0.16.2/lib.meta b/Assets/Packages/supabase-csharp.0.16.2/lib.meta new file mode 100644 index 0000000..843f31a --- /dev/null +++ b/Assets/Packages/supabase-csharp.0.16.2/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: aa899db65eb97204a980fe99af7840b6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-csharp.0.16.2/lib/netstandard2.0.meta b/Assets/Packages/supabase-csharp.0.16.2/lib/netstandard2.0.meta new file mode 100644 index 0000000..ffd7e28 --- /dev/null +++ b/Assets/Packages/supabase-csharp.0.16.2/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c466736de86881541a950c000543279b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-csharp.0.16.2/lib/netstandard2.0/Supabase.dll b/Assets/Packages/supabase-csharp.0.16.2/lib/netstandard2.0/Supabase.dll new file mode 100644 index 0000000000000000000000000000000000000000..4580e06907c27bb80e248a305e7c47ef42008ea6 GIT binary patch literal 20480 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 p7z>V+0Xb + + + Supabase + + + + + A singleton class representing a Supabase Client. + + + + + Supabase Auth allows you to create and manage user sessions for access to data that is secured by access policies. + + + + + Returns a Stateless Gotrue Admin client given a service_key JWT. This should really only be accessed from a + server environment where a private service_key would remain secure. + + + + + + + Supabase Realtime allows for realtime feedback on database changes. + + + + + Supabase Edge functions allow you to deploy and invoke edge functions. + + + + + Supabase Postgrest allows for strongly typed REST interactions with the your database. + + + + + Supabase Storage allows you to manage user-generated content, such as photos or videos. + + + + + Constructor supplied for dependency injection support. + + + + + + + + + + + Creates a new Supabase Client. + + + + + + + + Attempts to retrieve the session from Gotrue (set in ) and connects to realtime (if `options.AutoConnectRealtime` is set) + + + + + Gets the Postgrest client to prepare for a query. + + + + + + + + + + + + + Represents the default session handler for Gotrue - it does nothing by default. + + + + + Default Session Save (does nothing by default) + + + + + + Default Session Destroyer (does nothing by default) + + + + + Default Session Loader (does nothing by default) + + + + + + Contract for what a SupabaseClient should implement + + Model representing User + Model representing Session + Class that conforms to + Class that conforms to + Model representing + Model representing + + + + The Gotrue Auth Instance + + + + + Creates a Gotrue Admin Auth Client + + + + + + + The Supabase Functions Client + + + + + The Postgrest Client + + + + + The Realtime Client + + + + + The Storage Client + + + + + Used for interacting with a Postgrest Table + Model. Provides helpers + to be able to add realtime listeners and queries. + + + + + + + Initializes a supabase client according to the provided . + If option is enabled: + - Will connect to realtime instance + - Will restore session using a specified in + + + + + + Perform a stored procedure call. + + The function name to call + The parameters to pass to the function call + + + + + Perform a stored procedure call. + + The function name to call + The parameters to pass to the function call + A type used for hydrating the HTTP response content (hydration through JSON.NET) + A hydrated model + + + + Contract representing a wrapper client. + + + + + Invoke a supabase function + + + + String content from invoke + + + + Invoke a supabase function and deserialize data to a provided model. + + + + Model representing data that is compatible with + The deserialized Model + + + + Invoke a supabase function and return the for the developer to parse. + + + + The HTTP Content + + + + Contract representing a supabase wrapped postgrest + + Model that inherits from that represents this Table + Class that implements + + + + Add a realtime listener to this table. + + + + + + + + A Static class representing a Supabase Client. + + + + + Returns an instance of given a provided url and key. + + + + + + + + + Returns an instance of for a given supabase key. + + + + + + + + Supabase Storage allows you to manage user-generated content, such as photos or videos. + + + + + + + + + Supabase Edge functions allow you to deploy and invoke edge functions. + + + + + + + + + Gets the Postgrest client to prepare for a query. + + + + + + + Runs a remote procedure. + + + + + + + + + + + Depreciated + + + + + Options available for Supabase Client Configuration + + + + + Schema to be used in Postgres / Realtime + + + + + Should the Client automatically handle refreshing the User's Token? + + + + + Should the Client automatically connect to Realtime? + + + + + Functions passed to Gotrue that handle sessions. + + **By default these do nothing for persistence.** + + + + + Headers that allow manual specifications of an "Authorization" to be passed to the supabase client. + This is unlikely to be used. + + + + + Specifies Options passed to the StorageClient. + + + + + The Supabase Auth Url Format + + + + + The Supabase Postgrest Url Format + + + + + The Supabase Realtime Url Format + + + + + The Supabase Storage Url Format + + + + + The Supabase Functions Url Format + + + + + A Supabase wrapper for a Postgrest Table. + + Model that implements + + + + A Supabase wrapper for a Postgrest table. + + + + + + + + + + diff --git a/Assets/Packages/supabase-csharp.0.16.2/lib/netstandard2.0/Supabase.xml.meta b/Assets/Packages/supabase-csharp.0.16.2/lib/netstandard2.0/Supabase.xml.meta new file mode 100644 index 0000000..1388814 --- /dev/null +++ b/Assets/Packages/supabase-csharp.0.16.2/lib/netstandard2.0/Supabase.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8126cea0416c72e43bc3b18b9bbf7788 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-csharp.0.16.2/supabase-csharp.nuspec b/Assets/Packages/supabase-csharp.0.16.2/supabase-csharp.nuspec new file mode 100644 index 0000000..a4bf38d --- /dev/null +++ b/Assets/Packages/supabase-csharp.0.16.2/supabase-csharp.nuspec @@ -0,0 +1,29 @@ + + + + supabase-csharp + 0.16.2 + Supabase + Joseph Schultz <joseph@acupofjose.com> + MIT + https://licenses.nuget.org/MIT + icon.png + README.md + https://github.com/supabase-community/supabase-csharp + A C# implementation of the Supabase client + MIT + supabase + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/supabase-csharp.0.16.2/supabase-csharp.nuspec.meta b/Assets/Packages/supabase-csharp.0.16.2/supabase-csharp.nuspec.meta new file mode 100644 index 0000000..8741481 --- /dev/null +++ b/Assets/Packages/supabase-csharp.0.16.2/supabase-csharp.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 24a75fad050d27a47915e751e81056b9 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-storage-csharp.1.4.0.meta b/Assets/Packages/supabase-storage-csharp.1.4.0.meta new file mode 100644 index 0000000..a738a74 --- /dev/null +++ b/Assets/Packages/supabase-storage-csharp.1.4.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 043d620a10a3f08489e31a177e1286d2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-storage-csharp.1.4.0/.signature.p7s b/Assets/Packages/supabase-storage-csharp.1.4.0/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..a4c3e63c5be2874db715ca19a95cdd2f609d64a8 GIT binary patch literal 11513 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 a%G8>TMOQ4UHnr@zSg$RdCmoxp!T$%GK`wd# literal 0 HcmV?d00001 diff --git a/Assets/Packages/supabase-storage-csharp.1.4.0/README.md b/Assets/Packages/supabase-storage-csharp.1.4.0/README.md new file mode 100644 index 0000000..920663e --- /dev/null +++ b/Assets/Packages/supabase-storage-csharp.1.4.0/README.md @@ -0,0 +1,66 @@ +

    + +

    +

    + + + + +

    + +Integrate your [Supabase](https://supabase.io) projects with C#. + +**NOTICE, As of v1.1.0** +**API Change [Breaking/Minor] Library no longer uses `WebClient` and instead leverages `HttpClient`. Progress events on `Upload` and `Download` are now handled with `EventHandler` instead of `WebClient` EventHandlers.** + +## Examples (using supabase-csharp) + +```c# +public async void Main() +{ + // Make sure you set these (or similar) + var url = Environment.GetEnvironmentVariable("SUPABASE_URL"); + var key = Environment.GetEnvironmentVariable("SUPABASE_KEY"); + + await Supabase.Client.InitializeAsync(url, key); + + // The Supabase Instance can be accessed at any time using: + // Supabase.Client.Instance {.Realtime|.Auth|etc.} + // For ease of readability we'll use this: + var instance = Supabase.Client.Instance; + + // Interact with Supabase Storage + var storage = Supabase.Client.Instance.Storage + await storage.CreateBucket("testing") + + var bucket = storage.From("testing"); + + var basePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase).Replace("file:", ""); + var imagePath = Path.Combine(basePath, "Assets", "supabase-csharp.png"); + + await bucket.Upload(imagePath, "supabase-csharp.png"); + + // If bucket is public, get url + bucket.GetPublicUrl("supabase-csharp.png"); + + // If bucket is private, generate url + await bucket.CreateSignedUrl("supabase-csharp.png", 3600)); + + // Download it! + await bucket.Download("supabase-csharp.png", Path.Combine(basePath, "testing-download.png")); +} +``` + +## Package made possible through the efforts of: + +Join the ranks! See a problem? Help fix it! + + + + + +Made with [contrib.rocks](https://contrib.rocks/preview?repo=supabase-community%storage-csharp). + +## Contributing + +We are more than happy to have contributions! Please submit a PR. diff --git a/Assets/Packages/supabase-storage-csharp.1.4.0/README.md.meta b/Assets/Packages/supabase-storage-csharp.1.4.0/README.md.meta new file mode 100644 index 0000000..09f5819 --- /dev/null +++ b/Assets/Packages/supabase-storage-csharp.1.4.0/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ca7ad55e868b1a64b8baee6887f53614 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-storage-csharp.1.4.0/icon.png b/Assets/Packages/supabase-storage-csharp.1.4.0/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eb1468e4cc6f2fe2ce24c6740389535073ab60e9 GIT binary patch literal 5771 zcmcgw8=G9fh7f$a_I)?lI}(t>6KVgniXk@r9mVGq*e(DSvnLDBqWvw z>3zBP{U7d!XXeYynRA}!ocYb1L_HlfGGZoTEG#TC4RvLMhk5uvAi{YVIi;n(V`0%5 zXecWf1sCiWdZb$p1P)E?bC~*ENY!$v_$DAX97onJe@>e`a+ z)csdy`|*8GTJC9ctBj2Qw$4PM+;)NNc7U$$>DG9kNWE$~1gipKXZJ+M_J0iC3doy% zjz*CwVNDh9YV%@qEWT+rJs~?g#e-x{Dn=Foy2|}<{|gvi(x^g7yG(lmRGnT ze_APG$$DR}p$-eukVNE;%lREQ)jNl>gBARAu>Su3mZ9`V1aiIyN83VeMzg5=z9O-- z+6jTWF9E!Wl1(bW3iDZkKk|s(GCHAFHYtI*p$lt1kVm$GrrT%@mT-@lHP`(hQX|0 zClU=iOT+!2m8A8}z7}I#4;Oj9LD^hZ98kVUrq8=${T^~yjiEwkf_?4U0Z-@(x$CCF zBvQkViD^C=<45B3oa4INNUNLKyIO_ZJe&Lq&jtNuu%lJE^04TX3@f53~1A&!1gv)~q+4T9=hSs5m6m9U?`-i~sCj%SFq=cuM3GR~b86pEF(Axw`{>!b<04 z+L$2fIaHyx-WA@wjC(iV7Q(hwQkdm-AYfPDhbi&J19y%hYX z4S5|1uvuT|{45P`qj=XhDc93H51#Y>ExvAwA6QJo4z< z+JyD+;%Hrlw;innAT*)@5DVETXiR%2!FbH7f zPr9icnRVEYK4TZ|t0c4Gy;e<_rFGpyg0SD;s!4syb~@pyL%Kq*2J1_|-Gn&i6+Ghq z^~O6}Vq;vogNhD0OfQ6%a(Kaf^kgTK$BxWXD(v@e^Ym`A;tE(4(9vOrn3hNhUuzPV z`2A-ilI4V>4jC7?$^3Ei4Mc52!AwQ}{(7$A09+=R^z_()A(6pG~*Z^8+Zi5)o*GAuupd?Im|CstT6r?yqepTC#sW6u+^ zr^5B4aAP|sZ(P|YD6St%j@hN~SPF&9;>JEb>9v$WE1)9esdC~ZHUldQg!>YkQ_>ob zkkEyQoO+{!h)n5#oeNKj!`6pK{Ut;M(z|zc#X2#9a6if6FIzR0yuG16x4DuXGw?LF zF)xDN`8b06(s5@~?iv4TXv7kaVg#8)iOVU}!J!RAtnwjwoN+Prm+My$9XN8Ma;Ekcr6Pno?4(6;fgvC%)*@t6%s+|G-!PRI*4%OZOmG(che%S(#YJr2V7N#N; z<0O73lfu0fXIRohIio`7Dsap69F>W|1g6-LuH$%5qWZ}wb%^>C?i2#oJU-#*b>wkG*rYQqM*8xRfyak^HGT&JD9f&DDOt36kjEfOl5i2;n9pI52z3uIoeU= zH%O#9uPs~N;H8tZQFuIg_MBm|ok)jsY&#Rr>=J3aT|vrtMXm+k$6|7aO>ofaC<~BE{mN3yXljg; zjj+ZHR3c>JT4P$;;^Sht24py8sPrfYP>W2DPVv)`>=aoJER3?HR1Slsf9bX z`yZ@H3ewl4WBGM#-6|qnKPBbIjo6I;BnVeFljf5*Fq8%n8vHi&SK?PHNkZ9H?DX@h zxrY!H_RZU85|wi*vj86*xi#x9*S=uW_-%kV?XcIKAI$&ts&AXXslt`Tp+YGznwYc$ zFHsMz`hszB4nJiKd%W603Qs(`;kS?mS@EKxNwIYmt7a*%Fs>0VHS%g?itjs|-dst9 zi)5VCm{xFtk=4}povXT}ZZSoH<@R7-&3$#&PBd5aCKlx^UdEhg{>xu?NtSMgrjnP( zYv-}A6MH)e+N8UsU+(5!P5+s|0I;#VA zl9vf3*h8)KJa6AaFJbT;0JncNRjb*+iR~5heA0m>{ytuLVT5Aqh?)NL>e&xEj!YUx z@?ElJ)=16FYC@+CXpESqIJq7HIq4%Re`AQG%z0rvb(hKamjVK`qd(i};%}(K2Hq*T zSWA1rRF$x?#2MMFT%YKuBDpqk5V?{f${NMak7*Lx#x~r`!QR!Of49Q+nv)NNQdRtr zOxI&qkjl+)Ir8-zB-r|hk%YCROysLTo|ht(Ie!;-Oj_>~IG4TzQxIWbkO}7tWWFzh zDuE`Gzrs!k^=hQ;W)5N27o$gyYR%XzF^T@BqYIk^g=-*6+T8|vjJ2K9MynLb56WNf z)D3FQ!(8#SU9006ctUl`p`7VJEjN#Yp2}_Zh5TWaDG;bGs@^4e1(dW4P-s@rW%v}N zCthAih;0Bd9NL+grTj^g$IKN4aOP%oJJ5O`A^KOw0FUWZ>kR_(@x}6S!k)*pHm7fZ z!kJY%8qm`kr8@cel21OFlx)u)f6^p8#hFW*QN%%L$57-C0cg z8ZBRI&fI&|b3LO-Ob=!>HDh7+%n^)-mo!nCijU~`YVlO@}-|rGj3F; z+S0nV0b%IMcJkYixyCmyqLzQ9LevhRgLf)Y;6#SZP$ijcXbM4j93$&s|J@71={s-=DAu^xBGdYy6{asnN;JdH zI8`i7nIwKN=@nr+Uo<|$L$S?(I83CRvDRblO={aUJpBU=^cH<#>a9S9tYOVNr8A)l z=Gf-da>`>wrDoEcybb3O=U%PG1%1l9$e6i!O8>4k4}P49wW8^DoBwZ~C-d*;P>)QC zckPXqi#Mt`!r2rx1PS8JSXj2&4Db#`ai)%a8eXbJ;JE8wZTK8Qr*q0jh$*+A=X7$U z=&st5HaYgOhguLMXN;tSt8Tr7GA({2Q&~HyOxqOY>OnXiHf4>6m8S}vnvVbb$mP#m z2I0kz``;Lg+qN`#Y;5c0M$cvrwflmPvbb1T)>FS2Hnp%EH_>R5U{~+xmLD+Z6|iI) z>2g^%);F_jah!`BfX+%AiD>h-t-%h$J>uko&`<-romd?Aq@o3cmXN^N*CRw8g@9JP zpM&xP5p|UAqXgg`b~3Q!SiY4f-oBe>V~}{}sD(*Un8WT5welP|raTo}$$T!NM@oUU zPswmDQBt;>-QX+%&%Z`}nVsonToppm#iaK9xc9DjssH7?w;WyK<8Lm9i;#$U2PqxM z@UZhGlrc+ABi~(JVNfzbGbPreC6U;TW4Pw&v(1-xtA?*3JuNqI&`KmrW<$$Z_+e$r zl}|LQOFbUK`<=Y072dd9{XNSaufaCMJpmV8JDNi(h4L^yFG~b7EbM$3QgeQI#+rp> zE1xyx*@m{zm+vpNC}el0J_{RRF%V*TfAS9ld@2L<;6~!pyIXL*v6ay?z;Jl<2Jn2q z@JQ98TD@A$aP!~k1J_4tspIcY2pcm8hG`|dR|@7ll6wp$a);nL%SJ5B-wx~t@hY_Z z?F=jWV43kS#j_0Dod8!lVx~~43>%tGW}NzNrRYl9^o_4$r@ZLvw0U|k;r(sc?42Q> zO=Vg7RwseCUC8nGh-BRZ540O1TgL<&o^&S>NqQSWP9eDMGO%L;kJ}ng^DFla&l2<0 z{4&~E@Y%`5*%+Sa_0}A~DSbu!$X+f0+S#qcPuzvCG4gYn(Dj*BF6(!2mfg8uZgqVw z6l#CWBiwoqX-j=ZLnnWl`QAj2e8Byw%?`1Rk?p&xe~nX0oE<_$%+o2;3tT1xOkDL# zpP|P?!ar`ev+AKSf(Qs~6VE{mSOz7?3$vw|)P`p^GZ6gvOX4*$6Z0yTyncSfBa0f^ zD|S<;E>QQBi+kAh*tpS||8KX)NM0T~yrpWM#<_$xt|TPd)t*7W_#?~x-p!W>n=1!0 zv9MO>@FyA|Rzg*PCT-B);{HF8O$8SToDI85QE{&(%S4-?1|#30;U7AoqTN~)F<%;j zbO{StDyyrvUfO5B#PaV4W2JA=v;NE)hFEHn+lDR;q8Gc0&BJd8%2!W5A?ZBE)!%f+ zn`8{^%VR0ad~Yyv{j4Ysi&>*`A#F$Dm?vF$3*7I+bD?*>?uQUrfjS0dz}PU(``Umv zXNUE>_wrKGXwjHdp)%%C^~_non9i?Gt{ZF_*n{7W*{olIneD*ZmbwbL7C*}kYi>z} zeMY7%Y;Rwu+pU`~UyMy(n)x27_e3p#XTTXI#bKW#;f{=T4RxsWYL;Be;F4^=-Je}G zH-O61$W?5Cx?o#F5uGo2v!C}d=^wI6UH1|Ta81Vz$L@}HU~16ZeG5;r{}McND~r?I zG4T0Co1v*)*N%9-;s;~ZnOQb@v(T;C+%C4)n8AX+ow!zqazXejdFXLsM?NkCwWv|szoiq~W^cYTMow_N;1`wefB`?YF znnpUB{+;JSL&TRK9{o6khra3JXR3yeO;)3OyyDQI*f4X+ig0JI_2CUc8NcppgMK=G z0BE&=ndUDI%78pmp13cMN0o;d`rX~@hz${>DRJtx5%j2)pVH!+CkjOOGLzndmI|^?Y9+qs5*7EJ!<;Mv)kKL7sCh_!8kz^ zQpfSKwT$a~ED_>ZCQzW0NSNEOLgUF)$&SnthizqJqdf{0m>lHGd!O>V!AT?dNW^X@A$ zDQ4BZvW!WVon$PG7S~g=ds;chnx35ntZxkM zt6GjNwFuv!KmCW+*e?7W|FGg^jyYIbOa=M6g-86Ee*HYNknGYNP|3Uw zM7$a#7R8^kyr-}|cm-Qxj=OJ`waM)aRI7OS!AW_3S_huzgkYzW;t1}eit>OoS>?{W z3UhnYt4qc*@4uOTuOuSj2XvwV=ri~VlX%i@B6ikf36^zr-@wJ`hD+H^Iktlfh!M1t?Ev`mEb-D?r1OI0HQUYLzDIS5|J%F1i> zLzVy$lT>9%F;PB_m#nppHAG;%Q#x=~`@ZMln?mFRPuWZAxwOn8;5SD4J=~`oGidUM z0tG>SpV`_C$eTdQ+*tFZS0~MS5vc{3`-2g~+@DW=@;y}eUs?TbkETtAC~*sXsIAjK ze*e{p5z}8F0up|Lrh}I%g;*zEJn9CgDL-d%#irXK*&qLtjSsOFsqsskF?0LCmjJ^s zc(ujrE&KnMOlcv+iN?p(P-betx=12o=xghIbC*NgL%}>rf9eKOO?etaH2By|5_%{G zFK!Daxnb!?CPlq6Q(F?$q%vOv4C!56-FIM?3NM1E|D*0sh-z!xGs}$nWsg7pV(pNH zsQ+9!w7A~x9N>))lbLnhz>&?}v-Y46HSiALY2d>-RXxuS1dUK;Zc2IgOeR`Ceq99z zt}5r1jS)OVJdD_#YM>A3(~(xh4H4WAf5j&!<1E7sJLDgGI%~s9hYPXdN%=srd-E+u z#AAo&#<}+Zz%oU_a4=!aw!Y~X*6wRvnTEDXly X;OLIKfIj`9$&96;qNCiPXdC^1ZeRCi literal 0 HcmV?d00001 diff --git a/Assets/Packages/supabase-storage-csharp.1.4.0/icon.png.meta b/Assets/Packages/supabase-storage-csharp.1.4.0/icon.png.meta new file mode 100644 index 0000000..89f7c63 --- /dev/null +++ b/Assets/Packages/supabase-storage-csharp.1.4.0/icon.png.meta @@ -0,0 +1,156 @@ +fileFormatVersion: 2 +guid: b5e8349400f504a439006b2fac034312 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 2 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: iOS + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 8192 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-storage-csharp.1.4.0/lib.meta b/Assets/Packages/supabase-storage-csharp.1.4.0/lib.meta new file mode 100644 index 0000000..bee4b31 --- /dev/null +++ b/Assets/Packages/supabase-storage-csharp.1.4.0/lib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6bfc7442415360e4d80cdabad42c427a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-storage-csharp.1.4.0/lib/netstandard2.0.meta b/Assets/Packages/supabase-storage-csharp.1.4.0/lib/netstandard2.0.meta new file mode 100644 index 0000000..ef31a8d --- /dev/null +++ b/Assets/Packages/supabase-storage-csharp.1.4.0/lib/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 365395fa39464f14e8da686a17b8eacb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-storage-csharp.1.4.0/lib/netstandard2.0/Supabase.Storage.dll b/Assets/Packages/supabase-storage-csharp.1.4.0/lib/netstandard2.0/Supabase.Storage.dll new file mode 100644 index 0000000000000000000000000000000000000000..ab44a2342341b7831063a6c999b69b25db595987 GIT binary patch literal 52224 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
    K;&e)sSW^7+j{PsnUY zU~z|8^ZR_3m0KoQf#?*EauvZ(m2G>k;@Fp*VTFQ;2j^nCU+p$;H1Fb~1~;;8=A7vi zH#E4T+h*`PRcJjDB|3UpubKa1-0|9k)HjhRVdKkb5-T z2MfW>k$9G^+tsVzC%xDf+3`Ay^qNf^mY0xOxdB5c6LlZl(&Ev=lvkywJGpF_pB z#Ee-^N+g-$T0m*#a`!zz|7!pTYBslbv91)7yn4&D61CpE2CUqKch?1%`rat@YBw0j z9zLe>u4RyrI3GydrQgfQw^|r508-fUZ4j_`c6|kWgUpmjHaEO|vcL)~X7xzg9NNXk zy-bDJExEn$ur6S}Ei8c3fOENfIMARD@Pi_kKxCNzqTwdIANoBlZ=L2g-{&r1YSCB{ zCUH(l^jvFxY z#Kd^*+~jg&>g@5_RISlCw{J@^QUW$V;K+rVH{DrUV=H{=0tN&d|5tp{R<6hyy8(lG zX3jT`!F(;^tl7dXsnxXduVU)6R13B~)=bhmd?K_Q={@zFy%l$wC+=>8B6zDX>zO?l z&4$KnEYVEF+FP~+-W1Ju4Qp7Rr)g$C-o0UVVZm*7H{M`$y5#hNbi7SIU0?F~Q;gO2ESsHtbaCD# z;x6Ullxk34x#!GcW$}x@{{7<*Z~k-cotN*M`}a4W(y!5nR+?*#vGW&&3LTTR!PtgJ zpB}Amtkll8I=w;l8Ec+>Wh^LwV>xpn6wI+L6I|=uS-1Gq%<+e(Twvk)d|-iUJ~&?c zOXJ=DJo;Yu&C0!>Qa9pQpDbAdQDN*w3AIQIhXKiWTjEC@HtC?~coa{hzP zZ8?K$meW_}@z3&o3b&q5y1x2Obl4d%fBb#ie2i;;HO})-1y2H1;V4eA*}clvxG*I` zsOb5n<*M2?y+8%RFGXa7C2${grSO`-laMCDKK%AaD1A%8+_0AYO|nss4BVS;g7A}+ zwq{5gp?#Qi-3){2BxiAGqhH7+@g<~<;@cdgxG+Y5F@UH9r3u2 z6ud?oLnZ##nb~6b%DE1bW1e3_UlIQ_xkagEFo{LOmvDC{RNsL5W8iYy@zdn18wcVl z#^@Yt)sDAWqqmRpqNFQO7QRbz6FMv4i%8d56P=8muZd`l^9J9h^>>CTr6;1`J}7 z&$xY57oCQr))nC5JikIQwQIXwnWF$FR{7JTGdOhi5Qa%cMJ?Dub{@TD=qt_&ng!G5 z=&vgGHzCfWV=xMVQ?;tN@Y3E*`A^u1PYcj&!j;f(7jiY(sr>j~I_D(iX>>}lEkj-k oOx`odSUqCRpe8yi=%@2Y_IIA!Mgspp@ls{)H2Q7R + + + Supabase.Storage + + + + + The visibility of the bucket. Public buckets don't require an authorization token to download objects, + but still require a valid token for all other operations. By default, buckets are private. + + + + + Specifies the file size limit that this bucket can accept during upload. + + Expects a string value following a format like: '1kb', '50mb', '150kb', etc. + + + + + Specifies the allowed mime types that this bucket can accept during upload. + + Expects a List of values such as: ['image/jpeg', 'image/png', etc] + + + + + The visibility of the bucket. Public buckets don't require an authorization token to download objects, + but still require a valid token for all other operations. By default, buckets are private. + + + + + Specifies the file size limit that this bucket can accept during upload. + + Expects a string value following a format like: '1kb', '50mb', '150kb', etc. + + + + + Specifies the allowed mime types that this bucket can accept during upload. + + Expects a List of values such as: ['image/jpeg', 'image/png', etc] + + + + + Perform a file operation in a bucket + + Bucket Id + + + + + Options that can be passed into the Storage Client + + + + + The timespan to wait before an HTTP Upload Timesout + See: https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpclient.timeout?view=net-7.0 + + + + + The timespan to wait before an HTTP Upload Timesout + See: https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpclient.timeout?view=net-7.0 + + + + + The timespan to wait before an HTTP Client request times out. + See: https://learn.microsoft.com/en-us/dotnet/api/system.net.http.httpclient.timeout?view=net-7.0 + + + + + Adapted from: https://gist.github.com/dalexsoto/9fd3c5bdbe9f61a717d47c5843384d11 + + + + + Transforms options into a NameValueCollecto to be used with a + + + + + + + Flag representing if this object is a folder, all properties will be null but the name + + + + + Initializes HttpClients with their appropriate timeouts. Called at the initialization of StorageBucketApi. + + + + + + Helper to make a request using the defined parameters to an API Endpoint and coerce into a model. + + + + + + + + + + + Helper to make a request using the defined parameters to an API Endpoint. + + + + + + + + + + + Number of files to be returned + + + + + Starting position of query + + + + + The search string to filter files by + + + + + Column to sort by. Can be any colum inside of a + + + + + Function that can be set to return dynamic headers. + + Headers specified in the constructor will ALWAYS take precendece over headers returned by this function. + + + + + Retrieves the details of all Storage buckets within an existing product. + + + + + + Retrieves the details of an existing Storage bucket. + + + + + + + Creates a new Storage bucket + + + + Bucket Id + + + + Updates a Storage bucket + + + + + + + + Removes all objects inside a single bucket. + + + + + + + Deletes an existing bucket. A bucket can't be deleted with existing objects inside it. + You must first + + + + + + + A simple convenience function to get the URL for an asset in a public bucket.If you do not want to use this function, you can construct the public URL by concatenating the bucket URL with the path to the asset. + This function does not verify if the bucket is public. If a public URL is created for a bucket which is not public, you will not be able to download the asset. + + + + + + + + Create signed url to download file without requiring permissions. This URL can be valid for a set number of seconds. + + The file path to be downloaded, including the current file name. For example `folder/image.png`. + The number of seconds until the signed URL expires. For example, `60` for a URL which is valid for one minute. + + + + + + Create signed URLs to download files without requiring permissions. These URLs can be valid for a set number of seconds. + + paths The file paths to be downloaded, including the current file names. For example [`folder/image.png`, 'folder2/image2.png']. + The number of seconds until the signed URLs expire. For example, `60` for URLs which are valid for one minute. + + + + + Lists all the files within a bucket. + + + + + + + + Uploads a file to an existing bucket. + + File Source Path + The relative file path. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload. + + + + + + + + Uploads a byte array to an existing bucket. + + + The relative file path. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload. + + + + + + + + Uploads a file to using a pre-generated Signed Upload Url + + File Source Path + + + + + + + + + Uploads a byte array using a pre-generated Signed Upload Url + + + + + + + + + + + Replaces an existing file at the specified path with a new one. + + File source path. + The relative file path. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload. + HTTP headers. + + + + + + Replaces an existing file at the specified path with a new one. + + + The relative file path. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload. + HTTP headers. + + + + + + Moves an existing file, optionally renaming it at the same time. + + The original file path, including the current file name. For example `folder/image.png`. + The new file path, including the new file name. For example `folder/image-copy.png`. + + + + + Downloads a file from a private bucket. For public buckets, use + + + + + + + + + + Downloads a file from a private bucket. For public buckets, use + + + + + + + + + Downloads a byte array from a private bucket to be used programmatically. For public buckets + + + + + + + + + Downloads a byte array from a private bucket to be used programmatically. For public buckets + + + + + + + + Downloads a public file to the filesystem. This method DOES NOT VERIFY that the file is actually public. + + + + + + + + + + Downloads a byte array from a private bucket to be used programmatically. This method DOES NOT VERIFY that the file is actually public. + + + + + + + + + Deletes file within the same bucket + + A path to delete, for example `folder/image.png`. + + + + + Deletes files within the same bucket + + An array of files to be deletes, including the path and file name. For example [`folder/image.png`]. + + + + + Creates an upload signed URL. Use it to upload a file straight to the bucket without credentials + + The file path, including the current file name. For example `folder/image.png`. + + + + + The resize mode can be cover, contain or fill. Defaults to cover. + - Cover resizes the image to maintain it's aspect ratio while filling the entire width and height. + - Contain resizes the image to maintain it's aspect ratio while fitting the entire image within the width and height. + - Fill resizes the image to fill the entire width and height.If the object's aspect ratio does not match the width and height, the image will be stretched to fit. + + + + + The width of the image in pixels. + + + + + The height of the image in pixels. + + + + + The resize mode can be cover, contain or fill. Defaults to cover. + - Cover resizes the image to maintain it's aspect ratio while filling the entire width and height. + - Contain resizes the image to maintain it's aspect ratio while fitting the entire image within the width and height. + - Fill resizes the image to fill the entire width and height.If the object's aspect ratio does not match the width and height, the image will be stretched to fit. + + + + + Set the quality of the returned image, this is percentage based, default 80 + + + + + Specify the format of the image requested. + + When using 'origin' we force the format to be the same as the original image, + bypassing automatic browser optimisation such as webp conversion + + + + + Represents a Generated Upload Signed Url - can be used to upload a file without needing a logged in token or user. + + + + + The Full Signed Url + + + + + The generated token + + + + + The Key that can be uploaded to (the supabase filename) + + + + diff --git a/Assets/Packages/supabase-storage-csharp.1.4.0/lib/netstandard2.0/Supabase.Storage.xml.meta b/Assets/Packages/supabase-storage-csharp.1.4.0/lib/netstandard2.0/Supabase.Storage.xml.meta new file mode 100644 index 0000000..00de025 --- /dev/null +++ b/Assets/Packages/supabase-storage-csharp.1.4.0/lib/netstandard2.0/Supabase.Storage.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ea8d6898a830cd94b85eeb7cd4d19fba +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/supabase-storage-csharp.1.4.0/supabase-storage-csharp.nuspec b/Assets/Packages/supabase-storage-csharp.1.4.0/supabase-storage-csharp.nuspec new file mode 100644 index 0000000..1a37a30 --- /dev/null +++ b/Assets/Packages/supabase-storage-csharp.1.4.0/supabase-storage-csharp.nuspec @@ -0,0 +1,27 @@ + + + + supabase-storage-csharp + 1.4.0 + Supabase Storage + Joseph Schultz <joseph@acupofjose.com> + Joseph Schultz <joseph@acupofjose.com> + false + MIT + https://licenses.nuget.org/MIT + icon.png + https://github.com/supabase-community/storage-csharp + https://avatars.githubusercontent.com/u/54469796?s=200&v=4 + A C# implementation of the Supabase Storage client + MIT + supabase, storage + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Packages/supabase-storage-csharp.1.4.0/supabase-storage-csharp.nuspec.meta b/Assets/Packages/supabase-storage-csharp.1.4.0/supabase-storage-csharp.nuspec.meta new file mode 100644 index 0000000..9608038 --- /dev/null +++ b/Assets/Packages/supabase-storage-csharp.1.4.0/supabase-storage-csharp.nuspec.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 90454452085b91a4b82304a8c3db2081 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta new file mode 100644 index 0000000..1c18a5b --- /dev/null +++ b/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8bd6de07f6f01ff46a52c1f8f8ef4e3f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Supabase.meta b/Assets/Scripts/Supabase.meta new file mode 100644 index 0000000..ae81316 --- /dev/null +++ b/Assets/Scripts/Supabase.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4ec6cf588d0be2048a5132e8d5447680 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Supabase/SupabaseEmailAuth.cs b/Assets/Scripts/Supabase/SupabaseEmailAuth.cs new file mode 100644 index 0000000..3044b9f --- /dev/null +++ b/Assets/Scripts/Supabase/SupabaseEmailAuth.cs @@ -0,0 +1,63 @@ +using UnityEngine; +using Supabase; +using System.Threading.Tasks; + +public class SupabaseEmailAuth : MonoBehaviour +{ + [SerializeField] private string supabaseUrl = "https://uhmzqrqjsaqfbnvvimgy.supabase.co"; + [SerializeField] private string supabaseAnonKey = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InVobXpxcnFqc2FxZmJudnZpbWd5Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTk5MTI1MjMsImV4cCI6MjA3NTQ4ODUyM30.VTX0zza05zNKg6M-1F3ACYxEM53dgf-dRtZOxb3uliY"; + + private Client client; + + private async void Start() + { + var options = new SupabaseOptions + { + AutoRefreshToken = true, + AutoConnectRealtime = false + }; + + client = new Client(supabaseUrl, supabaseAnonKey, options); + await client.InitializeAsync(); + Debug.Log("Supabase initialized"); + } + + public async Task SignUp(string email, string password) + { + try + { + var session = await client.Auth.SignUp(email, password); + Debug.Log("Signup success: " + session?.User?.Email); + } + catch (System.Exception e) + { + Debug.LogError("Signup failed: " + e.Message); + } + } + + public async Task SignIn(string email, string password) + { + try + { + var session = await client.Auth.SignIn(email, password); + Debug.Log("Signin success: " + session?.User?.Email); + } + catch (System.Exception e) + { + Debug.LogError("Signin failed: " + e.Message); + } + } + + public async Task SignOut() + { + try + { + await client.Auth.SignOut(); + Debug.Log("Signed out successfully."); + } + catch (System.Exception e) + { + Debug.LogError("Signout failed: " + e.Message); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Supabase/SupabaseEmailAuth.cs.meta b/Assets/Scripts/Supabase/SupabaseEmailAuth.cs.meta new file mode 100644 index 0000000..d80b4d4 --- /dev/null +++ b/Assets/Scripts/Supabase/SupabaseEmailAuth.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: eea91a1c8add637419653588fb562c28 \ No newline at end of file diff --git a/Assets/Scripts/Supabase/SupabaseEmailUI.cs b/Assets/Scripts/Supabase/SupabaseEmailUI.cs new file mode 100644 index 0000000..a6a8590 --- /dev/null +++ b/Assets/Scripts/Supabase/SupabaseEmailUI.cs @@ -0,0 +1,49 @@ +using System; +using TMPro; +using UnityEngine; +using UnityEngine.Serialization; +using UnityEngine.UI; + +namespace TPSBR +{ + public class SupabaseEmailUI : MonoBehaviour + { + [SerializeField] private SupabaseEmailAuth auth; + [SerializeField] private Button loginButton; + [SerializeField] private Button logouttButton; + [SerializeField] private Button signUpButton; + [SerializeField] private TMP_InputField emailInputField; + [SerializeField] private TMP_InputField passwordInputField; + + + private void OnEnable() + { + loginButton.onClick.AddListener(OnLoginPressed); + signUpButton.onClick.AddListener(OnSignupPressed); + logouttButton.onClick.AddListener(OnLogoutPressed); + } + + private void OnDisable() + { + loginButton.onClick.RemoveListener(OnLoginPressed); + signUpButton.onClick.RemoveListener(OnSignupPressed); + logouttButton.onClick.RemoveListener(OnLogoutPressed); + } + + private async void OnLoginPressed() + { + await auth.SignIn(emailInputField.text.Trim(), passwordInputField.text.Trim()); + } + + private async void OnSignupPressed() + { + await auth.SignUp(emailInputField.text.Trim(), passwordInputField.text.Trim()); + } + + private async void OnLogoutPressed() + { + await auth.SignOut(); + } + + } +} diff --git a/Assets/Scripts/Supabase/SupabaseEmailUI.cs.meta b/Assets/Scripts/Supabase/SupabaseEmailUI.cs.meta new file mode 100644 index 0000000..d640d7b --- /dev/null +++ b/Assets/Scripts/Supabase/SupabaseEmailUI.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 58b631e3f6f74914b917b69a2e49e8b6 \ No newline at end of file diff --git a/Assets/Scripts/SupabaseTest.cs b/Assets/Scripts/SupabaseTest.cs new file mode 100644 index 0000000..01ff324 --- /dev/null +++ b/Assets/Scripts/SupabaseTest.cs @@ -0,0 +1,12 @@ +using Supabase; +using UnityEngine; + +public class SupabaseTest : MonoBehaviour +{ + async void Start() + { + var client = new Client("https://uhmzqrqjsaqfbnvvimgy.supabase.co", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InVobXpxcnFqc2FxZmJudnZpbWd5Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTk5MTI1MjMsImV4cCI6MjA3NTQ4ODUyM30.VTX0zza05zNKg6M-1F3ACYxEM53dgf-dRtZOxb3uliY"); + await client.InitializeAsync(); + Debug.Log("Supabase initialized successfully"); + } +} diff --git a/Assets/Scripts/SupabaseTest.cs.meta b/Assets/Scripts/SupabaseTest.cs.meta new file mode 100644 index 0000000..1c46c20 --- /dev/null +++ b/Assets/Scripts/SupabaseTest.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 76e1283fd5ab17b47a20df32bcd493f5 \ No newline at end of file diff --git a/Assets/TPSBR/Scenes/Menu.unity b/Assets/TPSBR/Scenes/Menu.unity index 4a745fb..f607828 100644 --- a/Assets/TPSBR/Scenes/Menu.unity +++ b/Assets/TPSBR/Scenes/Menu.unity @@ -285,6 +285,10 @@ PrefabInstance: propertyPath: m_Name value: UIChangeNicknameView objectReference: {fileID: 0} + - target: {fileID: 1369129644662472201, guid: 2c0ca0a02e6fdb04a8bc2f1c5092b99c, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 5841626621723555738, guid: 2c0ca0a02e6fdb04a8bc2f1c5092b99c, type: 3} propertyPath: m_Pivot.x value: 0.5 @@ -553,6 +557,10 @@ PrefabInstance: propertyPath: m_Name value: UIJokeDialogView objectReference: {fileID: 0} + - target: {fileID: 1284939984300546277, guid: 12e456a6d7ebf004fbc4e5903eeb58b6, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 6036097034215362934, guid: 12e456a6d7ebf004fbc4e5903eeb58b6, type: 3} propertyPath: m_Pivot.x value: 0.5 @@ -980,6 +988,10 @@ PrefabInstance: propertyPath: m_Name value: UIErrorDialogView objectReference: {fileID: 0} + - target: {fileID: 1284939984300546277, guid: 40ea139f28718e542ab224646fec6a85, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 6036097034215362934, guid: 40ea139f28718e542ab224646fec6a85, type: 3} propertyPath: m_Pivot.x value: 0.5 @@ -1236,6 +1248,71 @@ Transform: m_Children: [] m_Father: {fileID: 1067208740} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &570475794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 570475796} + - component: {fileID: 570475797} + - component: {fileID: 570475798} + m_Layer: 0 + m_Name: SupabaseManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &570475796 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570475794} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -37.86804, y: 2.687477, z: -256.865} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &570475797 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570475794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eea91a1c8add637419653588fb562c28, type: 3} + m_Name: + m_EditorClassIdentifier: + supabaseUrl: https://uhmzqrqjsaqfbnvvimgy.supabase.co + supabaseAnonKey: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InVobXpxcnFqc2FxZmJudnZpbWd5Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTk5MTI1MjMsImV4cCI6MjA3NTQ4ODUyM30.VTX0zza05zNKg6M-1F3ACYxEM53dgf-dRtZOxb3uliY +--- !u!114 &570475798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570475794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 58b631e3f6f74914b917b69a2e49e8b6, type: 3} + m_Name: + m_EditorClassIdentifier: + auth: {fileID: 570475797} + loginButton: {fileID: 1256375853519187276} + logouttButton: {fileID: 1256375853519187275} + signUpButton: {fileID: 1256375853519187274} + emailInputField: {fileID: 1256375853519187273} + passwordInputField: {fileID: 1256375853519187272} --- !u!1 &591960080 GameObject: m_ObjectHideFlags: 0 @@ -1380,6 +1457,10 @@ PrefabInstance: propertyPath: m_Name value: UIInfoDialogView objectReference: {fileID: 0} + - target: {fileID: 1284939984300546277, guid: 5923c4e8b11e14a449c41690690e437c, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 6036097034215362934, guid: 5923c4e8b11e14a449c41690690e437c, type: 3} propertyPath: m_Pivot.x value: 0.5 @@ -2045,6 +2126,10 @@ PrefabInstance: propertyPath: m_Name value: UIMatchmakerView objectReference: {fileID: 0} + - target: {fileID: 1284939984300546277, guid: 60b91ccbb557e46e883ae882b1a4ebc7, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 6036097034215362934, guid: 60b91ccbb557e46e883ae882b1a4ebc7, type: 3} propertyPath: m_Pivot.x value: 0.5 @@ -2205,28 +2290,52 @@ PrefabInstance: propertyPath: m_Name value: UICreditsView objectReference: {fileID: 0} + - target: {fileID: 1369129644662472201, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 1408739084836101859, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} propertyPath: m_SizeDelta.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1859104077484665575, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} propertyPath: m_SizeDelta.x + value: 180 + objectReference: {fileID: 0} + - target: {fileID: 1859104077484665575, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 1876317396534806322, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} propertyPath: m_SizeDelta.x + value: 180 + objectReference: {fileID: 0} + - target: {fileID: 1876317396534806322, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 4102037070702041684, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} propertyPath: m_SizeDelta.x + value: 265.32 + objectReference: {fileID: 0} + - target: {fileID: 4102037070702041684, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5080054940529317139, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} propertyPath: m_SizeDelta.x + value: 345.36002 + objectReference: {fileID: 0} + - target: {fileID: 5080054940529317139, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5561277837124067029, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} propertyPath: m_SizeDelta.x + value: 180 + objectReference: {fileID: 0} + - target: {fileID: 5561277837124067029, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5685496260665845181, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} @@ -2319,6 +2428,10 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6800507045408438231, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} propertyPath: m_SizeDelta.x + value: 180 + objectReference: {fileID: 0} + - target: {fileID: 6800507045408438231, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6927601830213567843, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} @@ -2331,6 +2444,10 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 7522959568801864123, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} propertyPath: m_SizeDelta.x + value: 265.32 + objectReference: {fileID: 0} + - target: {fileID: 7522959568801864123, guid: a8e7934c26aeb294ab5ad121c9af5371, type: 3} + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] @@ -3012,7 +3129,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1284939984300546277, guid: 5d71086884e902a4aa3a3e0bf794cc6c, type: 3} propertyPath: m_IsActive - value: 1 + value: 0 objectReference: {fileID: 0} - target: {fileID: 6036097034215362934, guid: 5d71086884e902a4aa3a3e0bf794cc6c, type: 3} propertyPath: m_Pivot.x @@ -4137,6 +4254,14 @@ PrefabInstance: propertyPath: m_SizeDelta.x value: 48.73 objectReference: {fileID: 0} + - target: {fileID: 663030405962255693, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 663030405962255693, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} - target: {fileID: 663030405962255693, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchoredPosition.x value: 178.00002 @@ -4151,14 +4276,18 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 958499181757315036, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 958499181757315036, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 958499181757315036, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_SizeDelta.x + value: -40 + objectReference: {fileID: 0} + - target: {fileID: 958499181757315036, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} + propertyPath: m_LocalPosition.x value: 0 objectReference: {fileID: 0} - target: {fileID: 1428830802691065510, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} @@ -4279,11 +4408,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2936570565478794101, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2936570565478794101, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 4696715504227515256, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchoredPosition.x @@ -4303,32 +4432,44 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5918500112086569362, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5918500112086569362, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5918500112086569362, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_SizeDelta.x - value: 0 + value: 1184 objectReference: {fileID: 0} - target: {fileID: 5918500112086569362, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 5918500112086569362, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5918500112086569362, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 5918500112086569362, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 692 objectReference: {fileID: 0} - target: {fileID: 5918500112086569362, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -56 objectReference: {fileID: 0} - target: {fileID: 6163596800671221918, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_Name value: UIMultiplayerView objectReference: {fileID: 0} + - target: {fileID: 6163596800671221918, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 6399724143119023202, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_LocalPosition.y value: 0 @@ -4343,23 +4484,31 @@ PrefabInstance: objectReference: {fileID: 1074509166} - target: {fileID: 6860366162315277711, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 6860366162315277711, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 6860366162315277711, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_SizeDelta.x + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 6860366162315277711, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6860366162315277711, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6860366162315277711, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 135.63501 objectReference: {fileID: 0} - target: {fileID: 6860366162315277711, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -37 objectReference: {fileID: 0} - target: {fileID: 7806659318112142209, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchorMax.y @@ -4383,27 +4532,35 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8502159167866928192, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_SizeDelta.y - value: 0 + value: 76 objectReference: {fileID: 0} - target: {fileID: 8920393238402934721, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 8920393238402934721, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 8920393238402934721, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_SizeDelta.x + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 8920393238402934721, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8920393238402934721, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 8920393238402934721, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 212.365 objectReference: {fileID: 0} - target: {fileID: 8920393238402934721, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -37 objectReference: {fileID: 0} - target: {fileID: 9033378250479708062, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} propertyPath: m_AnchorMax.y @@ -4438,42 +4595,10 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 943405864} m_Modifications: - - target: {fileID: 1737356216923045047, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} - propertyPath: m_text - value: - objectReference: {fileID: 0} - target: {fileID: 2865125425459040902, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} propertyPath: m_Name value: UIMainMenuView objectReference: {fileID: 0} - - target: {fileID: 4479991217033819706, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4479991217033819706, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4479991217033819706, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} - propertyPath: m_SizeDelta.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4479991217033819706, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4479991217033819706, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6116188896713042412, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} - propertyPath: m_SortingOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6116188896713042412, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} - propertyPath: m_OverrideSorting - value: 1 - objectReference: {fileID: 0} - target: {fileID: 7337340411887819541, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} propertyPath: m_Pivot.x value: 0.5 @@ -4482,10 +4607,6 @@ PrefabInstance: propertyPath: m_Pivot.y value: 0.5 objectReference: {fileID: 0} - - target: {fileID: 7337340411887819541, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - target: {fileID: 7337340411887819541, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} propertyPath: m_AnchorMax.x value: 1 @@ -4563,6 +4684,61 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} +--- !u!114 &1256375853519187272 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 4904165683194720601, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} + m_PrefabInstance: {fileID: 1256375853519187271} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1256375853519187273 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 3846040505610599351, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} + m_PrefabInstance: {fileID: 1256375853519187271} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1256375853519187274 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 604011116508832147, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} + m_PrefabInstance: {fileID: 1256375853519187271} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 66e9a5bb347a2a243abfd71d32139c75, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1256375853519187275 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 780326224757750162, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} + m_PrefabInstance: {fileID: 1256375853519187271} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 66e9a5bb347a2a243abfd71d32139c75, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1256375853519187276 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 221636819284544432, guid: 47a0d2686b74dd74192b3fbcd3d49b02, type: 3} + m_PrefabInstance: {fileID: 1256375853519187271} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 66e9a5bb347a2a243abfd71d32139c75, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!224 &1457340622268884839 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 1700389219385606413, guid: 48e1b3dca8b7c274bb2275ef2334747e, type: 3} @@ -4624,6 +4800,10 @@ PrefabInstance: propertyPath: m_Name value: Menu objectReference: {fileID: 0} + - target: {fileID: 1893971167328665490, guid: 5501285fdd3374d49b20039d2e914d61, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} - target: {fileID: 2786062988665680141, guid: 5501285fdd3374d49b20039d2e914d61, type: 3} propertyPath: _context.UI value: @@ -4673,6 +4853,10 @@ PrefabInstance: propertyPath: m_Name value: UIAgentSelectionView objectReference: {fileID: 0} + - target: {fileID: 31067881709518094, guid: e4f87b79dd379ea4a8ab80e6432514fd, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 4791795149307131037, guid: e4f87b79dd379ea4a8ab80e6432514fd, type: 3} propertyPath: m_Pivot.x value: 0.5 @@ -4759,19 +4943,35 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 6653010138518292761, guid: e4f87b79dd379ea4a8ab80e6432514fd, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 6653010138518292761, guid: e4f87b79dd379ea4a8ab80e6432514fd, type: 3} propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6653010138518292761, guid: e4f87b79dd379ea4a8ab80e6432514fd, type: 3} + propertyPath: m_SizeDelta.x + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 6653010138518292761, guid: e4f87b79dd379ea4a8ab80e6432514fd, type: 3} + propertyPath: m_SizeDelta.y + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 6653010138518292761, guid: e4f87b79dd379ea4a8ab80e6432514fd, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6653010138518292761, guid: e4f87b79dd379ea4a8ab80e6432514fd, type: 3} + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 6653010138518292761, guid: e4f87b79dd379ea4a8ab80e6432514fd, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 50 objectReference: {fileID: 0} - target: {fileID: 6653010138518292761, guid: e4f87b79dd379ea4a8ab80e6432514fd, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -50 objectReference: {fileID: 0} - target: {fileID: 7721442056733802936, guid: e4f87b79dd379ea4a8ab80e6432514fd, type: 3} propertyPath: _camera @@ -4894,29 +5094,41 @@ PrefabInstance: propertyPath: m_Name value: UICreateSessionView objectReference: {fileID: 0} + - target: {fileID: 5421402336083003269, guid: 35efa7bd1b6d4244f94d68385b45c7af, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 7448184080920066025, guid: 35efa7bd1b6d4244f94d68385b45c7af, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 7448184080920066025, guid: 35efa7bd1b6d4244f94d68385b45c7af, type: 3} propertyPath: m_AnchorMin.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 7448184080920066025, guid: 35efa7bd1b6d4244f94d68385b45c7af, type: 3} propertyPath: m_SizeDelta.x - value: 0 + value: 160 objectReference: {fileID: 0} - target: {fileID: 7448184080920066025, guid: 35efa7bd1b6d4244f94d68385b45c7af, type: 3} propertyPath: m_SizeDelta.y + value: 90 + objectReference: {fileID: 0} + - target: {fileID: 7448184080920066025, guid: 35efa7bd1b6d4244f94d68385b45c7af, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7448184080920066025, guid: 35efa7bd1b6d4244f94d68385b45c7af, type: 3} + propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - target: {fileID: 7448184080920066025, guid: 35efa7bd1b6d4244f94d68385b45c7af, type: 3} propertyPath: m_AnchoredPosition.x - value: 0 + value: 80 objectReference: {fileID: 0} - target: {fileID: 7448184080920066025, guid: 35efa7bd1b6d4244f94d68385b45c7af, type: 3} propertyPath: m_AnchoredPosition.y - value: 0 + value: -45 objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] @@ -4948,19 +5160,19 @@ PrefabInstance: m_Modifications: - target: {fileID: 69068429631990799, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 69068429631990799, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 1005433416598113768, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 1005433416598113768, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 1103372255702777191, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_SortingOrder @@ -4972,39 +5184,39 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 2832202013260557321, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 2832202013260557321, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2832202013260557321, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMin.x - value: 0 + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 2913894936550339723, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 2913894936550339723, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2913894936550339723, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMin.x - value: 0 + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 3158337878961404693, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 3158337878961404693, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 3158337878961404693, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMin.x - value: 0 + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 4502929368554311582, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_Pivot.x @@ -5092,56 +5304,60 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4994152380823124505, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 4994152380823124505, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 4994152380823124505, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMin.x - value: 0 + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 5210574755780484094, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 5210574755780484094, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 5210574755780484094, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMin.x - value: 0 + value: 0.5 objectReference: {fileID: 0} - target: {fileID: 6974654692230235002, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 6974654692230235002, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 7164775030032092388, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 7164775030032092388, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 8067301279288515576, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 8067301279288515576, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 8965574188593481229, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} propertyPath: m_Name value: UISettingsView objectReference: {fileID: 0} + - target: {fileID: 8965574188593481229, guid: 740c8cc52e2130140a5bd3397f7fa2eb, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -5164,3 +5380,4 @@ SceneRoots: - {fileID: 771756780} - {fileID: 2057989278} - {fileID: 1084262606} + - {fileID: 570475796} diff --git a/Assets/TPSBR/UI/Prefabs/MenuViews/UIMainMenuView.prefab b/Assets/TPSBR/UI/Prefabs/MenuViews/UIMainMenuView.prefab index b7e9c05..7865b90 100644 --- a/Assets/TPSBR/UI/Prefabs/MenuViews/UIMainMenuView.prefab +++ b/Assets/TPSBR/UI/Prefabs/MenuViews/UIMainMenuView.prefab @@ -1,5 +1,183 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &990872544743681049 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1976874697332960418} + - component: {fileID: 4357313318033467474} + - component: {fileID: 1283566065897607725} + - component: {fileID: 3846040505610599351} + m_Layer: 5 + m_Name: EmailInputField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1976874697332960418 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 990872544743681049} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8469171162369008649} + m_Father: {fileID: 7337340411887819541} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -675.39, y: -391.43155} + m_SizeDelta: {x: 301.22, y: 40.8631} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4357313318033467474 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 990872544743681049} + m_CullTransparentMesh: 1 +--- !u!114 &1283566065897607725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 990872544743681049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3846040505610599351 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 990872544743681049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1283566065897607725} + m_TextViewport: {fileID: 8469171162369008649} + m_TextComponent: {fileID: 3142221611001112380} + m_Placeholder: {fileID: 6309403915228515234} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 0 + m_RegexValue: + m_GlobalPointSize: 14 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_KeepTextSelectionVisible: 0 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + isAlert: 0 + m_InputValidator: {fileID: 0} + m_ShouldActivateOnSelect: 1 --- !u!1 &2865125425459040902 GameObject: m_ObjectHideFlags: 0 @@ -39,6 +217,11 @@ RectTransform: - {fileID: 126165966995649906} - {fileID: 27329871276740869} - {fileID: 2849641508929897108} + - {fileID: 2954926339797276763} + - {fileID: 2361345032328243833} + - {fileID: 2481633700961383032} + - {fileID: 1976874697332960418} + - {fileID: 4082411895311490258} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -72,14 +255,14 @@ Canvas: m_PlaneDistance: 100 m_PixelPerfect: 0 m_ReceivesEvents: 1 - m_OverrideSorting: 0 + m_OverrideSorting: 1 m_OverridePixelPerfect: 0 m_SortingBucketNormalizedSize: 0 m_VertexColorAlwaysGammaSpace: 0 m_AdditionalShaderChannelsFlag: 25 m_UpdateRectTransformForStandalone: 0 m_SortingLayerID: 0 - m_SortingOrder: 0 + m_SortingOrder: 1 m_TargetDisplay: 0 --- !u!114 &616796428536402985 MonoBehaviour: @@ -141,6 +324,215 @@ MonoBehaviour: Behaviour: 1 ResetOnDisable: 1 FadeOutValue: 0 +--- !u!1 &2998297214001198916 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3576577251927847473} + - component: {fileID: 7856712777341670358} + - component: {fileID: 6218953594547879642} + - component: {fileID: 7908194833991402639} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3576577251927847473 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2998297214001198916} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7914667280278408879} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7856712777341670358 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2998297214001198916} + m_CullTransparentMesh: 1 +--- !u!114 &6218953594547879642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2998297214001198916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Enter text... + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 2150773298 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 2 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &7908194833991402639 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2998297214001198916} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &3315944008498340813 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7914667280278408879} + - component: {fileID: 2784511221402739617} + m_Layer: 5 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7914667280278408879 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3315944008498340813} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3576577251927847473} + - {fileID: 8362168555974006413} + m_Father: {fileID: 4082411895311490258} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5000019} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2784511221402739617 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3315944008498340813} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: -8, y: -5, z: -8, w: -5} + m_Softness: {x: 0, y: 0} --- !u!1 &3664740146615396539 GameObject: m_ObjectHideFlags: 0 @@ -206,7 +598,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: MyNameIsSlimShady + m_text: m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: e81757aafc3eb064585afc17aca635cc, type: 2} m_sharedMaterial: {fileID: -5600788857156934271, guid: e81757aafc3eb064585afc17aca635cc, type: 2} @@ -249,15 +641,17 @@ MonoBehaviour: m_lineSpacingMax: 0 m_paragraphSpacing: 0 m_charWidthMaxAdj: 0 - m_enableWordWrapping: 0 + m_TextWrappingMode: 0 m_wordWrappingRatios: 0.4 m_overflowMode: 0 m_linkedTextComponent: {fileID: 0} parentLinkedComponent: {fileID: 0} m_enableKerning: 1 + m_ActiveFontFeatures: 00000000 m_enableExtraPadding: 0 checkPaddingRequired: 0 m_isRichText: 1 + m_EmojiFallbackSupport: 1 m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 @@ -325,6 +719,184 @@ CanvasGroup: m_Interactable: 1 m_BlocksRaycasts: 1 m_IgnoreParentGroups: 0 +--- !u!1 &4148526992087795500 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4082411895311490258} + - component: {fileID: 1394845225946702647} + - component: {fileID: 4939895354834183336} + - component: {fileID: 4904165683194720601} + m_Layer: 5 + m_Name: PasswordInputField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4082411895311490258 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4148526992087795500} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7914667280278408879} + m_Father: {fileID: 7337340411887819541} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -335.39, y: -391.43155} + m_SizeDelta: {x: 301.22, y: 40.8631} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1394845225946702647 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4148526992087795500} + m_CullTransparentMesh: 1 +--- !u!114 &4939895354834183336 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4148526992087795500} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &4904165683194720601 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4148526992087795500} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4939895354834183336} + m_TextViewport: {fileID: 7914667280278408879} + m_TextComponent: {fileID: 8986978529029630399} + m_Placeholder: {fileID: 6218953594547879642} + m_VerticalScrollbar: {fileID: 0} + m_VerticalScrollbarEventHandler: {fileID: 0} + m_LayoutGroup: {fileID: 0} + m_ScrollSensitivity: 1 + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_HideSoftKeyboard: 0 + m_CharacterValidation: 0 + m_RegexValue: + m_GlobalPointSize: 14 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnSelect: + m_PersistentCalls: + m_Calls: [] + m_OnDeselect: + m_PersistentCalls: + m_Calls: [] + m_OnTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnEndTextSelection: + m_PersistentCalls: + m_Calls: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_OnTouchScreenKeyboardStatusChanged: + m_PersistentCalls: + m_Calls: [] + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 + m_RichText: 1 + m_GlobalFontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_OnFocusSelectAll: 1 + m_ResetOnDeActivation: 1 + m_KeepTextSelectionVisible: 0 + m_RestoreOriginalTextOnEscape: 1 + m_isRichTextEditingAllowed: 0 + m_LineLimit: 0 + isAlert: 0 + m_InputValidator: {fileID: 0} + m_ShouldActivateOnSelect: 1 --- !u!1 &4362021053678397647 GameObject: m_ObjectHideFlags: 0 @@ -450,6 +1022,7 @@ MonoBehaviour: _customClickSound: Clips: [] Volume: 1 + PitchShift: 0 MaxPitchChange: 0 Delay: 0 Loop: 0 @@ -591,6 +1164,142 @@ MonoBehaviour: Behaviour: 1 ResetOnDisable: 1 FadeOutValue: 0 +--- !u!1 &5185163584636981001 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2805991749411935467} + - component: {fileID: 8525246472682174456} + - component: {fileID: 3142221611001112380} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2805991749411935467 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5185163584636981001} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8469171162369008649} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8525246472682174456 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5185163584636981001} + m_CullTransparentMesh: 1 +--- !u!114 &3142221611001112380 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5185163584636981001} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\u200B" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 3 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &5876435043092786501 GameObject: m_ObjectHideFlags: 0 @@ -755,6 +1464,7 @@ MonoBehaviour: _customClickSound: Clips: [] Volume: 1 + PitchShift: 0 MaxPitchChange: 0 Delay: 0 Loop: 0 @@ -803,7 +1513,7 @@ MonoBehaviour: m_PixelsPerUnitMultiplier: 1 --- !u!95 &3506333899681960508 Animator: - serializedVersion: 5 + serializedVersion: 7 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -817,11 +1527,64 @@ Animator: m_ApplyRootMotion: 0 m_LinearVelocityBlending: 0 m_StabilizeFeet: 0 + m_AnimatePhysics: 0 m_WarningMessage: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 m_KeepAnimatorStateOnDisable: 1 m_WriteDefaultValuesOnDisable: 0 +--- !u!1 &6938478330842093721 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8469171162369008649} + - component: {fileID: 4751244026264868272} + m_Layer: 5 + m_Name: Text Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8469171162369008649 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6938478330842093721} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5997867779642613877} + - {fileID: 2805991749411935467} + m_Father: {fileID: 1976874697332960418} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5000019} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &4751244026264868272 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6938478330842093721} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: {x: -8, y: -5, z: -8, w: -5} + m_Softness: {x: 0, y: 0} --- !u!1 &7380692384071793567 GameObject: m_ObjectHideFlags: 0 @@ -930,15 +1693,17 @@ MonoBehaviour: m_lineSpacingMax: 0 m_paragraphSpacing: 0 m_charWidthMaxAdj: 0 - m_enableWordWrapping: 0 + m_TextWrappingMode: 0 m_wordWrappingRatios: 0.4 m_overflowMode: 0 m_linkedTextComponent: {fileID: 0} parentLinkedComponent: {fileID: 0} m_enableKerning: 1 + m_ActiveFontFeatures: 00000000 m_enableExtraPadding: 0 checkPaddingRequired: 0 m_isRichText: 1 + m_EmojiFallbackSupport: 1 m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 @@ -956,6 +1721,142 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &8142758724294430718 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8362168555974006413} + - component: {fileID: 5488829719170034760} + - component: {fileID: 8986978529029630399} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8362168555974006413 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8142758724294430718} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7914667280278408879} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5488829719170034760 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8142758724294430718} + m_CullTransparentMesh: 1 +--- !u!114 &8986978529029630399 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8142758724294430718} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\u200B" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 3 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &8796421049228323359 GameObject: m_ObjectHideFlags: 0 @@ -1031,6 +1932,163 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8925567390139728862 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5997867779642613877} + - component: {fileID: 4319011566082198193} + - component: {fileID: 6309403915228515234} + - component: {fileID: 2115838960002010826} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5997867779642613877 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8925567390139728862} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8469171162369008649} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4319011566082198193 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8925567390139728862} + m_CullTransparentMesh: 1 +--- !u!114 &6309403915228515234 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8925567390139728862} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Enter text... + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 2150773298 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 14 + m_fontSizeBase: 14 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 2 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 1 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!114 &2115838960002010826 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8925567390139728862} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!1 &9114632373263427193 GameObject: m_ObjectHideFlags: 0 @@ -1139,15 +2197,17 @@ MonoBehaviour: m_lineSpacingMax: 0 m_paragraphSpacing: 0 m_charWidthMaxAdj: 0 - m_enableWordWrapping: 0 + m_TextWrappingMode: 0 m_wordWrappingRatios: 0.4 m_overflowMode: 0 m_linkedTextComponent: {fileID: 0} parentLinkedComponent: {fileID: 0} m_enableKerning: 1 + m_ActiveFontFeatures: 00000000 m_enableExtraPadding: 0 checkPaddingRequired: 0 m_isRichText: 1 + m_EmojiFallbackSupport: 1 m_parseCtrlCharacters: 1 m_isOrthographic: 1 m_isCullingEnabled: 0 @@ -1615,6 +2675,116 @@ RectTransform: m_CorrespondingSourceObject: {fileID: 4924011049179937564, guid: 1e8c7f724ed16254691f9343637e5b61, type: 3} m_PrefabInstance: {fileID: 3182697813693994311} m_PrefabAsset: {fileID: 0} +--- !u!1001 &3504525430508215508 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 7337340411887819541} + m_Modifications: + - target: {fileID: 563435114384465872, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_text + value: Sign In + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_SizeDelta.x + value: 330 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 124 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchoredPosition.y + value: -185 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7176013002800512216, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_Name + value: SignIn + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} +--- !u!224 &2954926339797276763 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + m_PrefabInstance: {fileID: 3504525430508215508} + m_PrefabAsset: {fileID: 0} --- !u!1001 &3985800350929537825 PrefabInstance: m_ObjectHideFlags: 0 @@ -1728,6 +2898,226 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 66e9a5bb347a2a243abfd71d32139c75, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1001 &4135918943896530678 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 7337340411887819541} + m_Modifications: + - target: {fileID: 563435114384465872, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_text + value: Sign Out + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_SizeDelta.x + value: 330 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 124 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchoredPosition.y + value: -249.8 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7176013002800512216, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_Name + value: SignOut + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} +--- !u!224 &2361345032328243833 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + m_PrefabInstance: {fileID: 4135918943896530678} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &4309973593413711607 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 7337340411887819541} + m_Modifications: + - target: {fileID: 563435114384465872, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_text + value: Sign Up + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_SizeDelta.x + value: 330 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_SizeDelta.y + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchoredPosition.x + value: 124 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_AnchoredPosition.y + value: -317.5 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7176013002800512216, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + propertyPath: m_Name + value: SignUp + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} +--- !u!224 &2481633700961383032 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1846637020345795727, guid: 400600527bfa46241962ec2a3280f4e0, type: 3} + m_PrefabInstance: {fileID: 4309973593413711607} + m_PrefabAsset: {fileID: 0} --- !u!1001 &4479787833656444443 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/packages.config b/Assets/packages.config new file mode 100644 index 0000000..932f84a --- /dev/null +++ b/Assets/packages.config @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/packages.config.meta b/Assets/packages.config.meta new file mode 100644 index 0000000..94796bd --- /dev/null +++ b/Assets/packages.config.meta @@ -0,0 +1,28 @@ +fileFormatVersion: 2 +guid: 92e7ad5529a860049af302998f05eda9 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 3 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/manifest.json b/Packages/manifest.json index c21d8f7..8b441c3 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -1,5 +1,6 @@ { "dependencies": { + "com.github-glitchenzo.nugetforunity": "https://github.com/GlitchEnzo/NuGetForUnity.git?path=src/NuGetForUnity", "com.unity.2d.sprite": "1.0.0", "com.unity.ai.navigation": "2.0.4", "com.unity.burst": "1.8.18", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 200cb43..ce55d17 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -1,5 +1,12 @@ { "dependencies": { + "com.github-glitchenzo.nugetforunity": { + "version": "https://github.com/GlitchEnzo/NuGetForUnity.git?path=src/NuGetForUnity", + "depth": 0, + "source": "git", + "dependencies": {}, + "hash": "a7c6b49a0141a5bff9b1983e38137522ef61977d" + }, "com.unity.2d.sprite": { "version": "1.0.0", "depth": 0,

    + + + + +

    + + + + +

    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 E0My$%LI3~& literal 0 HcmV?d00001 diff --git a/Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0/Supabase.Gotrue.dll.meta b/Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0/Supabase.Gotrue.dll.meta new file mode 100644 index 0000000..7a4850c --- /dev/null +++ b/Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0/Supabase.Gotrue.dll.meta @@ -0,0 +1,29 @@ +fileFormatVersion: 2 +guid: c109aa9d9ba675342bfe52a759c34759 +labels: +- NuGetForUnity +PluginImporter: + externalObjects: {} + serializedVersion: 3 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0/Supabase.Gotrue.xml b/Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0/Supabase.Gotrue.xml new file mode 100644 index 0000000..afc8801 --- /dev/null +++ b/Assets/Packages/gotrue-csharp.4.2.7/lib/netstandard2.0/Supabase.Gotrue.xml @@ -0,0 +1,2378 @@ + + + + Supabase.Gotrue + + + +

    + + + + +