Decompiled source of HowToFishXR v1.0.1

BepInEx/patchers/HowToFishXR/HowToFishVR.Preload.dll

Decompiled 7 hours ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using Microsoft.CodeAnalysis;
using Mono.Cecil;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("HowToFishVR.Preload")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyDescription("HowToFishXR - Preloader (stages OpenXR runtime)")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+e3cc92a1988e2680296bae95a521b7a361bab8be")]
[assembly: AssemblyProduct("HowToFishVR.Preload")]
[assembly: AssemblyTitle("HowToFishVR.Preload")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace HowToFishVR.Preload
{
	public static class Preload
	{
		private const string DATA_DIR = "How to Fish_Data";

		private const string VR_MANIFEST = "{\n  \"name\": \"OpenXR XR Plugin\",\n  \"version\": \"1.14.3\",\n  \"libraryName\": \"UnityOpenXR\",\n  \"displays\": [ { \"id\": \"OpenXR Display\" } ],\n  \"inputs\": [ { \"id\": \"OpenXR Input\" } ]\n}";

		private static readonly ManualLogSource Logger = Logger.CreateLogSource("HowToFishVR.Preload");

		public static IEnumerable<string> TargetDLLs { get; } = new string[0];

		public static void Initialize()
		{
			try
			{
				SetupRuntimeAssets();
			}
			catch (Exception arg)
			{
				Logger.LogError((object)$"Failed to stage VR runtime assets: {arg}");
			}
		}

		private static void SetupRuntimeAssets()
		{
			string path = Path.Combine(Paths.GameRootPath, "How to Fish_Data");
			string text = Path.Combine(Path.Combine(path, "UnitySubsystems"), "UnityOpenXR");
			Directory.CreateDirectory(text);
			File.WriteAllText(Path.Combine(text, "UnitySubsystemsManifest.json"), "{\n  \"name\": \"OpenXR XR Plugin\",\n  \"version\": \"1.14.3\",\n  \"libraryName\": \"UnityOpenXR\",\n  \"displays\": [ { \"id\": \"OpenXR Display\" } ],\n  \"inputs\": [ { \"id\": \"OpenXR Input\" } ]\n}");
			string text2 = Path.Combine(path, "Plugins");
			Directory.CreateDirectory(text2);
			string path2 = FindRuntimeDeps();
			CopyIfNewer(Path.Combine(path2, "UnityOpenXR.dll"), Path.Combine(text2, "UnityOpenXR.dll"));
			CopyIfNewer(Path.Combine(path2, "openxr_loader.dll"), Path.Combine(text2, "openxr_loader.dll"));
		}

		private static string FindRuntimeDeps()
		{
			string text = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "RuntimeDeps");
			if (Directory.Exists(text))
			{
				return text;
			}
			string[] directories = Directory.GetDirectories(Paths.BepInExRootPath, "RuntimeDeps", SearchOption.AllDirectories);
			foreach (string text2 in directories)
			{
				if (File.Exists(Path.Combine(text2, "UnityOpenXR.dll")))
				{
					return text2;
				}
			}
			return text;
		}

		private static void CopyIfNewer(string src, string dst)
		{
			if (!File.Exists(src))
			{
				Logger.LogError((object)("Required VR runtime dependency is missing: " + src));
			}
			else if (!File.Exists(dst) || new FileInfo(dst).Length != new FileInfo(src).Length)
			{
				File.Copy(src, dst, overwrite: true);
			}
		}

		public static void Patch(AssemblyDefinition assembly)
		{
		}
	}
}

BepInEx/plugins/HowToFishXR/HowToFishVR.dll

Decompiled 7 hours ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using FishNet;
using FishNet.Broadcast;
using FishNet.Connection;
using FishNet.Object;
using FishNet.Serializing;
using FishNet.Transporting;
using HarmonyLib;
using HowToFishVR.Body;
using HowToFishVR.Input;
using HowToFishVR.Localization;
using HowToFishVR.Net;
using HowToFishVR.Patches;
using HowToFishVR.UI;
using HowToFishVR.VR;
using Microsoft.CodeAnalysis;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Layouts;
using UnityEngine.InputSystem.Users;
using UnityEngine.InputSystem.Utilities;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using UnityEngine.XR;
using UnityEngine.XR.Interaction.Toolkit.UI;
using UnityEngine.XR.Management;
using UnityEngine.XR.OpenXR;
using UnityEngine.XR.OpenXR.Features;
using UnityEngine.XR.OpenXR.Features.Interactions;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("J_axon")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyDescription("HowToFishXR - full 6DoF VR mod for How to Fish")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+e3cc92a1988e2680296bae95a521b7a361bab8be")]
[assembly: AssemblyProduct("HowToFishVR")]
[assembly: AssemblyTitle("HowToFishVR")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace HowToFishVR
{
	public enum TurnMode
	{
		Snap,
		Smooth
	}
	public enum BodyMode
	{
		FullBodyIK,
		HandsOnly
	}
	public enum ButtonMode
	{
		Hold,
		Toggle
	}
	public enum DeathView
	{
		FirstPerson,
		ThirdPerson
	}
	public static class VRConfig
	{
		public static ConfigEntry<bool> DisableVR;

		public static ConfigEntry<float> WorldScale;

		public static ConfigEntry<bool> RoomscaleMovement;

		public static ConfigEntry<KeyboardShortcut> RecenterKey;

		public static ConfigEntry<KeyboardShortcut> HeightCalibrateKey;

		public static ConfigEntry<float> SavedEyeHeight;

		public static ConfigEntry<float> SavedHeadCalibY;

		public static ConfigEntry<TurnMode> Turning;

		public static ConfigEntry<int> SnapTurnAngle;

		public static ConfigEntry<float> SmoothTurnSpeed;

		public static ConfigEntry<float> TurnDeadzone;

		public static ConfigEntry<float> MovementDeadzone;

		public static ConfigEntry<bool> HeadRelativeMovement;

		public static ConfigEntry<float> BoatSteerSensitivity;

		public static ConfigEntry<ButtonMode> SprintMode;

		public static ConfigEntry<ButtonMode> CrouchMode;

		public static ConfigEntry<bool> HudFollowsHead;

		public static ConfigEntry<float> HudFollowSmoothing;

		public static ConfigEntry<float> HudScale;

		public static ConfigEntry<float> GripThreshold;

		public static ConfigEntry<bool> RealUIBlur;

		public static ConfigEntry<BodyMode> BodyMode;

		public static ConfigEntry<Vector3> BodyOffset;

		public static ConfigEntry<DeathView> DeathView;

		public static ConfigEntry<bool> MultiplayerVRSync;

		public static ConfigEntry<float> VRSyncRate;

		public static void Init(ConfigFile cfg)
		{
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Expected O, but got Unknown
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Expected O, but got Unknown
			//IL_0171: Unknown result type (might be due to invalid IL or missing references)
			//IL_017b: Expected O, but got Unknown
			//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Expected O, but got Unknown
			//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01eb: Expected O, but got Unknown
			//IL_0234: Unknown result type (might be due to invalid IL or missing references)
			//IL_023e: Expected O, but got Unknown
			//IL_02bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c7: Expected O, but got Unknown
			//IL_02f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ff: Expected O, but got Unknown
			//IL_032d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0337: Expected O, but got Unknown
			//IL_038c: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0409: Expected O, but got Unknown
			DisableVR = cfg.Bind<bool>("General", "Disable VR", false, "Start How to Fish in flatscreen mode while keeping the mod installed. Can also be overridden for one launch with the --disable-vr Steam launch option. Restart required.");
			WorldScale = cfg.Bind<float>("General", "World Scale", 1f, new ConfigDescription("Scales your perceived size in the world. 1.0 = default.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2f), Array.Empty<object>()));
			RoomscaleMovement = cfg.Bind<bool>("Calibration", "Roomscale Movement", true, "Allow physically walking/crouching to move the in-game body.");
			RecenterKey = cfg.Bind<KeyboardShortcut>("Calibration", "Recenter", new KeyboardShortcut((KeyCode)283, Array.Empty<KeyCode>()), "Re-center the headset forward direction.");
			HeightCalibrateKey = cfg.Bind<KeyboardShortcut>("Calibration", "Calibrate Height", new KeyboardShortcut((KeyCode)284, Array.Empty<KeyCode>()), "Measure and store your standing height / floor level.");
			SavedEyeHeight = cfg.Bind<float>("Calibration", "Saved Eye Height", 0f, "Your calibrated eye height (m) above the player root, saved by F3 and restored on launch so death/respawn/reloads keep it.");
			SavedHeadCalibY = cfg.Bind<float>("Calibration", "Saved Head Reference Height", 0f, "Your calibrated standing head height (m), saved by F3. Informational; the live head reference is re-captured each launch.");
			Turning = cfg.Bind<TurnMode>("Turning", "Turn Mode", TurnMode.Snap, "Snap = instant rotation; Smooth = continuous rotation.");
			SnapTurnAngle = cfg.Bind<int>("Turning", "Snap Angle", 45, new ConfigDescription("Degrees per snap turn.", (AcceptableValueBase)(object)new AcceptableValueRange<int>(15, 90), Array.Empty<object>()));
			SmoothTurnSpeed = cfg.Bind<float>("Turning", "Smooth Speed", 120f, new ConfigDescription("Degrees per second for smooth turning.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(30f, 360f), Array.Empty<object>()));
			TurnDeadzone = cfg.Bind<float>("Turning", "Turn Deadzone", 0.75f, new ConfigDescription("Thumbstick threshold to trigger a snap turn (MAVR-style: must return below 0.35 to re-arm).", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 0.95f), Array.Empty<object>()));
			MovementDeadzone = cfg.Bind<float>("Locomotion", "Move Deadzone", 0.15f, new ConfigDescription("Thumbstick deadzone for movement.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.05f, 0.5f), Array.Empty<object>()));
			HeadRelativeMovement = cfg.Bind<bool>("Locomotion", "Head Relative Movement", true, "Movement direction follows head gaze (off = follows off-hand controller).");
			BoatSteerSensitivity = cfg.Bind<float>("Locomotion", "Boat Steer Sensitivity", 1f, new ConfigDescription("Multiplier for boat steering from the movement stick.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.3f, 2.5f), Array.Empty<object>()));
			SprintMode = cfg.Bind<ButtonMode>("Locomotion", "Sprint Mode", ButtonMode.Hold, "Left thumbstick click. Hold = sprint while held; Toggle = click to toggle.");
			CrouchMode = cfg.Bind<ButtonMode>("Locomotion", "Crouch Mode", ButtonMode.Toggle, "Right thumbstick click. Toggle = click to toggle (default); Hold = crouch while held.");
			HudFollowsHead = cfg.Bind<bool>("HUD", "HUD Follows Head", true, "HUD rotates with head yaw but stays level (not pitched up/down), floating in front of you.");
			HudFollowSmoothing = cfg.Bind<float>("HUD", "HUD Smoothing", 0.1f, new ConfigDescription("Lower = snappier HUD follow.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.02f, 0.5f), Array.Empty<object>()));
			HudScale = cfg.Bind<float>("HUD", "HUD Scale", 1f, new ConfigDescription("Scale multiplier for the HUD.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.5f, 2f), Array.Empty<object>()));
			GripThreshold = cfg.Bind<float>("Interaction", "Grip Threshold", 0.6f, new ConfigDescription("Grip pull required to grab.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.1f, 0.95f), Array.Empty<object>()));
			RealUIBlur = cfg.Bind<bool>("UI", "Real UI Blur", true, "Keep the game's real frosted-glass pixel-blur on UI panels (the actual UniversalBlurUI effect) instead of a flat dark tint. Turn OFF if panels render black on your headset.");
			BodyMode = cfg.Bind<BodyMode>("Body", "Body Mode", HowToFishVR.BodyMode.FullBodyIK, "FullBodyIK = restored body with VR IK arms that bend naturally. HandsOnly = base game: no body shown, hands only. Snap/smooth turning works in both modes (MAVR-style).");
			BodyOffset = cfg.Bind<Vector3>("Body", "Body Offset", new Vector3(0f, 0f, -0.2f), "x, y, z nudge for the whole body in body space, metres. Positive z is forward. Default sits it 20cm back so you are not inside your own collar.");
			DeathView = cfg.Bind<DeathView>("Death", "Death View", HowToFishVR.DeathView.FirstPerson, "FirstPerson = camera stays on the ragdoll's head (free head-look, head model hidden). ThirdPerson = the game's default third-person orbit around your body, head-tracked for VR.");
			MultiplayerVRSync = cfg.Bind<bool>("Multiplayer", "VR Pose Sync", true, "VR players broadcast their full-body poses (head, arms, hands, feet, body yaw) and every modded client — VR or flatscreen — applies them to remote players, so everyone sees VR players exactly as they see themselves (one-hand/two-hand grips included). Head look already syncs via the base game. Flatscreen modded players receive the same syncing as VR players; vanilla hosts are unaffected.");
			VRSyncRate = cfg.Bind<float>("Multiplayer", "VR Pose Sync Rate", 60f, new ConfigDescription("Pose broadcast rate in Hz (5-60). MAVR-class smoothness is 60 Hz — higher = smoother but more bandwidth.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(5f, 60f), Array.Empty<object>()));
		}
	}
	public static class Entrypoint
	{
		public static void Initialize()
		{
			VRActions.Initialize();
			if (Plugin.VRRequested)
			{
				Plugin.VREnabled = OpenXRBoot.Start();
			}
			try
			{
				Loc.Register();
			}
			catch
			{
			}
			try
			{
				VRNetSync.Create();
				RemoteBodyDriver.Create();
				ApplyNetPatches();
			}
			catch (Exception arg)
			{
				Plugin.Logger.LogError((object)$"VR networking failed to initialize: {arg}");
			}
			if (Plugin.VREnabled)
			{
				VRRig.Create();
				VRCameraPoser.Create();
				VRDesktopMirror.Create();
				VRCalibration.Create();
				VRDamageOverlay.Create();
				VRUIManager.Create();
				VRLaser.Create();
				VRSettingsPanel.Create();
				VRHeldItem.Create();
				BodyLifecycle.Create();
				BlurCapture.Create();
				ApplyPatchesResiliently();
			}
		}

		private static void ApplyPatchesResiliently()
		{
			Type[] types = typeof(Plugin).Assembly.GetTypes();
			foreach (Type type in types)
			{
				if (type.GetCustomAttributes(typeof(HarmonyPatch), inherit: true).Any() && !type.GetCustomAttributes(typeof(NetOnlyPatchAttribute), inherit: true).Any())
				{
					try
					{
						Plugin.HarmonyInstance.CreateClassProcessor(type).Patch();
					}
					catch (Exception ex)
					{
						Plugin.Logger.LogError((object)("Patch class '" + type.Name + "' failed: " + ex.Message));
					}
				}
			}
		}

		private static void ApplyNetPatches()
		{
			Type[] types = typeof(Plugin).Assembly.GetTypes();
			foreach (Type type in types)
			{
				if (type.GetCustomAttributes(typeof(NetOnlyPatchAttribute), inherit: true).Any())
				{
					try
					{
						Plugin.HarmonyInstance.CreateClassProcessor(type).Patch();
					}
					catch (Exception ex)
					{
						Plugin.Logger.LogError((object)("Net patch class '" + type.Name + "' failed: " + ex.Message));
					}
				}
			}
		}
	}
	[BepInPlugin("com.jaxon.howtofishvr", "HowToFishXR", "1.0.0")]
	[BepInProcess("How to Fish.exe")]
	public class Plugin : BaseUnityPlugin
	{
		public const string Guid = "com.jaxon.howtofishvr";

		public const string Name = "HowToFishXR";

		public const string Version = "1.0.0";

		public static Plugin Instance { get; private set; }

		public static ManualLogSource Logger { get; private set; }

		public static Harmony HarmonyInstance { get; private set; }

		public static bool VREnabled { get; internal set; }

		public static bool HeadsetActive
		{
			get
			{
				//IL_0016: Unknown result type (might be due to invalid IL or missing references)
				//IL_001b: Unknown result type (might be due to invalid IL or missing references)
				if (!VREnabled)
				{
					return false;
				}
				try
				{
					if (!XRSettings.isDeviceActive)
					{
						return false;
					}
					InputDevice deviceAtXRNode = InputDevices.GetDeviceAtXRNode((XRNode)2);
					return ((InputDevice)(ref deviceAtXRNode)).isValid;
				}
				catch
				{
					return VREnabled;
				}
			}
		}

		public static bool VRRequested { get; private set; }

		private void Awake()
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Expected O, but got Unknown
			Instance = this;
			Logger = ((BaseUnityPlugin)this).Logger;
			Application.runInBackground = true;
			ResolveBundledAssemblies();
			VRConfig.Init(((BaseUnityPlugin)this).Config);
			VRRequested = ResolveVRRequested();
			HarmonyInstance = new Harmony("com.jaxon.howtofishvr");
			try
			{
				Entrypoint.Initialize();
			}
			catch (Exception arg)
			{
				Logger.LogError((object)$"Fatal error during VR initialization: {arg}");
			}
		}

		private bool ResolveVRRequested()
		{
			bool flag = Environment.GetCommandLineArgs().Contains<string>("--disable-vr", StringComparer.OrdinalIgnoreCase);
			return !(VRConfig.DisableVR.Value || flag);
		}

		private void ResolveBundledAssemblies()
		{
			string here = Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location);
			AppDomain.CurrentDomain.AssemblyResolve += delegate(object _, ResolveEventArgs args)
			{
				string text = new AssemblyName(args.Name).Name + ".dll";
				string text2 = Path.Combine(here, text);
				if (File.Exists(text2))
				{
					try
					{
						return Assembly.LoadFrom(text2);
					}
					catch
					{
					}
				}
				string text3 = Path.Combine(here, "RuntimeDeps", text);
				if (File.Exists(text3))
				{
					try
					{
						return Assembly.LoadFrom(text3);
					}
					catch
					{
					}
				}
				return (Assembly)null;
			};
		}
	}
}
namespace HowToFishVR.VR
{
	internal sealed class BlurCapture : MonoBehaviour
	{
		private int _globalId;

		private RenderTexture _rt;

		private bool _haveContent;

		internal static BlurCapture Instance { get; private set; }

		internal bool HasBlur
		{
			get
			{
				if (_haveContent && (Object)(object)_rt != (Object)null)
				{
					return _rt.IsCreated();
				}
				return false;
			}
		}

		internal static void Create()
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Expected O, but got Unknown
			if (!((Object)(object)Instance != (Object)null))
			{
				GameObject val = new GameObject("HowToFishVR BlurCapture");
				Object.DontDestroyOnLoad((Object)val);
				Instance = val.AddComponent<BlurCapture>();
			}
		}

		private void Awake()
		{
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			_globalId = Shader.PropertyToID("_GlobalUniversalBlurTexture");
			int w = Mathf.Max(2, Screen.width / 2);
			int h = Mathf.Max(2, Screen.height / 2);
			EnsureRT(w, h);
			ClearRT(new Color(0.1f, 0.13f, 0.16f, 1f));
		}

		private void OnEnable()
		{
			RenderPipelineManager.endCameraRendering += OnEndCamera;
		}

		private void OnDisable()
		{
			RenderPipelineManager.endCameraRendering -= OnEndCamera;
		}

		private void Update()
		{
			if ((Object)(object)_rt != (Object)null && _rt.IsCreated())
			{
				Shader.SetGlobalTexture(_globalId, (Texture)(object)_rt);
			}
		}

		private void OnEndCamera(ScriptableRenderContext ctx, Camera cam)
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Invalid comparison between Unknown and I4
			try
			{
				if ((Object)(object)cam == (Object)null || (int)cam.cameraType != 1)
				{
					return;
				}
				Texture globalTexture = Shader.GetGlobalTexture(_globalId);
				RenderTexture val = (RenderTexture)(object)((globalTexture is RenderTexture) ? globalTexture : null);
				if (!((Object)(object)val == (Object)null) && !((Object)(object)val == (Object)(object)_rt) && val.IsCreated())
				{
					EnsureRT(((Texture)val).width, ((Texture)val).height);
					if (!((Object)(object)_rt == (Object)null))
					{
						Graphics.Blit((Texture)(object)val, _rt);
						_haveContent = true;
					}
				}
			}
			catch
			{
			}
		}

		private void EnsureRT(int w, int h)
		{
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0075: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Unknown result type (might be due to invalid IL or missing references)
			//IL_008a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Expected O, but got Unknown
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			if (w < 2 || h < 2 || ((Object)(object)_rt != (Object)null && ((Texture)_rt).width == w && ((Texture)_rt).height == h && _rt.IsCreated()))
			{
				return;
			}
			if ((Object)(object)_rt != (Object)null)
			{
				try
				{
					_rt.Release();
				}
				catch
				{
				}
			}
			_rt = new RenderTexture(w, h, 0, (RenderTextureFormat)9)
			{
				name = "HowToFishVR_BlurCapture",
				useMipMap = false,
				autoGenerateMips = false,
				filterMode = (FilterMode)1,
				wrapMode = (TextureWrapMode)1
			};
			try
			{
				_rt.Create();
			}
			catch
			{
			}
			ClearRT(new Color(0.1f, 0.13f, 0.16f, 1f));
		}

		private void ClearRT(Color c)
		{
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)_rt == (Object)null || !_rt.IsCreated())
			{
				return;
			}
			RenderTexture active = RenderTexture.active;
			try
			{
				RenderTexture.active = _rt;
				GL.Clear(true, true, c);
			}
			catch
			{
			}
			finally
			{
				RenderTexture.active = active;
			}
		}

		private void OnDestroy()
		{
			if ((Object)(object)_rt != (Object)null)
			{
				try
				{
					_rt.Release();
				}
				catch
				{
				}
				_rt = null;
			}
			if ((Object)(object)Instance == (Object)(object)this)
			{
				Instance = null;
			}
		}
	}
	public static class OpenXRBoot
	{
		private static XRGeneralSettings _general;

		private static XRManagerSettings _manager;

		private static OpenXRLoader _loader;

		public static bool Running { get; private set; }

		public static bool Start()
		{
			try
			{
				NeutralizeAnalytics();
				BuildSettings();
				if (!VerifySubsystemManifest())
				{
					Plugin.Logger.LogError((object)"OpenXR subsystem descriptors not found. The native UnityOpenXR plugin / manifest was not staged into How to Fish_Data. Check the preloader ran.");
					return false;
				}
				if (!InitAndStart())
				{
					Plugin.Logger.LogError((object)"OpenXR loader failed to produce a display subsystem. Is a headset connected and an OpenXR runtime active (SteamVR/Oculus/VD)?");
					return false;
				}
				try
				{
					InputSystem.settings.backgroundBehavior = (BackgroundBehavior)2;
				}
				catch
				{
				}
				XRSettings.eyeTextureResolutionScale = 1f;
				SetFloorTrackingOrigin();
				Running = true;
				return true;
			}
			catch (Exception arg)
			{
				Plugin.Logger.LogError((object)$"Exception while starting OpenXR: {arg}");
				return false;
			}
		}

		public static void Stop()
		{
			if (!Running)
			{
				return;
			}
			try
			{
				XRManagerSettings manager = _manager;
				if (manager != null)
				{
					manager.StopSubsystems();
				}
				XRManagerSettings manager2 = _manager;
				if (manager2 != null)
				{
					manager2.DeinitializeLoader();
				}
			}
			catch
			{
			}
			Running = false;
		}

		private static void NeutralizeAnalytics()
		{
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Expected O, but got Unknown
			Type type = AccessTools.TypeByName("UnityEngine.XR.OpenXR.OpenXRAnalytics");
			if (type == null)
			{
				return;
			}
			HarmonyMethod val = new HarmonyMethod(AccessTools.Method(typeof(OpenXRBoot), "SkipOriginal", (Type[])null, (Type[])null));
			MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
			foreach (MethodInfo methodInfo in methods)
			{
				if (!(methodInfo.DeclaringType != type) && !methodInfo.IsAbstract && !methodInfo.ContainsGenericParameters)
				{
					try
					{
						Plugin.HarmonyInstance.Patch((MethodBase)methodInfo, val, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
					}
					catch
					{
					}
				}
			}
		}

		private static bool SkipOriginal()
		{
			return false;
		}

		private static void BuildSettings()
		{
			if (_general == null)
			{
				_general = ScriptableObject.CreateInstance<XRGeneralSettings>();
			}
			if (_manager == null)
			{
				_manager = ScriptableObject.CreateInstance<XRManagerSettings>();
			}
			if (_loader == null)
			{
				_loader = ScriptableObject.CreateInstance<OpenXRLoader>();
			}
			Traverse.Create((object)_general).Property("Manager", (object[])null).SetValue((object)_manager);
			SetActiveLoaders(_manager, new List<XRLoader> { (XRLoader)(object)_loader });
			_manager.automaticLoading = false;
			_manager.automaticRunning = false;
			TrySetXRGeneralSettingsInstance(_general);
			ConfigureOpenXRSettings();
		}

		private static void ConfigureOpenXRSettings()
		{
			OpenXRSettings val = OpenXRSettings.Instance;
			if ((Object)(object)val == (Object)null)
			{
				val = ScriptableObject.CreateInstance<OpenXRSettings>();
				(AccessTools.Field(typeof(OpenXRSettings), "s_RuntimeSettingsInstance") ?? AccessTools.Field(typeof(OpenXRSettings), "s_Instance") ?? AccessTools.Field(typeof(OpenXRSettings), "m_Instance"))?.SetValue(null, val);
			}
			try
			{
				val.renderMode = (RenderMode)0;
			}
			catch
			{
			}
			try
			{
				val.depthSubmissionMode = (DepthSubmissionMode)0;
			}
			catch
			{
			}
			OpenXRFeature[] features = BuildInteractionFeatures();
			SetFeatures(val, features);
		}

		private static OpenXRFeature[] BuildInteractionFeatures()
		{
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_009e: Expected O, but got Unknown
			Type[] obj = new Type[8]
			{
				typeof(OculusTouchControllerProfile),
				typeof(MetaQuestTouchPlusControllerProfile),
				typeof(MetaQuestTouchProControllerProfile),
				typeof(ValveIndexControllerProfile),
				typeof(HTCViveControllerProfile),
				typeof(MicrosoftMotionControllerProfile),
				typeof(HPReverbG2ControllerProfile),
				typeof(KHRSimpleControllerProfile)
			};
			List<OpenXRFeature> list = new List<OpenXRFeature>();
			Type[] array = obj;
			foreach (Type type in array)
			{
				try
				{
					if (typeof(OpenXRFeature).IsAssignableFrom(type))
					{
						OpenXRFeature val = (OpenXRFeature)ScriptableObject.CreateInstance(type);
						Traverse.Create((object)val).Property("enabled", (object[])null).SetValue((object)true);
						list.Add(val);
					}
				}
				catch
				{
				}
			}
			if (list.Count == 0)
			{
				Plugin.Logger.LogError((object)"OpenXR started without any controller interaction profiles; motion-controller input will not work.");
			}
			return list.ToArray();
		}

		private static bool InitAndStart()
		{
			TrySetXRGeneralSettingsInstance(_general);
			AccessTools.Field(typeof(XRGeneralSettings), "m_InitManagerOnStart")?.SetValue(_general, true);
			Environment.SetEnvironmentVariable("XR_RUNTIME_JSON", null);
			InvokePrivate(_general, "InitXRSDK");
			InvokePrivate(_general, "Start");
			List<XRDisplaySubsystem> list = new List<XRDisplaySubsystem>();
			SubsystemManager.GetSubsystems<XRDisplaySubsystem>(list);
			return list.Count > 0;
		}

		private static void InvokePrivate(object target, string method)
		{
			try
			{
				MethodInfo methodInfo = AccessTools.Method(target.GetType(), method, (Type[])null, (Type[])null);
				if (!(methodInfo == null))
				{
					methodInfo.Invoke(target, null);
				}
			}
			catch
			{
			}
		}

		private static void SetFloorTrackingOrigin()
		{
			try
			{
				List<XRInputSubsystem> list = new List<XRInputSubsystem>();
				SubsystemManager.GetSubsystems<XRInputSubsystem>(list);
				foreach (XRInputSubsystem item in list)
				{
					if (item.TrySetTrackingOriginMode((TrackingOriginModeFlags)2))
					{
						item.TryRecenter();
					}
				}
			}
			catch
			{
			}
		}

		private static bool VerifySubsystemManifest()
		{
			List<ISubsystemDescriptor> list = new List<ISubsystemDescriptor>();
			SubsystemManager.GetAllSubsystemDescriptors(list);
			List<string> source = list.Select((ISubsystemDescriptor d) => d.id).ToList();
			if (source.Any((string id) => id.Contains("OpenXR Display")))
			{
				return source.Any((string id) => id.Contains("OpenXR Input"));
			}
			return false;
		}

		private static void SetActiveLoaders(XRManagerSettings manager, List<XRLoader> loaders)
		{
			try
			{
				if (manager.activeLoaders is List<XRLoader> list)
				{
					list.Clear();
					list.AddRange(loaders);
					return;
				}
			}
			catch
			{
			}
			AccessTools.Field(typeof(XRManagerSettings), "m_Loaders")?.SetValue(manager, loaders);
		}

		private static void TrySetXRGeneralSettingsInstance(XRGeneralSettings general)
		{
			(AccessTools.Field(typeof(XRGeneralSettings), "s_RuntimeSettingsInstance") ?? AccessTools.Field(typeof(XRGeneralSettings), "s_Instance") ?? AccessTools.Field(typeof(XRGeneralSettings), "k_SettingsInstance"))?.SetValue(null, general);
		}

		private static void SetFeatures(OpenXRSettings settings, OpenXRFeature[] features)
		{
			PropertyInfo propertyInfo = AccessTools.Property(typeof(OpenXRSettings), "features");
			if (propertyInfo != null && propertyInfo.CanWrite)
			{
				propertyInfo.SetValue(settings, features);
			}
			else
			{
				(AccessTools.Field(typeof(OpenXRSettings), "features") ?? AccessTools.Field(typeof(OpenXRSettings), "m_features") ?? AccessTools.Field(typeof(OpenXRSettings), "featureSets"))?.SetValue(settings, features);
			}
		}
	}
	public class VRCalibration : MonoBehaviour
	{
		private enum State
		{
			Idle,
			Prompt,
			Countdown,
			Done
		}

		private bool _f3WasDown;

		private State _state;

		private float _timer;

		private int _count;

		private Canvas _canvas;

		private Text _text;

		public static VRCalibration Instance { get; private set; }

		public static void Create()
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Expected O, but got Unknown
			if (!((Object)(object)Instance != (Object)null))
			{
				GameObject val = new GameObject("HowToFishVR Calibration");
				Object.DontDestroyOnLoad((Object)val);
				Instance = val.AddComponent<VRCalibration>();
				Instance.BuildUI();
			}
		}

		public void Begin()
		{
			if (_state == State.Idle)
			{
				_state = State.Prompt;
				_timer = 0f;
			}
		}

		private void BuildUI()
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Expected O, but got Unknown
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Expected O, but got Unknown
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0101: Unknown result type (might be due to invalid IL or missing references)
			//IL_0102: Unknown result type (might be due to invalid IL or missing references)
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0117: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_0122: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = new GameObject("Calibration Canvas");
			val.transform.SetParent(((Component)this).transform, false);
			val.layer = 5;
			_canvas = val.AddComponent<Canvas>();
			_canvas.renderMode = (RenderMode)2;
			val.AddComponent<CanvasScaler>();
			RectTransform val2 = (RectTransform)((Component)_canvas).transform;
			val2.sizeDelta = new Vector2(800f, 300f);
			((Transform)val2).localScale = Vector3.one * 0.0015f;
			GameObject val3 = new GameObject("Text");
			val3.transform.SetParent(val.transform, false);
			val3.layer = 5;
			_text = val3.AddComponent<Text>();
			_text.font = FindFont();
			_text.fontSize = 48;
			_text.alignment = (TextAnchor)4;
			((Graphic)_text).color = Color.white;
			_text.horizontalOverflow = (HorizontalWrapMode)0;
			RectTransform val4 = (RectTransform)((Component)_text).transform;
			val4.anchorMin = Vector2.zero;
			val4.anchorMax = Vector2.one;
			val4.offsetMin = Vector2.zero;
			val4.offsetMax = Vector2.zero;
			val.SetActive(false);
		}

		private static Font FindFont()
		{
			try
			{
				Font builtinResource = Resources.GetBuiltinResource<Font>("LegacyRuntime.ttf");
				if ((Object)(object)builtinResource != (Object)null)
				{
					return builtinResource;
				}
			}
			catch
			{
			}
			try
			{
				Font val = Font.CreateDynamicFontFromOSFont("Arial", 48);
				if ((Object)(object)val != (Object)null)
				{
					return val;
				}
			}
			catch
			{
			}
			try
			{
				Font val2 = Font.CreateDynamicFontFromOSFont("Segoe UI", 48);
				if ((Object)(object)val2 != (Object)null)
				{
					return val2;
				}
			}
			catch
			{
			}
			return null;
		}

		private void Update()
		{
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_0102: Unknown result type (might be due to invalid IL or missing references)
			//IL_0117: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_011e: Unknown result type (might be due to invalid IL or missing references)
			if (!Plugin.VREnabled)
			{
				return;
			}
			bool flag = false;
			try
			{
				KeyboardShortcut value = VRConfig.HeightCalibrateKey.Value;
				flag = ((KeyboardShortcut)(ref value)).IsDown();
			}
			catch
			{
			}
			try
			{
				if (Input.GetKey((KeyCode)284))
				{
					flag = true;
				}
			}
			catch
			{
			}
			if (flag && !_f3WasDown && _state == State.Idle)
			{
				Begin();
			}
			_f3WasDown = flag;
			VRRig instance = VRRig.Instance;
			if ((Object)(object)instance == (Object)null || (Object)(object)instance.Head == (Object)null)
			{
				return;
			}
			bool flag2 = _state != State.Idle;
			if ((Object)(object)_canvas != (Object)null && ((Component)_canvas).gameObject.activeSelf != flag2)
			{
				((Component)_canvas).gameObject.SetActive(flag2);
			}
			if (!flag2)
			{
				return;
			}
			Transform head = instance.Head;
			Vector3 forward = head.forward;
			forward.y = 0f;
			if (((Vector3)(ref forward)).sqrMagnitude > 0.0001f)
			{
				((Vector3)(ref forward)).Normalize();
				((Component)_canvas).transform.position = head.position + forward * 1.2f;
				((Component)_canvas).transform.rotation = Quaternion.LookRotation(forward, Vector3.up);
			}
			switch (_state)
			{
			case State.Prompt:
				_text.text = "Stand up straight and hold a T-pose\n(arms straight out to the sides)";
				if (IsTPose(instance))
				{
					_timer += Time.deltaTime;
					if (_timer >= 0.5f)
					{
						_state = State.Countdown;
						_count = 3;
						_timer = 0f;
					}
				}
				else
				{
					_timer = 0f;
				}
				break;
			case State.Countdown:
				if (!IsTPose(instance))
				{
					_state = State.Prompt;
					_timer = 0f;
					break;
				}
				_text.text = $"Hold still...\n{_count}";
				_timer += Time.deltaTime;
				if (_timer >= 1f)
				{
					_timer = 0f;
					_count--;
					if (_count <= 0)
					{
						instance.CalibrateNow();
						_state = State.Done;
						_text.text = "Calibrated!";
						Pulse();
					}
				}
				break;
			case State.Done:
				_timer += Time.deltaTime;
				if (_timer >= 1.5f)
				{
					_state = State.Idle;
					_timer = 0f;
				}
				break;
			}
		}

		private static void Pulse()
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				InputDevice deviceAtXRNode = InputDevices.GetDeviceAtXRNode((XRNode)4);
				InputDevice deviceAtXRNode2 = InputDevices.GetDeviceAtXRNode((XRNode)5);
				if (((InputDevice)(ref deviceAtXRNode)).isValid)
				{
					((InputDevice)(ref deviceAtXRNode)).SendHapticImpulse(0u, 0.6f, 0.25f);
				}
				if (((InputDevice)(ref deviceAtXRNode2)).isValid)
				{
					((InputDevice)(ref deviceAtXRNode2)).SendHapticImpulse(0u, 0.6f, 0.25f);
				}
			}
			catch
			{
			}
		}

		private static bool IsTPose(VRRig rig)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_006d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			Vector3 position = rig.Head.position;
			Vector3 position2 = rig.LeftHand.position;
			Vector3 position3 = rig.RightHand.position;
			bool num = Mathf.Abs(position2.y - position.y) < 0.45f && Mathf.Abs(position3.y - position.y) < 0.45f;
			Vector3 val = default(Vector3);
			((Vector3)(ref val))..ctor(position2.x - position.x, 0f, position2.z - position.z);
			Vector3 val2 = default(Vector3);
			((Vector3)(ref val2))..ctor(position3.x - position.x, 0f, position3.z - position.z);
			bool flag = ((Vector3)(ref val)).magnitude > 0.35f && ((Vector3)(ref val2)).magnitude > 0.35f;
			bool flag2 = Vector3.Dot(((Vector3)(ref val)).normalized, ((Vector3)(ref val2)).normalized) < -0.3f;
			return num && flag && flag2;
		}
	}
	public static class VRCameraPoser
	{
		public static VRCameraPoser_Behaviour Instance;

		public static void Create()
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Expected O, but got Unknown
			if (!((Object)(object)Instance != (Object)null))
			{
				GameObject val = new GameObject("HowToFishVR CameraPoser");
				Object.DontDestroyOnLoad((Object)val);
				Instance = val.AddComponent<VRCameraPoser_Behaviour>();
			}
		}
	}
	public class VRCameraPoser_Behaviour : MonoBehaviour
	{
		private static Transform _deadHead;

		private static Vector3 _deadHeadScale = Vector3.one;

		private static bool _deadHeadHidden;

		private static SelfDrivingBoat _menuBoat;

		private static Transform _menuCameraTarget;

		private static Vector3 _menuTargetLocalOffset;

		private static bool _menuAnchorInit;

		private static bool _customizationPoseActive;

		private static SelfDrivingBoat _customizationBoat;

		private static float _customizationNeutralHeadYaw;

		private static float _customizationStartTurnYaw;

		private static bool TryGetRagdollHead(out Vector3 pos)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			pos = default(Vector3);
			try
			{
				Player localPlayer = Player.LocalPlayer;
				if ((Object)(object)localPlayer == (Object)null || (Object)(object)localPlayer.Dying == (Object)null || !localPlayer.Dying.IsDead)
				{
					return false;
				}
				DeadPlayer deadPlayer = localPlayer.Dying.DeadPlayer;
				if ((Object)(object)deadPlayer == (Object)null)
				{
					return false;
				}
				if ((Object)(object)deadPlayer._mouthUpper != (Object)null)
				{
					pos = deadPlayer._mouthUpper.position;
					return true;
				}
				pos = ((Component)deadPlayer).transform.position + Vector3.up * 0.2f;
				return true;
			}
			catch
			{
				return false;
			}
		}

		private static void HideDeadHead()
		{
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				if (_deadHeadHidden && (Object)(object)_deadHead != (Object)null)
				{
					return;
				}
				if ((Object)(object)_deadHead == (Object)null)
				{
					Player localPlayer = Player.LocalPlayer;
					if ((Object)(object)localPlayer == (Object)null || (Object)(object)localPlayer.Dying == (Object)null || (Object)(object)localPlayer.Dying.DeadPlayer == (Object)null)
					{
						return;
					}
					_deadHead = FindHeadBone(((Component)localPlayer.Dying.DeadPlayer).transform);
					if ((Object)(object)_deadHead == (Object)null)
					{
						_deadHeadHidden = true;
						return;
					}
					_deadHeadScale = _deadHead.localScale;
				}
				if ((Object)(object)_deadHead != (Object)null)
				{
					_deadHead.localScale = Vector3.zero;
				}
				_deadHeadHidden = true;
			}
			catch
			{
			}
		}

		private static void RestoreDeadHead()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)_deadHead != (Object)null && _deadHeadHidden)
			{
				_deadHead.localScale = _deadHeadScale;
			}
			_deadHead = null;
			_deadHeadHidden = false;
		}

		private static Transform FindHeadBone(Transform root)
		{
			if ((Object)(object)root == (Object)null)
			{
				return null;
			}
			Transform[] componentsInChildren = ((Component)root).GetComponentsInChildren<Transform>(true);
			foreach (Transform val in componentsInChildren)
			{
				if (!((Object)(object)val == (Object)null) && ((Object)val).name != null)
				{
					string name = ((Object)val).name;
					if (name.IndexOf("Head", StringComparison.OrdinalIgnoreCase) >= 0 && name.IndexOf("Holder", StringComparison.OrdinalIgnoreCase) < 0 && name.IndexOf("hold", StringComparison.OrdinalIgnoreCase) < 0 && name.IndexOf("mouth", StringComparison.OrdinalIgnoreCase) < 0 && name.IndexOf("hair", StringComparison.OrdinalIgnoreCase) < 0)
					{
						return val;
					}
				}
			}
			return null;
		}

		private static Vector3 MenuBoatAnchor(Camera primary)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0103: Unknown result type (might be due to invalid IL or missing references)
			SelfDrivingBoat val = null;
			Transform val2 = null;
			Vector3 val3 = default(Vector3);
			try
			{
				MainMenuManager instance = MainMenuManager._instance;
				if ((Object)(object)instance != (Object)null)
				{
					val = instance._boat;
				}
				if ((Object)(object)val != (Object)null)
				{
					bool isInSkinCustomization = LocalSkin.IsInSkinCustomization;
					val2 = (isInSkinCustomization ? val._skinCustomizationPos : val._defaultCamPos);
					if ((Object)(object)val2 == (Object)null)
					{
						val2 = ((Component)val).transform;
					}
					val3 = val2.position;
					val3.y = (isInSkinCustomization ? val._skinCustomizationHeight : val._defaultHeight);
				}
			}
			catch
			{
			}
			if ((Object)(object)val == (Object)null || (Object)(object)val2 == (Object)null)
			{
				return ((Component)primary).transform.position;
			}
			if (!_menuAnchorInit || (Object)(object)_menuBoat != (Object)(object)val)
			{
				_menuBoat = val;
				if (!LocalSkin.IsInSkinCustomization)
				{
					_menuTargetLocalOffset = Quaternion.Inverse(val2.rotation) * (((Component)primary).transform.position - val3);
				}
				_menuAnchorInit = true;
			}
			_menuCameraTarget = val2;
			if (!LocalSkin.IsInSkinCustomization)
			{
				return val3 + val2.rotation * _menuTargetLocalOffset;
			}
			return val3;
		}

		internal static bool TryGetCustomizationOrigin(Quaternion headRotation, float turnYaw, out Quaternion origin)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0103: Unknown result type (might be due to invalid IL or missing references)
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			//IL_0137: Unknown result type (might be due to invalid IL or missing references)
			origin = Quaternion.identity;
			try
			{
				if (!MainMenuManager.IsInMenu || !LocalSkin.IsInSkinCustomization)
				{
					_customizationPoseActive = false;
					_customizationBoat = null;
					return false;
				}
				MainMenuManager instance = MainMenuManager._instance;
				SelfDrivingBoat val = (((Object)(object)instance != (Object)null) ? instance._boat : null);
				if ((Object)(object)val == (Object)null || (Object)(object)val._skinCustomizationPos == (Object)null || (Object)(object)val._skinCustomizationLookAt == (Object)null)
				{
					return false;
				}
				if (!_customizationPoseActive || (Object)(object)_customizationBoat != (Object)(object)val)
				{
					_customizationPoseActive = true;
					_customizationBoat = val;
					_customizationNeutralHeadYaw = ((Quaternion)(ref headRotation)).eulerAngles.y;
					_customizationStartTurnYaw = turnYaw;
				}
				Vector3 position = val._skinCustomizationPos.position;
				position.y = val._skinCustomizationHeight;
				Vector3 val2 = val._skinCustomizationLookAt.position - position;
				val2.y = 0f;
				if (((Vector3)(ref val2)).sqrMagnitude < 1E-06f)
				{
					return false;
				}
				Quaternion val3 = Quaternion.LookRotation(val2, Vector3.up);
				float y = ((Quaternion)(ref val3)).eulerAngles.y;
				float num = Mathf.DeltaAngle(_customizationStartTurnYaw, turnYaw);
				origin = Quaternion.Euler(0f, y - _customizationNeutralHeadYaw + num, 0f);
				return true;
			}
			catch
			{
				return false;
			}
		}

		private static void ClearTp()
		{
			_menuAnchorInit = false;
			_menuBoat = null;
			_menuCameraTarget = null;
			_customizationPoseActive = false;
			_customizationBoat = null;
		}

		private void OnEnable()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Expected O, but got Unknown
			Application.onBeforeRender += new UnityAction(Pose);
		}

		private void OnDisable()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Expected O, but got Unknown
			Application.onBeforeRender -= new UnityAction(Pose);
		}

		public void Recalibrate()
		{
		}

		private void Pose()
		{
			//IL_0225: Unknown result type (might be due to invalid IL or missing references)
			//IL_0227: Unknown result type (might be due to invalid IL or missing references)
			//IL_0231: Unknown result type (might be due to invalid IL or missing references)
			//IL_0236: Unknown result type (might be due to invalid IL or missing references)
			//IL_023b: Unknown result type (might be due to invalid IL or missing references)
			//IL_023d: Unknown result type (might be due to invalid IL or missing references)
			//IL_023f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0240: Unknown result type (might be due to invalid IL or missing references)
			//IL_0245: Unknown result type (might be due to invalid IL or missing references)
			//IL_0249: Unknown result type (might be due to invalid IL or missing references)
			//IL_024e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0250: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0267: Unknown result type (might be due to invalid IL or missing references)
			//IL_025e: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0283: Unknown result type (might be due to invalid IL or missing references)
			//IL_028f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0294: Unknown result type (might be due to invalid IL or missing references)
			//IL_029d: Unknown result type (might be due to invalid IL or missing references)
			//IL_029f: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02be: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0103: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_0308: Unknown result type (might be due to invalid IL or missing references)
			//IL_0316: Unknown result type (might be due to invalid IL or missing references)
			//IL_0318: Unknown result type (might be due to invalid IL or missing references)
			//IL_0319: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_043c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0441: Unknown result type (might be due to invalid IL or missing references)
			//IL_0449: Unknown result type (might be due to invalid IL or missing references)
			//IL_044b: Unknown result type (might be due to invalid IL or missing references)
			//IL_044d: Unknown result type (might be due to invalid IL or missing references)
			//IL_044f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0454: Unknown result type (might be due to invalid IL or missing references)
			//IL_046c: Unknown result type (might be due to invalid IL or missing references)
			//IL_046e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0470: Unknown result type (might be due to invalid IL or missing references)
			//IL_0471: Unknown result type (might be due to invalid IL or missing references)
			//IL_0473: Unknown result type (might be due to invalid IL or missing references)
			//IL_0478: Unknown result type (might be due to invalid IL or missing references)
			//IL_047d: Unknown result type (might be due to invalid IL or missing references)
			//IL_048e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0490: Unknown result type (might be due to invalid IL or missing references)
			//IL_0491: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_0045: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0053: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Unknown result type (might be due to invalid IL or missing references)
			//IL_0366: Unknown result type (might be due to invalid IL or missing references)
			//IL_0367: Unknown result type (might be due to invalid IL or missing references)
			//IL_0378: Unknown result type (might be due to invalid IL or missing references)
			//IL_037a: Unknown result type (might be due to invalid IL or missing references)
			//IL_037b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0334: Unknown result type (might be due to invalid IL or missing references)
			//IL_0342: Unknown result type (might be due to invalid IL or missing references)
			//IL_0344: Unknown result type (might be due to invalid IL or missing references)
			//IL_0345: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0219: Unknown result type (might be due to invalid IL or missing references)
			//IL_021e: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				if (!Plugin.HeadsetActive)
				{
					return;
				}
				VRActions instance = VRActions.Instance;
				VRRig instance2 = VRRig.Instance;
				if (instance == null || (Object)(object)instance2 == (Object)null || (Object)(object)instance2.Root == (Object)null || !instance2.IsCalibrated)
				{
					return;
				}
				Vector3 headPos = instance.HeadPos;
				Quaternion headRot = instance.HeadRot;
				Quaternion rotation = instance2.Root.rotation;
				Vector3 headCalib = instance2.HeadCalib;
				Camera val = null;
				try
				{
					Player localPlayer = Player.LocalPlayer;
					if ((Object)(object)localPlayer != (Object)null && (Object)(object)localPlayer.Camera != (Object)null)
					{
						val = localPlayer.Camera.Cam;
					}
				}
				catch
				{
				}
				if ((Object)(object)instance2.Head != (Object)null)
				{
					instance2.Head.localPosition = headPos;
					instance2.Head.localRotation = headRot;
				}
				if ((Object)(object)instance2.LeftHand != (Object)null)
				{
					instance2.LeftHand.localPosition = instance.LeftPos;
					instance2.LeftHand.localRotation = instance.LeftRot;
				}
				if ((Object)(object)instance2.RightHand != (Object)null)
				{
					instance2.RightHand.localPosition = instance.RightPos;
					instance2.RightHand.localRotation = instance.RightRot;
				}
				if ((Object)(object)val != (Object)null)
				{
					ClearTp();
					if (!((Behaviour)val).isActiveAndEnabled)
					{
						Transform val2 = ((Component)val).transform;
						while ((Object)(object)val2 != (Object)null)
						{
							if (!((Component)val2).gameObject.activeSelf)
							{
								((Component)val2).gameObject.SetActive(true);
							}
							val2 = val2.parent;
						}
						if (!((Behaviour)val).enabled)
						{
							((Behaviour)val).enabled = true;
						}
					}
					if ((Object)(object)val.targetTexture != (Object)null)
					{
						val.targetTexture = null;
					}
					CameraOutputPatches.EnsureXR(val);
					if (TryGetRagdollHead(out var pos))
					{
						if (VRConfig.DeathView.Value == DeathView.ThirdPerson)
						{
							RestoreDeadHead();
							Vector3 val3 = pos;
							try
							{
								DeadPlayer val4 = (((Object)(object)Player.LocalPlayer != (Object)null && (Object)(object)Player.LocalPlayer.Dying != (Object)null) ? Player.LocalPlayer.Dying.DeadPlayer : null);
								if ((Object)(object)val4 != (Object)null && (Object)(object)((Component)val4).transform != (Object)null)
								{
									val3 = ((Component)val4).transform.position;
								}
							}
							catch
							{
							}
							val3 += Vector3.up * 0.55f;
							Quaternion val5 = rotation * headRot;
							Vector3 eulerAngles = ((Quaternion)(ref val5)).eulerAngles;
							Quaternion val6 = Quaternion.Euler(Mathf.Clamp((eulerAngles.x > 180f) ? (eulerAngles.x - 360f) : eulerAngles.x, -85f, 85f), eulerAngles.y, 0f);
							float num = 2.6f;
							Vector3 val7 = val3 + val6 * (Vector3.forward * (0f - num));
							Vector3 val8 = val3 - val7;
							Vector3 normalized = ((Vector3)(ref val8)).normalized;
							RaycastHit val9 = default(RaycastHit);
							if (Physics.Raycast(val3, normalized, ref val9, num, LayerMask.op_Implicit(GameInfo.LevelLayer)))
							{
								val7 = ((RaycastHit)(ref val9)).point - normalized * 0.25f;
							}
							((Component)val).transform.position = val7;
							((Component)val).transform.rotation = rotation * headRot;
						}
						else
						{
							HideDeadHead();
							((Component)val).transform.position = pos;
							((Component)val).transform.rotation = rotation * headRot;
						}
					}
					else
					{
						RestoreDeadHead();
						((Component)val).transform.position = instance2.Root.TransformPoint(headPos);
						((Component)val).transform.rotation = rotation * headRot;
					}
				}
				else
				{
					Camera val10 = null;
					try
					{
						MainMenuManager instance3 = MainMenuManager._instance;
						if ((Object)(object)instance3 != (Object)null && (Object)(object)instance3._menuCam != (Object)null && ((Behaviour)instance3._menuCam).isActiveAndEnabled && (Object)(object)instance3._menuCam.targetTexture == (Object)null)
						{
							val10 = instance3._menuCam;
						}
					}
					catch
					{
					}
					Camera[] allCameras = Camera.allCameras;
					foreach (Camera val11 in allCameras)
					{
						if ((Object)(object)val10 == (Object)null && (Object)(object)val11 != (Object)null && ((Behaviour)val11).isActiveAndEnabled && (Object)(object)val11.targetTexture == (Object)null)
						{
							val10 = val11;
							break;
						}
					}
					if ((Object)(object)val10 != (Object)null)
					{
						Vector3 val12 = MenuBoatAnchor(val10);
						instance2.Root.position = val12 - rotation * headCalib;
						CameraOutputPatches.EnsureXR(val10);
						((Component)val10).transform.position = val12 + rotation * (headPos - headCalib);
						((Component)val10).transform.rotation = rotation * headRot;
					}
				}
				WaterUnderwaterPatches.UpdateFromRenderedVRView();
				VRDamageOverlay.Instance?.RepositionNow();
				try
				{
					Player localPlayer2 = Player.LocalPlayer;
					if ((Object)(object)localPlayer2 != (Object)null && (Object)(object)localPlayer2.Hands != (Object)null)
					{
						PlayerHandsPatches.ApplyTrackedHands(localPlayer2.Hands);
					}
					ArmRig.SolveCurrentPose(localPlayer2);
				}
				catch
				{
				}
				VRUIManager.Instance?.RepositionNow();
				try
				{
					XRSettings.gameViewRenderMode = (GameViewRenderMode)1;
				}
				catch
				{
				}
				VRDesktopMirror.Instance?.SyncToViewCamera();
			}
			catch
			{
			}
		}
	}
	[HarmonyPatch(typeof(ShaderManager))]
	public class VRDamageOverlay : MonoBehaviour
	{
		private Canvas _canvas;

		private Image _img;

		private Image _deathBackdrop;

		private float _deathBackdropAlpha;

		private readonly float _alphaMul = 0.95f;

		private const float NativeDeathBackdropAlpha = 0.4f;

		private const float NativeDeathFadeSpeed = 2.5f;

		public static VRDamageOverlay Instance { get; private set; }

		public static void Create()
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Expected O, but got Unknown
			if (!((Object)(object)Instance != (Object)null))
			{
				GameObject val = new GameObject("HowToFishVR DamageOverlay");
				Object.DontDestroyOnLoad((Object)val);
				Instance = val.AddComponent<VRDamageOverlay>();
				Instance.Build();
			}
		}

		private void Build()
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Expected O, but got Unknown
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_0073: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0092: Expected O, but got Unknown
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Expected O, but got Unknown
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0141: Expected O, but got Unknown
			//IL_016c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0171: Unknown result type (might be due to invalid IL or missing references)
			//IL_0172: Unknown result type (might be due to invalid IL or missing references)
			//IL_017c: Unknown result type (might be due to invalid IL or missing references)
			//IL_017d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Unknown result type (might be due to invalid IL or missing references)
			//IL_0188: Unknown result type (might be due to invalid IL or missing references)
			//IL_0192: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0200: Expected O, but got Unknown
			GameObject val = new GameObject("Canvas");
			val.transform.SetParent(((Component)this).transform, false);
			val.layer = 5;
			_canvas = val.AddComponent<Canvas>();
			_canvas.renderMode = (RenderMode)2;
			_canvas.sortingOrder = 600;
			val.AddComponent<CanvasScaler>();
			RectTransform val2 = (RectTransform)val.transform;
			val2.sizeDelta = new Vector2(1920f, 1080f);
			((Transform)val2).localScale = Vector3.one * 0.0016f;
			GameObject val3 = new GameObject("DeathBackdrop");
			val3.transform.SetParent(val.transform, false);
			val3.layer = 5;
			_deathBackdrop = val3.AddComponent<Image>();
			RectTransform val4 = (RectTransform)val3.transform;
			val4.anchorMin = Vector2.zero;
			val4.anchorMax = Vector2.one;
			val4.offsetMin = Vector2.zero;
			val4.offsetMax = Vector2.zero;
			((Graphic)_deathBackdrop).color = Color.clear;
			((Graphic)_deathBackdrop).raycastTarget = false;
			try
			{
				((Graphic)_deathBackdrop).material = new Material(Canvas.GetDefaultCanvasMaterial())
				{
					name = "VR Native Death Backdrop",
					hideFlags = (HideFlags)61
				};
			}
			catch
			{
			}
			GameObject val5 = new GameObject("Vignette");
			val5.transform.SetParent(val.transform, false);
			val5.layer = 5;
			_img = val5.AddComponent<Image>();
			RectTransform val6 = (RectTransform)val5.transform;
			val6.anchorMin = Vector2.zero;
			val6.anchorMax = Vector2.one;
			val6.offsetMin = Vector2.zero;
			val6.offsetMax = Vector2.zero;
			((Graphic)_img).color = new Color(0f, 0f, 0f, 0f);
			((Graphic)_img).raycastTarget = false;
			try
			{
				_img.sprite = MakeDamageVignetteSprite();
			}
			catch
			{
			}
			try
			{
				Material material = new Material(Canvas.GetDefaultCanvasMaterial())
				{
					name = "VR DamageOverlay",
					hideFlags = (HideFlags)61
				};
				((Graphic)_img).material = material;
			}
			catch
			{
			}
			val.SetActive(false);
		}

		private void LateUpdate()
		{
			if (Plugin.VREnabled)
			{
				RepositionNow();
				UpdateDeathBackdrop();
			}
		}

		public void RepositionNow()
		{
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			if (!Plugin.VREnabled || (Object)(object)_canvas == (Object)null)
			{
				return;
			}
			VRRig instance = VRRig.Instance;
			if ((Object)(object)instance == (Object)null || (Object)(object)instance.Head == (Object)null)
			{
				return;
			}
			Transform val = instance.Head;
			try
			{
				Player localPlayer = Player.LocalPlayer;
				if ((Object)(object)localPlayer != (Object)null && (Object)(object)localPlayer.Camera != (Object)null && (Object)(object)localPlayer.Camera.Cam != (Object)null)
				{
					val = ((Component)localPlayer.Camera.Cam).transform;
				}
			}
			catch
			{
			}
			((Component)_canvas).transform.position = val.position + val.forward * 0.35f;
			((Component)_canvas).transform.rotation = val.rotation;
		}

		private void UpdateCanvasActive()
		{
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)_canvas == (Object)null) && !((Object)(object)_img == (Object)null))
			{
				bool flag = ((Graphic)_img).color.a > 0.005f || _deathBackdropAlpha > 0.005f;
				if (((Component)_canvas).gameObject.activeSelf != flag)
				{
					((Component)_canvas).gameObject.SetActive(flag);
				}
			}
		}

		private void UpdateDeathBackdrop()
		{
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)_deathBackdrop == (Object)null))
			{
				bool flag = false;
				try
				{
					Player localPlayer = Player.LocalPlayer;
					flag = (Object)(object)localPlayer != (Object)null && (Object)(object)localPlayer.Dying != (Object)null && localPlayer.Dying.IsDead;
				}
				catch
				{
				}
				float num = (flag ? 0.4f : 0f);
				_deathBackdropAlpha = Mathf.Lerp(_deathBackdropAlpha, num, Mathf.Clamp01(Time.deltaTime * 2.5f));
				if (Mathf.Abs(_deathBackdropAlpha - num) < 0.001f)
				{
					_deathBackdropAlpha = num;
				}
				((Graphic)_deathBackdrop).color = new Color(0f, 0f, 0f, _deathBackdropAlpha);
				UpdateCanvasActive();
			}
		}

		private static Sprite MakeDamageVignetteSprite()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Expected O, but got Unknown
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			Texture2D val = new Texture2D(256, 256, (TextureFormat)4, false)
			{
				name = "VR Damage Vignette Gradient",
				hideFlags = (HideFlags)61,
				wrapMode = (TextureWrapMode)1
			};
			for (int i = 0; i < 256; i++)
			{
				for (int j = 0; j < 256; j++)
				{
					float num = ((float)j + 0.5f) / 256f * 2f - 1f;
					float num2 = ((float)i + 0.5f) / 256f * 2f - 1f;
					float num3 = Mathf.Clamp01((Mathf.Sqrt(num * num + num2 * num2) - 0.55f) / 0.75f);
					float num4 = num3 * num3 * (3f - 2f * num3);
					val.SetPixel(j, i, new Color(0f, 0f, 0f, num4));
				}
			}
			val.Apply();
			return Sprite.Create(val, new Rect(0f, 0f, 256f, 256f), new Vector2(0.5f, 0.5f));
		}

		private void Apply(float intensity, Color color)
		{
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)_img == (Object)null) && !((Object)(object)_canvas == (Object)null))
			{
				float num = Mathf.Clamp01(intensity * _alphaMul);
				((Graphic)_img).color = new Color(color.r, color.g, color.b, num);
				UpdateCanvasActive();
			}
		}

		[HarmonyPostfix]
		[HarmonyPatch("UpdateVignette")]
		private static void OnUpdateVignette(float intensity, Color color)
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			if (Plugin.VREnabled && (Object)(object)Instance != (Object)null)
			{
				Instance.Apply(intensity, color);
			}
		}
	}
	public class VRDesktopMirror : MonoBehaviour
	{
		private Camera _mirrorCam;

		private RenderTexture _rt;

		public static VRDesktopMirror Instance { get; private set; }

		public static void Create()
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Expected O, but got Unknown
			if (!((Object)(object)Instance != (Object)null))
			{
				GameObject val = new GameObject("HowToFishVR DesktopMirror");
				Object.DontDestroyOnLoad((Object)val);
				Instance = val.AddComponent<VRDesktopMirror>();
			}
		}

		private void Awake()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Expected O, but got Unknown
			//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Expected O, but got Unknown
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0125: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_0130: Unknown result type (might be due to invalid IL or missing references)
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_013b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0171: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				_rt = new RenderTexture(1280, 720, 24)
				{
					name = "HowToFishVR DesktopMirror RT"
				};
				GameObject val = new GameObject("HowToFishVR DesktopMirrorCam");
				val.transform.SetParent(((Component)this).transform, false);
				_mirrorCam = val.AddComponent<Camera>();
				_mirrorCam.targetTexture = _rt;
				((Behaviour)_mirrorCam).enabled = true;
				_mirrorCam.depth = -100f;
				_mirrorCam.stereoTargetEye = (StereoTargetEyeMask)0;
				try
				{
					UniversalAdditionalCameraData universalAdditionalCameraData = CameraExtensions.GetUniversalAdditionalCameraData(_mirrorCam);
					if ((Object)(object)universalAdditionalCameraData != (Object)null)
					{
						universalAdditionalCameraData.allowXRRendering = false;
						universalAdditionalCameraData.renderPostProcessing = false;
					}
				}
				catch
				{
				}
				GameObject val2 = new GameObject("HowToFishVR DesktopMirrorCanvas");
				val2.transform.SetParent(((Component)this).transform, false);
				Canvas obj2 = val2.AddComponent<Canvas>();
				obj2.renderMode = (RenderMode)0;
				obj2.sortingOrder = -1000;
				GameObject val3 = new GameObject("Mirror", new Type[1] { typeof(RectTransform) });
				val3.transform.SetParent(val2.transform, false);
				RectTransform val4 = (RectTransform)val3.transform;
				val4.anchorMin = Vector2.zero;
				val4.anchorMax = Vector2.one;
				val4.offsetMin = Vector2.zero;
				val4.offsetMax = Vector2.zero;
				RawImage obj3 = val3.AddComponent<RawImage>();
				obj3.texture = (Texture)(object)_rt;
				((Graphic)obj3).raycastTarget = false;
				obj3.uvRect = new Rect(0f, 0f, 1f, 1f);
			}
			catch
			{
			}
		}

		public void SyncToViewCamera()
		{
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				if (!((Object)(object)_mirrorCam == (Object)null) && !((Object)(object)_rt == (Object)null))
				{
					Camera viewCamera = GetViewCamera();
					if (!((Object)(object)viewCamera == (Object)null))
					{
						((Component)_mirrorCam).transform.SetPositionAndRotation(((Component)viewCamera).transform.position, ((Component)viewCamera).transform.rotation);
						_mirrorCam.cullingMask = viewCamera.cullingMask;
						_mirrorCam.fieldOfView = viewCamera.fieldOfView;
						_mirrorCam.nearClipPlane = viewCamera.nearClipPlane;
						_mirrorCam.farClipPlane = viewCamera.farClipPlane;
					}
				}
			}
			catch
			{
			}
		}

		private static Camera GetViewCamera()
		{
			try
			{
				Player localPlayer = Player.LocalPlayer;
				if ((Object)(object)localPlayer != (Object)null && (Object)(object)localPlayer.Camera != (Object)null && (Object)(object)localPlayer.Camera.Cam != (Object)null && ((Behaviour)localPlayer.Camera.Cam).isActiveAndEnabled)
				{
					return localPlayer.Camera.Cam;
				}
			}
			catch
			{
			}
			Camera[] allCameras = Camera.allCameras;
			foreach (Camera val in allCameras)
			{
				if ((Object)(object)val != (Object)null && ((Behaviour)val).isActiveAndEnabled && (Object)(object)val.targetTexture == (Object)null)
				{
					return val;
				}
			}
			return null;
		}

		private void OnDestroy()
		{
			try
			{
				if ((Object)(object)_rt != (Object)null)
				{
					_rt.Release();
				}
			}
			catch
			{
			}
		}
	}
	[DefaultExecutionOrder(-500)]
	public class VRHeldItem : MonoBehaviour
	{
		private static Item _lastHeld;

		private static readonly List<Rigidbody> _frozen = new List<Rigidbody>();

		private static bool _fishTwoHand;

		private static Item _supportLatchItem;

		private const float FishLatchRadius = 0.3f;

		private static bool _revivePinned;

		private static Vector3 _reviveOffset;

		private static Quaternion _reviveRotOffset;

		private static Explosive _lighterGripItem;

		private static Vector3 _lighterFromHandPos;

		private static Quaternion _lighterFromHandRot = Quaternion.identity;

		private static bool _lighterFromHandValid;

		public static bool FishTwoHand => _fishTwoHand;

		public static void Create()
		{
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Expected O, but got Unknown
			GameObject val = new GameObject("HowToFishVR HeldItem");
			Object.DontDestroyOnLoad((Object)val);
			val.AddComponent<VRHeldItem>();
		}

		private void LateUpdate()
		{
			Pose();
		}

		private static void RestoreLastHeld()
		{
			if ((Object)(object)_lastHeld == (Object)null && _frozen.Count == 0)
			{
				return;
			}
			for (int i = 0; i < _frozen.Count; i++)
			{
				try
				{
					if ((Object)(object)_frozen[i] != (Object)null && _frozen[i].isKinematic)
					{
						_frozen[i].isKinematic = false;
					}
				}
				catch
				{
				}
			}
			_frozen.Clear();
			_lastHeld = null;
		}

		private static void ClearSupportHandLatch()
		{
			_fishTwoHand = false;
			_supportLatchItem = null;
		}

		private static void FreezeWholeItem(Item held)
		{
			//IL_0038: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			_frozen.Clear();
			Rigidbody[] array = null;
			try
			{
				array = ((Component)held).GetComponentsInChildren<Rigidbody>(true);
			}
			catch
			{
			}
			if (array != null)
			{
				Rigidbody[] array2 = array;
				foreach (Rigidbody val in array2)
				{
					if (!((Object)(object)val == (Object)null) && !val.isKinematic)
					{
						val.linearVelocity = Vector3.zero;
						val.angularVelocity = Vector3.zero;
						val.isKinematic = true;
						_frozen.Add(val);
					}
				}
			}
			else if ((Object)(object)held.Rig != (Object)null && !held.Rig.isKinematic)
			{
				held.Rig.isKinematic = true;
				_frozen.Add(held.Rig);
			}
		}

		private static void FreezeRig(Rigidbody rb)
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			if (!((Object)(object)rb == (Object)null))
			{
				if (!rb.isKinematic)
				{
					rb.linearVelocity = Vector3.zero;
					rb.angularVelocity = Vector3.zero;
				}
				rb.isKinematic = true;
			}
		}

		private static bool TryGetHandPoseLocal(Item held, HandTransforms ht, out Vector3 localPos, out Quaternion localRot)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0062: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			localPos = default(Vector3);
			localRot = Quaternion.identity;
			if ((Object)(object)held == (Object)null || ht == null || !ht.Exists)
			{
				return false;
			}
			try
			{
				Transform obj = (((Object)(object)ht.Parent != (Object)null) ? ht.Parent : ((Component)held).transform);
				Vector3 val = obj.TransformPoint(ht.HandPos);
				Quaternion val2 = obj.rotation * ht.HandRot;
				localPos = ((Component)held).transform.InverseTransformPoint(val);
				localRot = Quaternion.Inverse(((Component)held).transform.rotation) * val2;
				return true;
			}
			catch
			{
				return false;
			}
		}

		private void Pose()
		{
			//IL_027a: Unknown result type (might be due to invalid IL or missing references)
			//IL_027c: Unknown result type (might be due to invalid IL or missing references)
			//IL_027e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0280: Unknown result type (might be due to invalid IL or missing references)
			//IL_0238: Unknown result type (might be due to invalid IL or missing references)
			//IL_023d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0242: Unknown result type (might be due to invalid IL or missing references)
			//IL_0249: Unknown result type (might be due to invalid IL or missing references)
			//IL_024e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0253: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0200: Unknown result type (might be due to invalid IL or missing references)
			//IL_0205: Unknown result type (might be due to invalid IL or missing references)
			//IL_020a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0211: Unknown result type (might be due to invalid IL or missing references)
			//IL_0216: Unknown result type (might be due to invalid IL or missing references)
			//IL_0221: Unknown result type (might be due to invalid IL or missing references)
			//IL_0226: Unknown result type (might be due to invalid IL or missing references)
			//IL_022b: Unknown result type (might be due to invalid IL or missing references)
			//IL_028e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0293: Unknown result type (might be due to invalid IL or missing references)
			//IL_0297: Unknown result type (might be due to invalid IL or missing references)
			//IL_029c: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_0335: Unknown result type (might be due to invalid IL or missing references)
			//IL_033c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0350: Unknown result type (might be due to invalid IL or missing references)
			//IL_0355: Unknown result type (might be due to invalid IL or missing references)
			//IL_035a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0361: Unknown result type (might be due to invalid IL or missing references)
			//IL_02db: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0300: Unknown result type (might be due to invalid IL or missing references)
			//IL_0305: Unknown result type (might be due to invalid IL or missing references)
			//IL_0307: Unknown result type (might be due to invalid IL or missing references)
			//IL_0309: Unknown result type (might be due to invalid IL or missing references)
			//IL_030e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0313: Unknown result type (might be due to invalid IL or missing references)
			//IL_031b: Unknown result type (might be due to invalid IL or missing references)
			//IL_031d: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				if (!Plugin.HeadsetActive)
				{
					RestoreLastHeld();
					ClearSupportHandLatch();
					return;
				}
				VRRig instance = VRRig.Instance;
				if ((Object)(object)instance == (Object)null || (Object)(object)instance.RightHand == (Object)null || (Object)(object)instance.LeftHand == (Object)null)
				{
					RestoreLastHeld();
					ClearSupportHandLatch();
					return;
				}
				Player val = null;
				try
				{
					val = Player.LocalPlayer;
				}
				catch
				{
				}
				if ((Object)(object)val == (Object)null)
				{
					RestoreLastHeld();
					ClearSupportHandLatch();
					return;
				}
				try
				{
					if (Boat.IsDrivingLocally)
					{
						RestoreLastHeld();
						ClearSupportHandLatch();
						return;
					}
				}
				catch
				{
				}
				Item val2 = null;
				try
				{
					val2 = (((Object)(object)val.Holding != (Object)null) ? val.Holding.HeldItem : null);
				}
				catch
				{
				}
				if ((Object)(object)val2 == (Object)null)
				{
					RestoreLastHeld();
					ClearSupportHandLatch();
					return;
				}
				if (val2 is Tool)
				{
					RestoreLastHeld();
					ClearSupportHandLatch();
					return;
				}
				if ((Object)(object)((Component)val2).transform == (Object)null)
				{
					RestoreLastHeld();
					ClearSupportHandLatch();
					return;
				}
				if (HeldItemHoldPatches.ShouldHandHold(val.Holding))
				{
					RestoreLastHeld();
					_lastHeld = null;
					if ((Object)(object)_supportLatchItem != (Object)(object)val2)
					{
						_fishTwoHand = false;
						_supportLatchItem = val2;
					}
					UpdateFishTwoHand(instance, val2);
					return;
				}
				ClearSupportHandLatch();
				if ((Object)(object)val2 != (Object)(object)_lastHeld)
				{
					RestoreLastHeld();
					_fishTwoHand = false;
					FreezeWholeItem(val2);
					_lastHeld = val2;
				}
				_ = (Object)(object)val2.HandModelRight != (Object)null;
				_ = (Object)(object)val2.HandModelLeft != (Object)null;
				Vector3 localPos;
				Quaternion localRot;
				bool flag = TryGetHandPoseLocal(val2, val2.HandTransformsRight, out localPos, out localRot);
				TryGetHandPoseLocal(val2, val2.HandTransformsLeft, out var _, out var _);
				bool flag2 = false;
				try
				{
					flag2 = ((DeadPlayer)(((val2 is DeadPlayer) ? val2 : null)?))._isResurrecting ?? false;
				}
				catch
				{
				}
				Transform mainHand = instance.MainHand;
				if ((Object)(object)mainHand == (Object)null)
				{
					RestoreLastHeld();
					return;
				}
				if (flag2)
				{
					if (!_revivePinned)
					{
						_revivePinned = true;
						_reviveOffset = ((Component)val2).transform.position - mainHand.position;
						_reviveRotOffset = Quaternion.Inverse(mainHand.rotation) * ((Component)val2).transform.rotation;
					}
					((Component)val2).transform.SetPositionAndRotation(mainHand.position + _reviveOffset, mainHand.rotation * _reviveRotOffset);
					PinExplosiveLighter(instance, val2);
					return;
				}
				_revivePinned = false;
				try
				{
					Transform handModelRight = val2.HandModelRight;
					bool flag3 = flag;
					Vector3 val3 = localPos;
					Quaternion val4 = localRot;
					if ((Object)(object)handModelRight != (Object)null)
					{
						Quaternion rotation = mainHand.rotation;
						Vector3 val5 = mainHand.position - rotation * ((Component)val2).transform.InverseTransformPoint(handModelRight.position);
						((Component)val2).transform.SetPositionAndRotation(val5, rotation);
						PinExplosiveLighter(instance, val2);
						return;
					}
					if (flag3)
					{
						Quaternion rightGripOffset = PlayerHandsPatches.RightGripOffset;
						Quaternion val6 = mainHand.rotation * rightGripOffset * Quaternion.Inverse(val4);
						Vector3 val7 = mainHand.position - val6 * val3;
						((Component)val2).transform.SetPositionAndRotation(val7, val6);
						PinExplosiveLighter(instance, val2);
						return;
					}
					((Component)val2).transform.SetPositionAndRotation(mainHand.position + mainHand.rotation * new Vector3(0f, -0.06f, 0.2f), mainHand.rotation);
				}
				catch
				{
				}
				PinExplosiveLighter(instance, val2);
			}
			catch
			{
			}
		}

		private static void PinExplosiveLighter(VRRig rig, Item held)
		{
			//IL_01d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_019a: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_01af: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0103: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0118: Unknown result type (might be due to invalid IL or missing references)
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0133: Unknown result type (might be due to invalid IL or missing references)
			//IL_0138: Unknown result type (might be due to invalid IL or missing references)
			//IL_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0150: Unknown result type (might be due to invalid IL or missing references)
			//IL_0155: Unknown result type (might be due to invalid IL or missing references)
			//IL_0157: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Unknown result type (might be due to invalid IL or missing references)
			//IL_015d: Unknown result type (might be due to invalid IL or missing references)
			//IL_015f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0161: Unknown result type (might be due to invalid IL or missing references)
			//IL_0166: Unknown result type (might be due to invalid IL or missing references)
			//IL_016b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0170: Unknown result type (might be due to invalid IL or missing references)
			//IL_0175: Unknown result type (might be due to invalid IL or missing references)
			//IL_0177: Unknown result type (might be due to invalid IL or missing references)
			//IL_017c: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				Explosive val = (Explosive)(object)((held is Explosive) ? held : null);
				if (val == null || (Object)(object)val._lighter == (Object)null || !((Component)val._lighter).gameObject.activeInHierarchy || val._isActivated || val._lighterPickupPercent < 1f)
				{
					return;
				}
				Player localPlayer = Player.LocalPlayer;
				PlayerHands val2 = (((Object)(object)localPlayer != (Object)null) ? localPlayer.Hands : null);
				if ((Object)(object)val2 == (Object)null)
				{
					return;
				}
				Transform handBoneLeft = val2.HandBoneLeft;
				if ((Object)(object)handBoneLeft == (Object)null)
				{
					return;
				}
				if ((Object)(object)_lighterGripItem != (Object)(object)val)
				{
					_lighterGripItem = val;
					_lighterFromHandValid = false;
				}
				if (!_lighterFromHandValid)
				{
					try
					{
						HandTransforms handTransformsLeft = ((Item)val).HandTransformsLeft;
						if (handTransformsLeft != null && handTransformsLeft.Exists && (Object)(object)handTransformsLeft.Parent != (Object)null && (Object)(object)val._lighter.parent != (Object)null)
						{
							Vector3 val3 = handTransformsLeft.Parent.TransformPoint(handTransformsLeft.HandPos);
							Quaternion val4 = handTransformsLeft.Parent.rotation * handTransformsLeft.HandRot;
							Vector3 val5 = val._lighter.parent.TransformPoint(val._lighterOrigPos);
							Quaternion val6 = val._lighter.parent.rotation * val._lighterOrigRot;
							_lighterFromHandPos = Quaternion.Inverse(val4) * (val5 - val3);
							_lighterFromHandRot = Quaternion.Inverse(val4) * val6;
							_lighterFromHandValid = true;
						}
					}
					catch
					{
					}
				}
				if (_lighterFromHandValid)
				{
					val._lighter.SetPositionAndRotation(handBoneLeft.position + handBoneLeft.rotation * _lighterFromHandPos, handBoneLeft.rotation * _lighterFromHandRot);
				}
				else
				{
					val._lighter.SetPositionAndRotation(handBoneLeft.position, handBoneLeft.rotation);
				}
			}
			catch
			{
			}
		}

		private static void UpdateFishTwoHand(VRRig rig, Item held)
		{
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				if (held is Fish || (Object)(object)held.Fish != (Object)null)
				{
					_fishTwoHand = false;
					return;
				}
				Transform leftHand = rig.LeftHand;
				if ((Object)(object)leftHand == (Object)null || (Object)(object)leftHand == (Object)(object)rig.MainHand)
				{
					_fishTwoHand = false;
					return;
				}
				bool flag = VRActions.Instance.LeftGrip.ReadValue<float>() >= VRConfig.GripThreshold.Value;
				bool flag2 = false;
				Vector3 val;
				if ((Object)(object)held.HandModelLeft != (Object)null)
				{
					val = held.HandModelLeft.position;
					flag2 = true;
				}
				else if (held.HandTransformsLeft != null && held.HandTransformsLeft.Exists && (Object)(object)held.HandTransformsLeft.Parent != (Object)null)
				{
					val = held.HandTransformsLeft.Parent.TransformPoint(held.HandTransformsLeft.HandPos);
					flag2 = true;
				}
				else
				{
					val = leftHand.position;
				}
				if (!flag2)
				{
					_fishTwoHand = false;
				}
				else if (!_fishTwoHand)
				{
					if (flag && Vector3.Distance(leftHand.position, val) <= 0.3f)
					{
						_fishTwoHand = true;
					}
				}
				else if (!flag)
				{
					_fishTwoHand = false;
				}
			}
			catch
			{
			}
		}
	}
	[DefaultExecutionOrder(-1000)]
	public class VRRig : MonoBehaviour
	{
		public float YawOffset;

		public float GameEyeHeight = 1.5f;

		private bool _snapReady = true;

		private float _invScrollCd;

		private bool _calibrated;

		private Vector3 _headCalib;

		private float _yHoldTime;

		private Vector3 _lastHead;

		private bool _lastHeadValid;

		private Vector3 _roomOffset;

		private Vector2 _lastHmdPlanar;

		private bool _planarInit;

		private bool _needsReanchor;

		private bool _wasDead;

		private Vector3 _deathAnchor;

		private bool _setGameView;

		private bool _gameHeightSet;

		private bool _sprintToggle;

		private bool _crouchToggle;

		private bool _physCrouch;

		private const float PhysCrouchEngageDrop = 0.22f;

		private const float PhysCrouchReleaseDrop = 0.14f;

		private Boat _drivingBoat;

		private float _lastBoatYaw;

		private bool _boatYawInit;

		public static VRRig Instance { get; private set; }

		public Transform Root { get; private set; }

		public Transform Head { get; private set; }

		public Transform LeftHand { get; private set; }

		public Transform RightHand { get; private set; }

		public Transform MainHand => RightHand;

		public Transform OffHand => LeftHand;

		public bool SnapTurned { get; private set; }

		public float SnapTurnYaw { get; private set; }

		public bool IsCalibrated => _calibrated;

		public Vector3 HeadCalib => _headCalib;

		public static void Create()
		{
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Expected O, but got Unknown
			if (!((Object)(object)Instance != (Object)null))
			{
				GameObject val = new GameObject("HowToFishVR Rig");
				Object.DontDestroyOnLoad((Object)val);
				Instance = val.AddComponent<VRRig>();
				Instance.Build();
			}
		}

		private void Build()
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			Root = ((Component)this).transform;
			Head = new GameObject("Head").transform;
			LeftHand = new GameObject("LeftHand").transform;
			RightHand = new GameObject("RightHand").transform;
			Head.SetParent(Root, false);
			LeftHand.SetParent(Root, false);
			RightHand.SetP

BepInEx/plugins/HowToFishXR/Unity.XR.CoreUtils.dll

Decompiled 7 hours ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using Unity.Collections;
using Unity.XR.CoreUtils.Bindings.Variables;
using Unity.XR.CoreUtils.Collections;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.InputSystem.XR;
using UnityEngine.SceneManagement;
using UnityEngine.Serialization;
using UnityEngine.SpatialTracking;
using UnityEngine.UI;
using UnityEngine.XR;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		return new MonoScriptData
		{
			FilePathsData = new byte[7319]
			{
				0, 0, 0, 1, 0, 0, 0, 106, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
				105, 108, 115, 64, 50, 46, 53, 46, 50, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 65, 82,
				84, 114, 97, 99, 107, 97, 98, 108, 101, 115,
				80, 97, 114, 101, 110, 116, 84, 114, 97, 110,
				115, 102, 111, 114, 109, 67, 104, 97, 110, 103,
				101, 100, 69, 118, 101, 110, 116, 65, 114, 103,
				115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 94, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 99, 111, 114,
				101, 45, 117, 116, 105, 108, 115, 64, 50, 46,
				53, 46, 50, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 65, 116, 116, 114, 105, 98, 117, 116,
				101, 115, 92, 69, 110, 117, 109, 68, 105, 115,
				112, 108, 97, 121, 65, 116, 116, 114, 105, 98,
				117, 116, 101, 46, 99, 115, 0, 0, 0, 1,
				0, 0, 0, 96, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 99,
				111, 114, 101, 45, 117, 116, 105, 108, 115, 64,
				50, 46, 53, 46, 50, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 65, 116, 116, 114, 105, 98,
				117, 116, 101, 115, 92, 70, 108, 97, 103, 115,
				80, 114, 111, 112, 101, 114, 116, 121, 65, 116,
				116, 114, 105, 98, 117, 116, 101, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 91, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
				105, 108, 115, 64, 50, 46, 53, 46, 50, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 65, 116,
				116, 114, 105, 98, 117, 116, 101, 115, 92, 82,
				101, 97, 100, 79, 110, 108, 121, 65, 116, 116,
				114, 105, 98, 117, 116, 101, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 105, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 99, 111, 114, 101, 45, 117, 116, 105,
				108, 115, 64, 50, 46, 53, 46, 50, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 65, 116, 116,
				114, 105, 98, 117, 116, 101, 115, 92, 83, 99,
				114, 105, 112, 116, 97, 98, 108, 101, 83, 101,
				116, 116, 105, 110, 103, 115, 80, 97, 116, 104,
				65, 116, 116, 114, 105, 98, 117, 116, 101, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 85,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 99, 111, 114, 101, 45,
				117, 116, 105, 108, 115, 64, 50, 46, 53, 46,
				50, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				66, 105, 110, 100, 105, 110, 103, 115, 92, 66,
				105, 110, 100, 105, 110, 103, 115, 71, 114, 111,
				117, 112, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 84, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
				114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
				46, 53, 46, 50, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 66, 105, 110, 100, 105, 110, 103,
				115, 92, 69, 118, 101, 110, 116, 66, 105, 110,
				100, 105, 110, 103, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 85, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
				64, 50, 46, 53, 46, 50, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 66, 105, 110, 100, 105,
				110, 103, 115, 92, 73, 69, 118, 101, 110, 116,
				66, 105, 110, 100, 105, 110, 103, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 94, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
				105, 108, 115, 64, 50, 46, 53, 46, 50, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 66, 105,
				110, 100, 105, 110, 103, 115, 92, 86, 97, 114,
				105, 97, 98, 108, 101, 115, 92, 66, 105, 110,
				100, 97, 98, 108, 101, 69, 110, 117, 109, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 98,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 99, 111, 114, 101, 45,
				117, 116, 105, 108, 115, 64, 50, 46, 53, 46,
				50, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				66, 105, 110, 100, 105, 110, 103, 115, 92, 86,
				97, 114, 105, 97, 98, 108, 101, 115, 92, 66,
				105, 110, 100, 97, 98, 108, 101, 86, 97, 114,
				105, 97, 98, 108, 101, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 103, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 99, 111, 114, 101, 45, 117, 116, 105, 108,
				115, 64, 50, 46, 53, 46, 50, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 66, 105, 110, 100,
				105, 110, 103, 115, 92, 86, 97, 114, 105, 97,
				98, 108, 101, 115, 92, 66, 105, 110, 100, 97,
				98, 108, 101, 86, 97, 114, 105, 97, 98, 108,
				101, 65, 108, 108, 111, 99, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 102, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 99, 111, 114, 101, 45, 117, 116, 105,
				108, 115, 64, 50, 46, 53, 46, 50, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 66, 105, 110,
				100, 105, 110, 103, 115, 92, 86, 97, 114, 105,
				97, 98, 108, 101, 115, 92, 66, 105, 110, 100,
				97, 98, 108, 101, 86, 97, 114, 105, 97, 98,
				108, 101, 66, 97, 115, 101, 46, 99, 115, 0,
				0, 0, 2, 0, 0, 0, 111, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 99, 111, 114, 101, 45, 117, 116, 105,
				108, 115, 64, 50, 46, 53, 46, 50, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 66, 105, 110,
				100, 105, 110, 103, 115, 92, 86, 97, 114, 105,
				97, 98, 108, 101, 115, 92, 66, 105, 110, 100,
				97, 98, 108, 101, 86, 97, 114, 105, 97, 98,
				108, 101, 84, 97, 115, 107, 80, 114, 101, 100,
				105, 99, 97, 116, 101, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 107, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 99, 111, 114, 101, 45, 117, 116, 105, 108,
				115, 64, 50, 46, 53, 46, 50, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 66, 105, 110, 100,
				105, 110, 103, 115, 92, 86, 97, 114, 105, 97,
				98, 108, 101, 115, 92, 73, 82, 101, 97, 100,
				79, 110, 108, 121, 66, 105, 110, 100, 97, 98,
				108, 101, 86, 97, 114, 105, 97, 98, 108, 101,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				74, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 99, 111, 114, 101,
				45, 117, 116, 105, 108, 115, 64, 50, 46, 53,
				46, 50, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 66, 111, 117, 110, 100, 115, 85, 116, 105,
				108, 115, 46, 99, 115, 0, 0, 0, 2, 0,
				0, 0, 84, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
				114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
				46, 53, 46, 50, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 67, 97, 99, 104, 101, 100, 67,
				111, 109, 112, 111, 110, 101, 110, 116, 70, 105,
				108, 116, 101, 114, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 98, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
				64, 50, 46, 53, 46, 50, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 67, 97, 112, 97, 98,
				105, 108, 105, 116, 121, 80, 114, 111, 102, 105,
				108, 101, 92, 67, 97, 112, 97, 98, 105, 108,
				105, 116, 121, 80, 114, 111, 102, 105, 108, 101,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				112, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 99, 111, 114, 101,
				45, 117, 116, 105, 108, 115, 64, 50, 46, 53,
				46, 50, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 67, 97, 112, 97, 98, 105, 108, 105, 116,
				121, 80, 114, 111, 102, 105, 108, 101, 92, 68,
				105, 99, 116, 105, 111, 110, 97, 114, 121, 92,
				67, 97, 112, 97, 98, 105, 108, 105, 116, 121,
				68, 105, 99, 116, 105, 111, 110, 97, 114, 121,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				120, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 99, 111, 114, 101,
				45, 117, 116, 105, 108, 115, 64, 50, 46, 53,
				46, 50, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 67, 97, 112, 97, 98, 105, 108, 105, 116,
				121, 80, 114, 111, 102, 105, 108, 101, 92, 68,
				105, 99, 116, 105, 111, 110, 97, 114, 121, 92,
				67, 117, 115, 116, 111, 109, 67, 97, 112, 97,
				98, 105, 108, 105, 116, 121, 75, 101, 121, 65,
				116, 116, 114, 105, 98, 117, 116, 101, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 111, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
				116, 105, 108, 115, 64, 50, 46, 53, 46, 50,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 67,
				97, 112, 97, 98, 105, 108, 105, 116, 121, 80,
				114, 111, 102, 105, 108, 101, 92, 68, 105, 99,
				116, 105, 111, 110, 97, 114, 121, 92, 73, 67,
				97, 112, 97, 98, 105, 108, 105, 116, 121, 77,
				111, 100, 105, 102, 105, 101, 114, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 114, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
				105, 108, 115, 64, 50, 46, 53, 46, 50, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 67, 97,
				112, 97, 98, 105, 108, 105, 116, 121, 80, 114,
				111, 102, 105, 108, 101, 92, 68, 105, 99, 116,
				105, 111, 110, 97, 114, 121, 92, 83, 116, 97,
				110, 100, 97, 114, 100, 67, 97, 112, 97, 98,
				105, 108, 105, 116, 121, 75, 101, 121, 115, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 77,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 99, 111, 114, 101, 45,
				117, 116, 105, 108, 115, 64, 50, 46, 53, 46,
				50, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				67, 111, 108, 108, 101, 99, 116, 105, 111, 110,
				80, 111, 111, 108, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 86, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
				64, 50, 46, 53, 46, 50, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 67, 111, 108, 108, 101,
				99, 116, 105, 111, 110, 115, 92, 72, 97, 115,
				104, 83, 101, 116, 76, 105, 115, 116, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 87, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
				116, 105, 108, 115, 64, 50, 46, 53, 46, 50,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 67,
				111, 108, 108, 101, 99, 116, 105, 111, 110, 115,
				92, 82, 101, 97, 100, 79, 110, 108, 121, 76,
				105, 115, 116, 46, 99, 115, 0, 0, 0, 2,
				0, 0, 0, 91, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 99,
				111, 114, 101, 45, 117, 116, 105, 108, 115, 64,
				50, 46, 53, 46, 50, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 67, 111, 108, 108, 101, 99,
				116, 105, 111, 110, 115, 92, 82, 101, 97, 100,
				79, 110, 108, 121, 76, 105, 115, 116, 83, 112,
				97, 110, 46, 99, 115, 0, 0, 0, 2, 0,
				0, 0, 97, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
				114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
				46, 53, 46, 50, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 67, 111, 108, 108, 101, 99, 116,
				105, 111, 110, 115, 92, 83, 101, 114, 105, 97,
				108, 105, 122, 97, 98, 108, 101, 68, 105, 99,
				116, 105, 111, 110, 97, 114, 121, 46, 99, 115,
				0, 0, 0, 2, 0, 0, 0, 77, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
				105, 108, 115, 64, 50, 46, 53, 46, 50, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 67, 111,
				109, 112, 111, 110, 101, 110, 116, 85, 116, 105,
				108, 115, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 89, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
				114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
				46, 53, 46, 50, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 68, 97, 116, 117, 109, 115, 92,
				65, 110, 105, 109, 97, 116, 105, 111, 110, 67,
				117, 114, 118, 101, 68, 97, 116, 117, 109, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 97,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 99, 111, 114, 101, 45,
				117, 116, 105, 108, 115, 64, 50, 46, 53, 46,
				50, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				68, 97, 116, 117, 109, 115, 92, 65, 110, 105,
				109, 97, 116, 105, 111, 110, 67, 117, 114, 118,
				101, 68, 97, 116, 117, 109, 80, 114, 111, 112,
				101, 114, 116, 121, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 75, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
				64, 50, 46, 53, 46, 50, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 68, 97, 116, 117, 109,
				115, 92, 68, 97, 116, 117, 109, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 83, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
				105, 108, 115, 64, 50, 46, 53, 46, 50, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 68, 97,
				116, 117, 109, 115, 92, 68, 97, 116, 117, 109,
				80, 114, 111, 112, 101, 114, 116, 121, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 80, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
				116, 105, 108, 115, 64, 50, 46, 53, 46, 50,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 68,
				97, 116, 117, 109, 115, 92, 70, 108, 111, 97,
				116, 68, 97, 116, 117, 109, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 88, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 99, 111, 114, 101, 45, 117, 116, 105,
				108, 115, 64, 50, 46, 53, 46, 50, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 68, 97, 116,
				117, 109, 115, 92, 70, 108, 111, 97, 116, 68,
				97, 116, 117, 109, 80, 114, 111, 112, 101, 114,
				116, 121, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 78, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
				114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
				46, 53, 46, 50, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 68, 97, 116, 117, 109, 115, 92,
				73, 110, 116, 68, 97, 116, 117, 109, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 86, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
				116, 105, 108, 115, 64, 50, 46, 53, 46, 50,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 68,
				97, 116, 117, 109, 115, 92, 73, 110, 116, 68,
				97, 116, 117, 109, 80, 114, 111, 112, 101, 114,
				116, 121, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 81, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
				114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
				46, 53, 46, 50, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 68, 97, 116, 117, 109, 115, 92,
				83, 116, 114, 105, 110, 103, 68, 97, 116, 117,
				109, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 89, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 99, 111, 114,
				101, 45, 117, 116, 105, 108, 115, 64, 50, 46,
				53, 46, 50, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 68, 97, 116, 117, 109, 115, 92, 83,
				116, 114, 105, 110, 103, 68, 97, 116, 117, 109,
				80, 114, 111, 112, 101, 114, 116, 121, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 73, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
				116, 105, 108, 115, 64, 50, 46, 53, 46, 50,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 69,
				110, 117, 109, 86, 97, 108, 117, 101, 115, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 90,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 99, 111, 114, 101, 45,
				117, 116, 105, 108, 115, 64, 50, 46, 53, 46,
				50, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
				92, 66, 111, 117, 110, 100, 115, 69, 120, 116,
				101, 110, 115, 105, 111, 110, 115, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 90, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
				105, 108, 115, 64, 50, 46, 53, 46, 50, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 69, 120,
				116, 101, 110, 115, 105, 111, 110, 115, 92, 67,
				97, 109, 101, 114, 97, 69, 120, 116, 101, 110,
				115, 105, 111, 110, 115, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 94, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 99, 111, 114, 101, 45, 117, 116, 105, 108,
				115, 64, 50, 46, 53, 46, 50, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 69, 120, 116, 101,
				110, 115, 105, 111, 110, 115, 92, 67, 111, 108,
				108, 101, 99, 116, 105, 111, 110, 69, 120, 116,
				101, 110, 115, 105, 111, 110, 115, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 94, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
				105, 108, 115, 64, 50, 46, 53, 46, 50, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 69, 120,
				116, 101, 110, 115, 105, 111, 110, 115, 92, 68,
				105, 99, 116, 105, 111, 110, 97, 114, 121, 69,
				120, 116, 101, 110, 115, 105, 111, 110, 115, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 94,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 99, 111, 114, 101, 45,
				117, 116, 105, 108, 115, 64, 50, 46, 53, 46,
				50, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
				92, 71, 97, 109, 101, 79, 98, 106, 101, 99,
				116, 69, 120, 116, 101, 110, 115, 105, 111, 110,
				115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 88, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 99, 111, 114,
				101, 45, 117, 116, 105, 108, 115, 64, 50, 46,
				53, 46, 50, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 69, 120, 116, 101, 110, 115, 105, 111,
				110, 115, 92, 71, 117, 105, 100, 69, 120, 116,
				101, 110, 115, 105, 111, 110, 115, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 91, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
				105, 108, 115, 64, 50, 46, 53, 46, 50, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 69, 120,
				116, 101, 110, 115, 105, 111, 110, 115, 92, 72,
				97, 115, 104, 83, 101, 116, 69, 120, 116, 101,
				110, 115, 105, 111, 110, 115, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 93, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 99, 111, 114, 101, 45, 117, 116, 105,
				108, 115, 64, 50, 46, 53, 46, 50, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 69, 120, 116,
				101, 110, 115, 105, 111, 110, 115, 92, 76, 97,
				121, 101, 114, 77, 97, 115, 107, 69, 120, 116,
				101, 110, 115, 105, 111, 110, 115, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 88, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
				105, 108, 115, 64, 50, 46, 53, 46, 50, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 69, 120,
				116, 101, 110, 115, 105, 111, 110, 115, 92, 76,
				105, 115, 116, 69, 120, 116, 101, 110, 115, 105,
				111, 110, 115, 46, 99, 115, 0, 0, 0, 1,
				0, 0, 0, 97, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 99,
				111, 114, 101, 45, 117, 116, 105, 108, 115, 64,
				50, 46, 53, 46, 50, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 69, 120, 116, 101, 110, 115,
				105, 111, 110, 115, 92, 77, 111, 110, 111, 66,
				101, 104, 97, 118, 105, 111, 117, 114, 69, 120,
				116, 101, 110, 115, 105, 111, 110, 115, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 88, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
				116, 105, 108, 115, 64, 50, 46, 53, 46, 50,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 69,
				120, 116, 101, 110, 115, 105, 111, 110, 115, 92,
				80, 111, 115, 101, 69, 120, 116, 101, 110, 115,
				105, 111, 110, 115, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 94, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
				64, 50, 46, 53, 46, 50, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 69, 120, 116, 101, 110,
				115, 105, 111, 110, 115, 92, 81, 117, 97, 116,
				101, 114, 110, 105, 111, 110, 69, 120, 116, 101,
				110, 115, 105, 111, 110, 115, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 93, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 99, 111, 114, 101, 45, 117, 116, 105,
				108, 115, 64, 50, 46, 53, 46, 50, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 69, 120, 116,
				101, 110, 115, 105, 111, 110, 115, 92, 83, 116,
				111, 112, 119, 97, 116, 99, 104, 69, 120, 116,
				101, 110, 115, 105, 111, 110, 115, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 90, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
				105, 108, 115, 64, 50, 46, 53, 46, 50, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 69, 120,
				116, 101, 110, 115, 105, 111, 110, 115, 92, 83,
				116, 114, 105, 110, 103, 69, 120, 116, 101, 110,
				115, 105, 111, 110, 115, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 93, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 99, 111, 114, 101, 45, 117, 116, 105, 108,
				115, 64, 50, 46, 53, 46, 50, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 69, 120, 116, 101,
				110, 115, 105, 111, 110, 115, 92, 84, 114, 97,
				110, 115, 102, 111, 114, 109, 69, 120, 116, 101,
				110, 115, 105, 111, 110, 115, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 88, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 99, 111, 114, 101, 45, 117, 116, 105,
				108, 115, 64, 50, 46, 53, 46, 50, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 69, 120, 116,
				101, 110, 115, 105, 111, 110, 115, 92, 84, 121,
				112, 101, 69, 120, 116, 101, 110, 115, 105, 111,
				110, 115, 46, 99, 115, 0, 0, 0, 9, 0,
				0, 0, 94, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
				114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
				46, 53, 46, 50, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 69, 120, 116, 101, 110, 115, 105,
				111, 110, 115, 92, 85, 110, 105, 116, 121, 69,
				118, 101, 110, 116, 69, 120, 116, 101, 110, 115,
				105, 111, 110, 115, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 91, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
				64, 50, 46, 53, 46, 50, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 69, 120, 116, 101, 110,
				115, 105, 111, 110, 115, 92, 86, 101, 99, 116,
				111, 114, 50, 69, 120, 116, 101, 110, 115, 105,
				111, 110, 115, 46, 99, 115, 0, 0, 0, 1,
				0, 0, 0, 91, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 99,
				111, 114, 101, 45, 117, 116, 105, 108, 115, 64,
				50, 46, 53, 46, 50, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 69, 120, 116, 101, 110, 115,
				105, 111, 110, 115, 92, 86, 101, 99, 116, 111,
				114, 51, 69, 120, 116, 101, 110, 115, 105, 111,
				110, 115, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 78, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
				114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
				46, 53, 46, 50, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 71, 97, 109, 101, 79, 98, 106,
				101, 99, 116, 85, 116, 105, 108, 115, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 76, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
				116, 105, 108, 115, 64, 50, 46, 53, 46, 50,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 71,
				101, 111, 109, 101, 116, 114, 121, 85, 116, 105,
				108, 115, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 71, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
				114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
				46, 53, 46, 50, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 71, 117, 105, 100, 85, 116, 105,
				108, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 75, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 99, 111, 114,
				101, 45, 117, 116, 105, 108, 115, 64, 50, 46,
				53, 46, 50, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 72, 97, 115, 104, 67, 111, 100, 101,
				85, 116, 105, 108, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 76, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
				64, 50, 46, 53, 46, 50, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 77, 97, 116, 101, 114,
				105, 97, 108, 85, 116, 105, 108, 115, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 74, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
				116, 105, 108, 115, 64, 50, 46, 53, 46, 50,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 77,
				97, 116, 104, 85, 116, 105, 108, 105, 116, 121,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				79, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 99, 111, 114, 101,
				45, 117, 116, 105, 108, 115, 64, 50, 46, 53,
				46, 50, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 78, 97, 116, 105, 118, 101, 65, 114, 114,
				97, 121, 85, 116, 105, 108, 115, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 73, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
				105, 108, 115, 64, 50, 46, 53, 46, 50, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 79, 98,
				106, 101, 99, 116, 80, 111, 111, 108, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 80, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 99, 111, 114, 101, 45, 117,
				116, 105, 108, 115, 64, 50, 46, 53, 46, 50,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 79,
				110, 68, 101, 115, 116, 114, 111, 121, 78, 111,
				116, 105, 102, 105, 101, 114, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 78, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 99, 111, 114, 101, 45, 117, 116, 105,
				108, 115, 64, 50, 46, 53, 46, 50, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 82, 101, 102,
				108, 101, 99, 116, 105, 111, 110, 85, 116, 105,
				108, 115, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 81, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
				114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
				46, 53, 46, 50, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 83, 99, 114, 105, 112, 116, 97,
				98, 108, 101, 83, 101, 116, 116, 105, 110, 103,
				115, 46, 99, 115, 0, 0, 0, 2, 0, 0,
				0, 85, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 99, 111, 114,
				101, 45, 117, 116, 105, 108, 115, 64, 50, 46,
				53, 46, 50, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 83, 99, 114, 105, 112, 116, 97, 98,
				108, 101, 83, 101, 116, 116, 105, 110, 103, 115,
				66, 97, 115, 101, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 79, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				99, 111, 114, 101, 45, 117, 116, 105, 108, 115,
				64, 50, 46, 53, 46, 50, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 83, 101, 114, 105, 97,
				108, 105, 122, 97, 98, 108, 101, 71, 117, 105,
				100, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 83, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 99, 111, 114,
				101, 45, 117, 116, 105, 108, 115, 64, 50, 46,
				53, 46, 50, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 83, 101, 114, 105, 97, 108, 105, 122,
				97, 98, 108, 101, 71, 117, 105, 100, 85, 116,
				105, 108, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 75, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
				114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
				46, 53, 46, 50, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 84, 101, 120, 116, 117, 114, 101,
				85, 116, 105, 108, 115, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 72, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 99, 111, 114, 101, 45, 117, 116, 105, 108,
				115, 64, 50, 46, 53, 46, 50, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 85, 110, 100, 111,
				66, 108, 111, 99, 107, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 79, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 99, 111, 114, 101, 45, 117, 116, 105, 108,
				115, 64, 50, 46, 53, 46, 50, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 85, 110, 105, 116,
				121, 79, 98, 106, 101, 99, 116, 85, 116, 105,
				108, 115, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 77, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 99, 111,
				114, 101, 45, 117, 116, 105, 108, 115, 64, 50,
				46, 53, 46, 50, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 88, 82, 76, 111, 103, 103, 105,
				110, 103, 85, 116, 105, 108, 115, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 71, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 99, 111, 114, 101, 45, 117, 116,
				105, 108, 115, 64, 50, 46, 53, 46, 50, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 88, 82,
				79, 114, 105, 103, 105, 110, 46, 99, 115
			},
			TypesData = new byte[4049]
			{
				0, 0, 0, 0, 62, 85, 110, 105, 116, 121,
				46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
				105, 108, 115, 124, 65, 82, 84, 114, 97, 99,
				107, 97, 98, 108, 101, 115, 80, 97, 114, 101,
				110, 116, 84, 114, 97, 110, 115, 102, 111, 114,
				109, 67, 104, 97, 110, 103, 101, 100, 69, 118,
				101, 110, 116, 65, 114, 103, 115, 0, 0, 0,
				0, 43, 85, 110, 105, 116, 121, 46, 88, 82,
				46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
				46, 71, 85, 73, 124, 69, 110, 117, 109, 68,
				105, 115, 112, 108, 97, 121, 65, 116, 116, 114,
				105, 98, 117, 116, 101, 0, 0, 0, 0, 45,
				85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
				111, 114, 101, 85, 116, 105, 108, 115, 46, 71,
				85, 73, 124, 70, 108, 97, 103, 115, 80, 114,
				111, 112, 101, 114, 116, 121, 65, 116, 116, 114,
				105, 98, 117, 116, 101, 0, 0, 0, 0, 36,
				85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
				111, 114, 101, 85, 116, 105, 108, 115, 124, 82,
				101, 97, 100, 79, 110, 108, 121, 65, 116, 116,
				114, 105, 98, 117, 116, 101, 0, 0, 0, 0,
				50, 85, 110, 105, 116, 121, 46, 88, 82, 46,
				67, 111, 114, 101, 85, 116, 105, 108, 115, 124,
				83, 99, 114, 105, 112, 116, 97, 98, 108, 101,
				83, 101, 116, 116, 105, 110, 103, 115, 80, 97,
				116, 104, 65, 116, 116, 114, 105, 98, 117, 116,
				101, 0, 0, 0, 0, 41, 85, 110, 105, 116,
				121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
				116, 105, 108, 115, 46, 66, 105, 110, 100, 105,
				110, 103, 115, 124, 66, 105, 110, 100, 105, 110,
				103, 115, 71, 114, 111, 117, 112, 0, 0, 0,
				0, 40, 85, 110, 105, 116, 121, 46, 88, 82,
				46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
				46, 66, 105, 110, 100, 105, 110, 103, 115, 124,
				69, 118, 101, 110, 116, 66, 105, 110, 100, 105,
				110, 103, 0, 0, 0, 0, 41, 85, 110, 105,
				116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
				85, 116, 105, 108, 115, 46, 66, 105, 110, 100,
				105, 110, 103, 115, 124, 73, 69, 118, 101, 110,
				116, 66, 105, 110, 100, 105, 110, 103, 0, 0,
				0, 0, 50, 85, 110, 105, 116, 121, 46, 88,
				82, 46, 67, 111, 114, 101, 85, 116, 105, 108,
				115, 46, 66, 105, 110, 100, 105, 110, 103, 115,
				46, 86, 97, 114, 105, 97, 98, 108, 101, 115,
				124, 66, 105, 110, 100, 97, 98, 108, 101, 69,
				110, 117, 109, 0, 0, 0, 0, 54, 85, 110,
				105, 116, 121, 46, 88, 82, 46, 67, 111, 114,
				101, 85, 116, 105, 108, 115, 46, 66, 105, 110,
				100, 105, 110, 103, 115, 46, 86, 97, 114, 105,
				97, 98, 108, 101, 115, 124, 66, 105, 110, 100,
				97, 98, 108, 101, 86, 97, 114, 105, 97, 98,
				108, 101, 0, 0, 0, 0, 59, 85, 110, 105,
				116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
				85, 116, 105, 108, 115, 46, 66, 105, 110, 100,
				105, 110, 103, 115, 46, 86, 97, 114, 105, 97,
				98, 108, 101, 115, 124, 66, 105, 110, 100, 97,
				98, 108, 101, 86, 97, 114, 105, 97, 98, 108,
				101, 65, 108, 108, 111, 99, 0, 0, 0, 0,
				58, 85, 110, 105, 116, 121, 46, 88, 82, 46,
				67, 111, 114, 101, 85, 116, 105, 108, 115, 46,
				66, 105, 110, 100, 105, 110, 103, 115, 46, 86,
				97, 114, 105, 97, 98, 108, 101, 115, 124, 66,
				105, 110, 100, 97, 98, 108, 101, 86, 97, 114,
				105, 97, 98, 108, 101, 66, 97, 115, 101, 0,
				0, 0, 0, 67, 85, 110, 105, 116, 121, 46,
				88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
				108, 115, 46, 66, 105, 110, 100, 105, 110, 103,
				115, 46, 86, 97, 114, 105, 97, 98, 108, 101,
				115, 124, 66, 105, 110, 100, 97, 98, 108, 101,
				86, 97, 114, 105, 97, 98, 108, 101, 84, 97,
				115, 107, 80, 114, 101, 100, 105, 99, 97, 116,
				101, 0, 0, 0, 0, 63, 85, 110, 105, 116,
				121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
				116, 105, 108, 115, 46, 66, 105, 110, 100, 105,
				110, 103, 115, 46, 86, 97, 114, 105, 97, 98,
				108, 101, 115, 124, 66, 105, 110, 100, 97, 98,
				108, 101, 86, 97, 114, 105, 97, 98, 108, 101,
				84, 97, 115, 107, 83, 116, 97, 116, 101, 0,
				0, 0, 0, 63, 85, 110, 105, 116, 121, 46,
				88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
				108, 115, 46, 66, 105, 110, 100, 105, 110, 103,
				115, 46, 86, 97, 114, 105, 97, 98, 108, 101,
				115, 124, 73, 82, 101, 97, 100, 79, 110, 108,
				121, 66, 105, 110, 100, 97, 98, 108, 101, 86,
				97, 114, 105, 97, 98, 108, 101, 0, 0, 0,
				0, 30, 85, 110, 105, 116, 121, 46, 88, 82,
				46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
				124, 66, 111, 117, 110, 100, 115, 85, 116, 105,
				108, 115, 0, 0, 0, 0, 33, 85, 110, 105,
				116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
				85, 116, 105, 108, 115, 124, 73, 67, 111, 109,
				112, 111, 110, 101, 110, 116, 72, 111, 115, 116,
				0, 0, 0, 0, 40, 85, 110, 105, 116, 121,
				46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
				105, 108, 115, 124, 67, 97, 99, 104, 101, 100,
				67, 111, 109, 112, 111, 110, 101, 110, 116, 70,
				105, 108, 116, 101, 114, 0, 0, 0, 0, 49,
				85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
				111, 114, 101, 85, 116, 105, 108, 115, 46, 67,
				97, 112, 97, 98, 105, 108, 105, 116, 105, 101,
				115, 124, 67, 97, 112, 97, 98, 105, 108, 105,
				116, 121, 80, 114, 111, 102, 105, 108, 101, 0,
				0, 0, 0, 52, 85, 110, 105, 116, 121, 46,
				88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
				108, 115, 46, 67, 97, 112, 97, 98, 105, 108,
				105, 116, 105, 101, 115, 124, 67, 97, 112, 97,
				98, 105, 108, 105, 116, 121, 68, 105, 99, 116,
				105, 111, 110, 97, 114, 121, 0, 0, 0, 0,
				60, 85, 110, 105, 116, 121, 46, 88, 82, 46,
				67, 111, 114, 101, 85, 116, 105, 108, 115, 46,
				67, 97, 112, 97, 98, 105, 108, 105, 116, 105,
				101, 115, 124, 67, 117, 115, 116, 111, 109, 67,
				97, 112, 97, 98, 105, 108, 105, 116, 121, 75,
				101, 121, 65, 116, 116, 114, 105, 98, 117, 116,
				101, 0, 0, 0, 0, 51, 85, 110, 105, 116,
				121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
				116, 105, 108, 115, 46, 67, 97, 112, 97, 98,
				105, 108, 105, 116, 105, 101, 115, 124, 73, 67,
				97, 112, 97, 98, 105, 108, 105, 116, 121, 77,
				111, 100, 105, 102, 105, 101, 114, 0, 0, 0,
				0, 54, 85, 110, 105, 116, 121, 46, 88, 82,
				46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
				46, 67, 97, 112, 97, 98, 105, 108, 105, 116,
				105, 101, 115, 124, 83, 116, 97, 110, 100, 97,
				114, 100, 67, 97, 112, 97, 98, 105, 108, 105,
				116, 121, 75, 101, 121, 115, 0, 0, 0, 0,
				33, 85, 110, 105, 116, 121, 46, 88, 82, 46,
				67, 111, 114, 101, 85, 116, 105, 108, 115, 124,
				67, 111, 108, 108, 101, 99, 116, 105, 111, 110,
				80, 111, 111, 108, 0, 0, 0, 0, 42, 85,
				110, 105, 116, 121, 46, 88, 82, 46, 67, 111,
				114, 101, 85, 116, 105, 108, 115, 46, 67, 111,
				108, 108, 101, 99, 116, 105, 111, 110, 115, 124,
				72, 97, 115, 104, 83, 101, 116, 76, 105, 115,
				116, 0, 0, 0, 0, 43, 85, 110, 105, 116,
				121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
				116, 105, 108, 115, 46, 67, 111, 108, 108, 101,
				99, 116, 105, 111, 110, 115, 124, 82, 101, 97,
				100, 79, 110, 108, 121, 76, 105, 115, 116, 0,
				0, 0, 0, 47, 85, 110, 105, 116, 121, 46,
				88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
				108, 115, 46, 67, 111, 108, 108, 101, 99, 116,
				105, 111, 110, 115, 124, 82, 101, 97, 100, 79,
				110, 108, 121, 76, 105, 115, 116, 83, 112, 97,
				110, 0, 0, 0, 0, 42, 85, 110, 105, 116,
				121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
				116, 105, 108, 115, 46, 67, 111, 108, 108, 101,
				99, 116, 105, 111, 110, 115, 46, 124, 69, 110,
				117, 109, 101, 114, 97, 116, 111, 114, 0, 0,
				0, 0, 53, 85, 110, 105, 116, 121, 46, 88,
				82, 46, 67, 111, 114, 101, 85, 116, 105, 108,
				115, 46, 67, 111, 108, 108, 101, 99, 116, 105,
				111, 110, 115, 124, 83, 101, 114, 105, 97, 108,
				105, 122, 97, 98, 108, 101, 68, 105, 99, 116,
				105, 111, 110, 97, 114, 121, 0, 0, 0, 0,
				58, 85, 110, 105, 116, 121, 46, 88, 82, 46,
				67, 111, 114, 101, 85, 116, 105, 108, 115, 46,
				67, 111, 108, 108, 101, 99, 116, 105, 111, 110,
				115, 46, 83, 101, 114, 105, 97, 108, 105, 122,
				97, 98, 108, 101, 68, 105, 99, 116, 105, 111,
				110, 97, 114, 121, 124, 73, 116, 101, 109, 1,
				0, 0, 0, 33, 85, 110, 105, 116, 121, 46,
				88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
				108, 115, 124, 67, 111, 109, 112, 111, 110, 101,
				110, 116, 85, 116, 105, 108, 115, 1, 0, 0,
				0, 33, 85, 110, 105, 116, 121, 46, 88, 82,
				46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
				124, 67, 111, 109, 112, 111, 110, 101, 110, 116,
				85, 116, 105, 108, 115, 0, 0, 0, 0, 45,
				85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
				111, 114, 101, 85, 116, 105, 108, 115, 46, 68,
				97, 116, 117, 109, 115, 124, 65, 110, 105, 109,
				97, 116, 105, 111, 110, 67, 117, 114, 118, 101,
				68, 97, 116, 117, 109, 0, 0, 0, 0, 53,
				85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
				111, 114, 101, 85, 116, 105, 108, 115, 46, 68,
				97, 116, 117, 109, 115, 124, 65, 110, 105, 109,
				97, 116, 105, 111, 110, 67, 117, 114, 118, 101,
				68, 97, 116, 117, 109, 80, 114, 111, 112, 101,
				114, 116, 121, 0, 0, 0, 0, 31, 85, 110,
				105, 116, 121, 46, 88, 82, 46, 67, 111, 114,
				101, 85, 116, 105, 108, 115, 46, 68, 97, 116,
				117, 109, 115, 124, 68, 97, 116, 117, 109, 0,
				0, 0, 0, 39, 85, 110, 105, 116, 121, 46,
				88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
				108, 115, 46, 68, 97, 116, 117, 109, 115, 124,
				68, 97, 116, 117, 109, 80, 114, 111, 112, 101,
				114, 116, 121, 0, 0, 0, 0, 36, 85, 110,
				105, 116, 121, 46, 88, 82, 46, 67, 111, 114,
				101, 85, 116, 105, 108, 115, 46, 68, 97, 116,
				117, 109, 115, 124, 70, 108, 111, 97, 116, 68,
				97, 116, 117, 109, 0, 0, 0, 0, 44, 85,
				110, 105, 116, 121, 46, 88, 82, 46, 67, 111,
				114, 101, 85, 116, 105, 108, 115, 46, 68, 97,
				116, 117, 109, 115, 124, 70, 108, 111, 97, 116,
				68, 97, 116, 117, 109, 80, 114, 111, 112, 101,
				114, 116, 121, 0, 0, 0, 0, 34, 85, 110,
				105, 116, 121, 46, 88, 82, 46, 67, 111, 114,
				101, 85, 116, 105, 108, 115, 46, 68, 97, 116,
				117, 109, 115, 124, 73, 110, 116, 68, 97, 116,
				117, 109, 0, 0, 0, 0, 42, 85, 110, 105,
				116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
				85, 116, 105, 108, 115, 46, 68, 97, 116, 117,
				109, 115, 124, 73, 110, 116, 68, 97, 116, 117,
				109, 80, 114, 111, 112, 101, 114, 116, 121, 0,
				0, 0, 0, 37, 85, 110, 105, 116, 121, 46,
				88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
				108, 115, 46, 68, 97, 116, 117, 109, 115, 124,
				83, 116, 114, 105, 110, 103, 68, 97, 116, 117,
				109, 0, 0, 0, 0, 45, 85, 110, 105, 116,
				121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
				116, 105, 108, 115, 46, 68, 97, 116, 117, 109,
				115, 124, 83, 116, 114, 105, 110, 103, 68, 97,
				116, 117, 109, 80, 114, 111, 112, 101, 114, 116,
				121, 0, 0, 0, 0, 29, 85, 110, 105, 116,
				121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
				116, 105, 108, 115, 124, 69, 110, 117, 109, 86,
				97, 108, 117, 101, 115, 0, 0, 0, 0, 35,
				85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
				111, 114, 101, 85, 116, 105, 108, 115, 124, 66,
				111, 117, 110, 100, 115, 69, 120, 116, 101, 110,
				115, 105, 111, 110, 115, 0, 0, 0, 0, 35,
				85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
				111, 114, 101, 85, 116, 105, 108, 115, 124, 67,
				97, 109, 101, 114, 97, 69, 120, 116, 101, 110,
				115, 105, 111, 110, 115, 0, 0, 0, 0, 39,
				85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
				111, 114, 101, 85, 116, 105, 108, 115, 124, 67,
				111, 108, 108, 101, 99, 116, 105, 111, 110, 69,
				120, 116, 101, 110, 115, 105, 111, 110, 115, 0,
				0, 0, 0, 39, 85, 110, 105, 116, 121, 46,
				88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
				108, 115, 124, 68, 105, 99, 116, 105, 111, 110,
				97, 114, 121, 69, 120, 116, 101, 110, 115, 105,
				111, 110, 115, 0, 0, 0, 0, 39, 85, 110,
				105, 116, 121, 46, 88, 82, 46, 67, 111, 114,
				101, 85, 116, 105, 108, 115, 124, 71, 97, 109,
				101, 79, 98, 106, 101, 99, 116, 69, 120, 116,
				101, 110, 115, 105, 111, 110, 115, 0, 0, 0,
				0, 33, 85, 110, 105, 116, 121, 46, 88, 82,
				46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
				124, 71, 117, 105, 100, 69, 120, 116, 101, 110,
				115, 105, 111, 110, 115, 0, 0, 0, 0, 36,
				85, 110, 105, 116, 121, 46, 88, 82, 46, 67,
				111, 114, 101, 85, 116, 105, 108, 115, 124, 72,
				97, 115, 104, 83, 101, 116, 69, 120, 116, 101,
				110, 115, 105, 111, 110, 115, 0, 0, 0, 0,
				38, 85, 110, 105, 116, 121, 46, 88, 82, 46,
				67, 111, 114, 101, 85, 116, 105, 108, 115, 124,
				76, 97, 121, 101, 114, 77, 97, 115, 107, 69,
				120, 116, 101, 110, 115, 105, 111, 110, 115, 0,
				0, 0, 0, 33, 85, 110, 105, 116, 121, 46,
				88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
				108, 115, 124, 76, 105, 115, 116, 69, 120, 116,
				101, 110, 115, 105, 111, 110, 115, 0, 0, 0,
				0, 42, 85, 110, 105, 116, 121, 46, 88, 82,
				46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
				124, 77, 111, 110, 111, 66, 101, 104, 97, 118,
				105, 111, 117, 114, 69, 120, 116, 101, 110, 115,
				105, 111, 110, 115, 0, 0, 0, 0, 33, 85,
				110, 105, 116, 121, 46, 88, 82, 46, 67, 111,
				114, 101, 85, 116, 105, 108, 115, 124, 80, 111,
				115, 101, 69, 120, 116, 101, 110, 115, 105, 111,
				110, 115, 0, 0, 0, 0, 39, 85, 110, 105,
				116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
				85, 116, 105, 108, 115, 124, 81, 117, 97, 116,
				101, 114, 110, 105, 111, 110, 69, 120, 116, 101,
				110, 115, 105, 111, 110, 115, 0, 0, 0, 0,
				38, 85, 110, 105, 116, 121, 46, 88, 82, 46,
				67, 111, 114, 101, 85, 116, 105, 108, 115, 124,
				83, 116, 111, 112, 119, 97, 116, 99, 104, 69,
				120, 116, 101, 110, 115, 105, 111, 110, 115, 0,
				0, 0, 0, 35, 85, 110, 105, 116, 121, 46,
				88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
				108, 115, 124, 83, 116, 114, 105, 110, 103, 69,
				120, 116, 101, 110, 115, 105, 111, 110, 115, 0,
				0, 0, 0, 38, 85, 110, 105, 116, 121, 46,
				88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
				108, 115, 124, 84, 114, 97, 110, 115, 102, 111,
				114, 109, 69, 120, 116, 101, 110, 115, 105, 111,
				110, 115, 0, 0, 0, 0, 33, 85, 110, 105,
				116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
				85, 116, 105, 108, 115, 124, 84, 121, 112, 101,
				69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
				0, 0, 0, 0, 33, 85, 110, 105, 116, 121,
				46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
				105, 108, 115, 124, 66, 111, 111, 108, 85, 110,
				105, 116, 121, 69, 118, 101, 110, 116, 0, 0,
				0, 0, 34, 85, 110, 105, 116, 121, 46, 88,
				82, 46, 67, 111, 114, 101, 85, 116, 105, 108,
				115, 124, 70, 108, 111, 97, 116, 85, 110, 105,
				116, 121, 69, 118, 101, 110, 116, 0, 0, 0,
				0, 36, 85, 110, 105, 116, 121, 46, 88, 82,
				46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
				124, 86, 101, 99, 116, 111, 114, 50, 85, 110,
				105, 116, 121, 69, 118, 101, 110, 116, 0, 0,
				0, 0, 36, 85, 110, 105, 116, 121, 46, 88,
				82, 46, 67, 111, 114, 101, 85, 116, 105, 108,
				115, 124, 86, 101, 99, 116, 111, 114, 51, 85,
				110, 105, 116, 121, 69, 118, 101, 110, 116, 0,
				0, 0, 0, 36, 85, 110, 105, 116, 121, 46,
				88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
				108, 115, 124, 86, 101, 99, 116, 111, 114, 52,
				85, 110, 105, 116, 121, 69, 118, 101, 110, 116,
				0, 0, 0, 0, 39, 85, 110, 105, 116, 121,
				46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
				105, 108, 115, 124, 81, 117, 97, 116, 101, 114,
				110, 105, 111, 110, 85, 110, 105, 116, 121, 69,
				118, 101, 110, 116, 0, 0, 0, 0, 32, 85,
				110, 105, 116, 121, 46, 88, 82, 46, 67, 111,
				114, 101, 85, 116, 105, 108, 115, 124, 73, 110,
				116, 85, 110, 105, 116, 121, 69, 118, 101, 110,
				116, 0, 0, 0, 0, 34, 85, 110, 105, 116,
				121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
				116, 105, 108, 115, 124, 67, 111, 108, 111, 114,
				85, 110, 105, 116, 121, 69, 118, 101, 110, 116,
				0, 0, 0, 0, 35, 85, 110, 105, 116, 121,
				46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
				105, 108, 115, 124, 83, 116, 114, 105, 110, 103,
				85, 110, 105, 116, 121, 69, 118, 101, 110, 116,
				0, 0, 0, 0, 36, 85, 110, 105, 116, 121,
				46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
				105, 108, 115, 124, 86, 101, 99, 116, 111, 114,
				50, 69, 120, 116, 101, 110, 115, 105, 111, 110,
				115, 0, 0, 0, 0, 36, 85, 110, 105, 116,
				121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
				116, 105, 108, 115, 124, 86, 101, 99, 116, 111,
				114, 51, 69, 120, 116, 101, 110, 115, 105, 111,
				110, 115, 0, 0, 0, 0, 34, 85, 110, 105,
				116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
				85, 116, 105, 108, 115, 124, 71, 97, 109, 101,
				79, 98, 106, 101, 99, 116, 85, 116, 105, 108,
				115, 0, 0, 0, 0, 32, 85, 110, 105, 116,
				121, 46, 88, 82, 46, 67, 111, 114, 101, 85,
				116, 105, 108, 115, 124, 71, 101, 111, 109, 101,
				116, 114, 121, 85, 116, 105, 108, 115, 0, 0,
				0, 0, 27, 85, 110, 105, 116, 121, 46, 88,
				82, 46, 67, 111, 114, 101, 85, 116, 105, 108,
				115, 124, 71, 117, 105, 100, 85, 116, 105, 108,
				0, 0, 0, 0, 31, 85, 110, 105, 116, 121,
				46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
				105, 108, 115, 124, 72, 97, 115, 104, 67, 111,
				100, 101, 85, 116, 105, 108, 0, 0, 0, 0,
				32, 85, 110, 105, 116, 121, 46, 88, 82, 46,
				67, 111, 114, 101, 85, 116, 105, 108, 115, 124,
				77, 97, 116, 101, 114, 105, 97, 108, 85, 116,
				105, 108, 115, 0, 0, 0, 0, 30, 85, 110,
				105, 116, 121, 46, 88, 82, 46, 67, 111, 114,
				101, 85, 116, 105, 108, 115, 124, 77, 97, 116,
				104, 85, 116, 105, 108, 105, 116, 121, 0, 0,
				0, 0, 35, 85, 110, 105, 116, 121, 46, 88,
				82, 46, 67, 111, 114, 101, 85, 116, 105, 108,
				115, 124, 78, 97, 116, 105, 118, 101, 65, 114,
				114, 97, 121, 85, 116, 105, 108, 115, 0, 0,
				0, 0, 29, 85, 110, 105, 116, 121, 46, 88,
				82, 46, 67, 111, 114, 101, 85, 116, 105, 108,
				115, 124, 79, 98, 106, 101, 99, 116, 80, 111,
				111, 108, 0, 0, 0, 0, 36, 85, 110, 105,
				116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
				85, 116, 105, 108, 115, 124, 79, 110, 68, 101,
				115, 116, 114, 111, 121, 78, 111, 116, 105, 102,
				105, 101, 114, 0, 0, 0, 0, 34, 85, 110,
				105, 116, 121, 46, 88, 82, 46, 67, 111, 114,
				101, 85, 116, 105, 108, 115, 124, 82, 101, 102,
				108, 101, 99, 116, 105, 111, 110, 85, 116, 105,
				108, 115, 0, 0, 0, 0, 37, 85, 110, 105,
				116, 121, 46, 88, 82, 46, 67, 111, 114, 101,
				85, 116, 105, 108, 115, 124, 83, 99, 114, 105,
				112, 116, 97, 98, 108, 101, 83, 101, 116, 116,
				105, 110, 103, 115, 1, 0, 0, 0, 41, 85,
				110, 105, 116, 121, 46, 88, 82, 46, 67, 111,
				114, 101, 85, 116, 105, 108, 115, 124, 83, 99,
				114, 105, 112, 116, 97, 98, 108, 101, 83, 101,
				116, 116, 105, 110, 103, 115, 66, 97, 115, 101,
				1, 0, 0, 0, 41, 85, 110, 105, 116, 121,
				46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
				105, 108, 115, 124, 83, 99, 114, 105, 112, 116,
				97, 98, 108, 101, 83, 101, 116, 116, 105, 110,
				103, 115, 66, 97, 115, 101, 0, 0, 0, 0,
				35, 85, 110, 105, 116, 121, 46, 88, 82, 46,
				67, 111, 114, 101, 85, 116, 105, 108, 115, 124,
				83, 101, 114, 105, 97, 108, 105, 122, 97, 98,
				108, 101, 71, 117, 105, 100, 0, 0, 0, 0,
				39, 85, 110, 105, 116, 121, 46, 88, 82, 46,
				67, 111, 114, 101, 85, 116, 105, 108, 115, 124,
				83, 101, 114, 105, 97, 108, 105, 122, 97, 98,
				108, 101, 71, 117, 105, 100, 85, 116, 105, 108,
				0, 0, 0, 0, 31, 85, 110, 105, 116, 121,
				46, 88, 82, 46, 67, 111, 114, 101, 85, 116,
				105, 108, 115, 124, 84, 101, 120, 116, 117, 114,
				101, 85, 116, 105, 108, 115, 0, 0, 0, 0,
				28, 85, 110, 105, 116, 121, 46, 88, 82, 46,
				67, 111, 114, 101, 85, 116, 105, 108, 115, 124,
				85, 110, 100, 111, 66, 108, 111, 99, 107, 0,
				0, 0, 0, 35, 85, 110, 105, 116, 121, 46,
				88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
				108, 115, 124, 85, 110, 105, 116, 121, 79, 98,
				106, 101, 99, 116, 85, 116, 105, 108, 115, 0,
				0, 0, 0, 33, 85, 110, 105, 116, 121, 46,
				88, 82, 46, 67, 111, 114, 101, 85, 116, 105,
				108, 115, 124, 88, 82, 76, 111, 103, 103, 105,
				110, 103, 85, 116, 105, 108, 115, 0, 0, 0,
				0, 27, 85, 110, 105, 116, 121, 46, 88, 82,
				46, 67, 111, 114, 101, 85, 116, 105, 108, 115,
				124, 88, 82, 79, 114, 105, 103, 105, 110
			},
			TotalFiles = 76,
			TotalTypes = 90,
			IsEditorOnly = false
		};
	}
}
namespace Unity.XR.CoreUtils
{
	public readonly struct ARTrackablesParentTransformChangedEventArgs : IEquatable<ARTrackablesParentTransformChangedEventArgs>
	{
		public XROrigin Origin { get; }

		public Transform TrackablesParent { get; }

		public ARTrackablesParentTransformChangedEventArgs(XROrigin origin, Transform trackablesParent)
		{
			if ((Object)(object)origin == (Object)null)
			{
				throw new ArgumentNullException("origin");
			}
			if ((Object)(object)trackablesParent == (Object)null)
			{
				throw new ArgumentNullException("trackablesParent");
			}
			Origin = origin;
			TrackablesParent = trackablesParent;
		}

		public bool Equals(ARTrackablesParentTransformChangedEventArgs other)
		{
			if ((Object)(object)Origin == (Object)(object)other.Origin)
			{
				return (Object)(object)TrackablesParent == (Object)(object)other.TrackablesParent;
			}
			return false;
		}

		public override bool Equals(object obj)
		{
			if (obj is ARTrackablesParentTransformChangedEventArgs other)
			{
				return Equals(other);
			}
			return false;
		}

		public override int GetHashCode()
		{
			return HashCodeUtil.Combine(HashCodeUtil.ReferenceHash(Origin), HashCodeUtil.ReferenceHash(TrackablesParent));
		}

		public static bool operator ==(ARTrackablesParentTransformChangedEventArgs lhs, ARTrackablesParentTransformChangedEventArgs rhs)
		{
			return lhs.Equals(rhs);
		}

		public static bool operator !=(ARTrackablesParentTransformChangedEventArgs lhs, ARTrackablesParentTransformChangedEventArgs rhs)
		{
			return !lhs.Equals(rhs);
		}
	}
	public class ReadOnlyAttribute : PropertyAttribute
	{
	}
	[AttributeUsage(AttributeTargets.Class)]
	public class ScriptableSettingsPathAttribute : Attribute
	{
		private readonly string m_Path;

		public string Path => m_Path;

		public ScriptableSettingsPathAttribute(string path = "")
		{
			m_Path = path;
		}
	}
	public static class BoundsUtils
	{
		private static readonly List<Renderer> k_Renderers = new List<Renderer>();

		private static readonly List<Transform> k_Transforms = new List<Transform>();

		public static Bounds GetBounds(List<GameObject> gameObjects)
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			Bounds? val = null;
			foreach (GameObject gameObject in gameObjects)
			{
				Bounds bounds = GetBounds(gameObject.transform);
				if (!val.HasValue)
				{
					val = bounds;
					continue;
				}
				((Bounds)(ref bounds)).Encapsulate(val.Value);
				val = bounds;
			}
			return val.GetValueOrDefault();
		}

		public static Bounds GetBounds(Transform[] transforms)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			Bounds? val = null;
			for (int i = 0; i < transforms.Length; i++)
			{
				Bounds bounds = GetBounds(transforms[i]);
				if (!val.HasValue)
				{
					val = bounds;
					continue;
				}
				((Bounds)(ref bounds)).Encapsulate(val.Value);
				val = bounds;
			}
			return val.GetValueOrDefault();
		}

		public static Bounds GetBounds(Transform transform)
		{
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			((Component)transform).GetComponentsInChildren<Renderer>(k_Renderers);
			Bounds bounds = GetBounds(k_Renderers);
			if (((Bounds)(ref bounds)).size == Vector3.zero)
			{
				((Component)transform).GetComponentsInChildren<Transform>(k_Transforms);
				if (k_Transforms.Count > 0)
				{
					((Bounds)(ref bounds)).center = k_Transforms[0].position;
				}
				foreach (Transform k_Transform in k_Transforms)
				{
					((Bounds)(ref bounds)).Encapsulate(k_Transform.position);
				}
			}
			return bounds;
		}

		public static Bounds GetBounds(List<Renderer> renderers)
		{
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			Bounds result2;
			if (renderers.Count > 0)
			{
				Renderer val = renderers[0];
				Bounds result = default(Bounds);
				((Bounds)(ref result))..ctor(((Component)val).transform.position, Vector3.zero);
				{
					foreach (Renderer renderer in renderers)
					{
						result2 = renderer.bounds;
						if (((Bounds)(ref result2)).size != Vector3.zero)
						{
							((Bounds)(ref result)).Encapsulate(renderer.bounds);
						}
					}
					return result;
				}
			}
			result2 = default(Bounds);
			return result2;
		}

		public static Bounds GetBounds<T>(List<T> colliders) where T : Collider
		{
			//IL_0090: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			Bounds result2;
			if (colliders.Count > 0)
			{
				T val = colliders[0];
				Bounds result = default(Bounds);
				((Bounds)(ref result))..ctor(((Component)(object)val).transform.position, Vector3.zero);
				{
					foreach (T collider in colliders)
					{
						result2 = ((Collider)collider).bounds;
						if (((Bounds)(ref result2)).size != Vector3.zero)
						{
							((Bounds)(ref result)).Encapsulate(((Collider)collider).bounds);
						}
					}
					return result;
				}
			}
			result2 = default(Bounds);
			return result2;
		}

		public static Bounds GetBounds(List<Vector3> points)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			Bounds result = default(Bounds);
			if (points.Count < 1)
			{
				return result;
			}
			Vector3 val = points[0];
			Vector3 val2 = val;
			for (int i = 1; i < points.Count; i++)
			{
				Vector3 val3 = points[i];
				if (val3.x < val.x)
				{
					val.x = val3.x;
				}
				if (val3.y < val.y)
				{
					val.y = val3.y;
				}
				if (val3.z < val.z)
				{
					val.z = val3.z;
				}
				if (val3.x > val2.x)
				{
					val2.x = val3.x;
				}
				if (val3.y > val2.y)
				{
					val2.y = val3.y;
				}
				if (val3.z > val2.z)
				{
					val2.z = val3.z;
				}
			}
			((Bounds)(ref result)).SetMinMax(val, val2);
			return result;
		}
	}
	public interface IComponentHost<THostType> where THostType : class
	{
		THostType[] HostedComponents { get; }
	}
	[Flags]
	public enum CachedSearchType
	{
		Children = 1,
		Self = 2,
		Parents = 4
	}
	public class CachedComponentFilter<TFilterType, TRootType> : IDisposable where TFilterType : class where TRootType : Component
	{
		private readonly List<TFilterType> m_MasterComponentStorage;

		private static readonly List<TFilterType> k_TempComponentList = new List<TFilterType>();

		private static readonly List<IComponentHost<TFilterType>> k_TempHostComponentList = new List<IComponentHost<TFilterType>>();

		private bool m_DisposedValue;

		public CachedComponentFilter(TRootType componentRoot, CachedSearchType cachedSearchType = CachedSearchType.Children | CachedSearchType.Self, bool includeDisabled = true)
		{
			//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			m_MasterComponentStorage = CollectionPool<List<TFilterType>, TFilterType>.GetCollection();
			k_TempComponentList.Clear();
			k_TempHostComponentList.Clear();
			if ((cachedSearchType & CachedSearchType.Self) == CachedSearchType.Self)
			{
				((Component)componentRoot).GetComponents<TFilterType>(k_TempComponentList);
				((Component)componentRoot).GetComponents<IComponentHost<TFilterType>>(k_TempHostComponentList);
				FilteredCopyToMaster(includeDisabled);
			}
			if ((cachedSearchType & CachedSearchType.Parents) == CachedSearchType.Parents)
			{
				Transform parent = ((Component)componentRoot).transform.parent;
				while ((Object)(object)parent != (Object)null && !((Object)(object)((Component)parent).GetComponent<TRootType>() != (Object)null))
				{
					((Component)parent).GetComponents<TFilterType>(k_TempComponentList);
					((Component)parent).GetComponents<IComponentHost<TFilterType>>(k_TempHostComponentList);
					FilteredCopyToMaster(includeDisabled);
					parent = ((Component)parent).transform.parent;
				}
			}
			if ((cachedSearchType & CachedSearchType.Children) != CachedSearchType.Children)
			{
				return;
			}
			foreach (Transform item in ((Component)componentRoot).transform)
			{
				((Component)item).GetComponentsInChildren<TFilterType>(k_TempComponentList);
				((Component)item).GetComponentsInChildren<IComponentHost<TFilterType>>(k_TempHostComponentList);
				FilteredCopyToMaster(includeDisabled, componentRoot);
			}
		}

		public CachedComponentFilter(TFilterType[] componentList, bool includeDisabled = true)
		{
			if (componentList != null)
			{
				m_MasterComponentStorage = CollectionPool<List<TFilterType>, TFilterType>.GetCollection();
				k_TempComponentList.Clear();
				k_TempComponentList.AddRange(componentList);
				FilteredCopyToMaster(includeDisabled);
			}
		}

		public void StoreMatchingComponents<TChildType>(List<TChildType> outputList) where TChildType : class, TFilterType
		{
			foreach (TFilterType item2 in m_MasterComponentStorage)
			{
				if (item2 is TChildType item)
				{
					outputList.Add(item);
				}
			}
		}

		public TChildType[] GetMatchingComponents<TChildType>() where TChildType : class, TFilterType
		{
			int num = 0;
			foreach (TFilterType item in m_MasterComponentStorage)
			{
				if (item is TChildType)
				{
					num++;
				}
			}
			TChildType[] array = new TChildType[num];
			num = 0;
			foreach (TFilterType item2 in m_MasterComponentStorage)
			{
				if (item2 is TChildType val)
				{
					array[num] = val;
					num++;
				}
			}
			return array;
		}

		private void FilteredCopyToMaster(bool includeDisabled)
		{
			if (includeDisabled)
			{
				m_MasterComponentStorage.AddRange(k_TempComponentList);
				{
					foreach (IComponentHost<TFilterType> k_TempHostComponent in k_TempHostComponentList)
					{
						m_MasterComponentStorage.AddRange(k_TempHostComponent.HostedComponents);
					}
					return;
				}
			}
			foreach (TFilterType k_TempComponent in k_TempComponentList)
			{
				Behaviour val = (Behaviour)(object)((k_TempComponent is Behaviour) ? k_TempComponent : null);
				if (!((Object)(object)val != (Object)null) || val.enabled)
				{
					m_MasterComponentStorage.Add(k_TempComponent);
				}
			}
			foreach (IComponentHost<TFilterType> k_TempHostComponent2 in k_TempHostComponentList)
			{
				Behaviour val2 = (Behaviour)((k_TempHostComponent2 is Behaviour) ? k_TempHostComponent2 : null);
				if (!((Object)(object)val2 != (Object)null) || val2.enabled)
				{
					m_MasterComponentStorage.AddRange(k_TempHostComponent2.HostedComponents);
				}
			}
		}

		private void FilteredCopyToMaster(bool includeDisabled, TRootType requiredRoot)
		{
			if (includeDisabled)
			{
				foreach (TFilterType k_TempComponent in k_TempComponentList)
				{
					Component val = (Component)(object)((k_TempComponent is Component) ? k_TempComponent : null);
					if (!((Object)(object)val.transform == (Object)(object)requiredRoot) && !((Object)(object)val.GetComponentInParent<TRootType>() != (Object)(object)requiredRoot))
					{
						m_MasterComponentStorage.Add(k_TempComponent);
					}
				}
				{
					foreach (IComponentHost<TFilterType> k_TempHostComponent in k_TempHostComponentList)
					{
						Component val2 = (Component)((k_TempHostComponent is Component) ? k_TempHostComponent : null);
						if (!((Object)(object)val2.transform == (Object)(object)requiredRoot) && !((Object)(object)val2.GetComponentInParent<TRootType>() != (Object)(object)requiredRoot))
						{
							m_MasterComponentStorage.AddRange(k_TempHostComponent.HostedComponents);
						}
					}
					return;
				}
			}
			foreach (TFilterType k_TempComponent2 in k_TempComponentList)
			{
				Behaviour val3 = (Behaviour)(object)((k_TempComponent2 is Behaviour) ? k_TempComponent2 : null);
				if (val3.enabled && !((Object)(object)((Component)val3).transform == (Object)(object)requiredRoot) && !((Object)(object)((Component)val3).GetComponentInParent<TRootType>() != (Object)(object)requiredRoot))
				{
					m_MasterComponentStorage.Add(k_TempComponent2);
				}
			}
			foreach (IComponentHost<TFilterType> k_TempHostComponent2 in k_TempHostComponentList)
			{
				Behaviour val4 = (Behaviour)((k_TempHostComponent2 is Behaviour) ? k_TempHostComponent2 : null);
				if (val4.enabled && !((Object)(object)((Component)val4).transform == (Object)(object)requiredRoot) && !((Object)(object)((Component)val4).GetComponentInParent<TRootType>() != (Object)(object)requiredRoot))
				{
					m_MasterComponentStorage.AddRange(k_TempHostComponent2.HostedComponents);
				}
			}
		}

		protected virtual void Dispose(bool disposing)
		{
			if (!m_DisposedValue)
			{
				if (disposing && m_MasterComponentStorage != null)
				{
					CollectionPool<List<TFilterType>, TFilterType>.RecycleCollection(m_MasterComponentStorage);
				}
				m_DisposedValue = true;
			}
		}

		public void Dispose()
		{
			Dispose(disposing: true);
		}
	}
	public static class CollectionPool<TCollection, TValue> where TCollection : ICollection<TValue>, new()
	{
		private static readonly Queue<TCollection> k_CollectionQueue = new Queue<TCollection>();

		public static TCollection GetCollection()
		{
			if (k_CollectionQueue.Count <= 0)
			{
				return new TCollection();
			}
			return k_CollectionQueue.Dequeue();
		}

		public static void RecycleCollection(TCollection collection)
		{
			collection.Clear();
			k_CollectionQueue.Enqueue(collection);
		}
	}
	public static class ComponentUtils<T>
	{
		private static readonly List<T> k_RetrievalList = new List<T>();

		public static T GetComponent(GameObject gameObject)
		{
			T result = default(T);
			gameObject.GetComponents<T>(k_RetrievalList);
			if (k_RetrievalList.Count > 0)
			{
				return k_RetrievalList[0];
			}
			return result;
		}

		public static T GetComponentInChildren(GameObject gameObject)
		{
			T result = default(T);
			gameObject.GetComponentsInChildren<T>(k_RetrievalList);
			if (k_RetrievalList.Count > 0)
			{
				return k_RetrievalList[0];
			}
			return result;
		}
	}
	public static class ComponentUtils
	{
		public static T GetOrAddIf<T>(GameObject gameObject, bool add) where T : Component
		{
			T val = gameObject.GetComponent<T>();
			if (add && (Object)(object)val == (Object)null)
			{
				val = gameObject.AddComponent<T>();
			}
			return val;
		}
	}
	public static class EnumValues<T>
	{
		public static readonly T[] Values = (T[])Enum.GetValues(typeof(T));
	}
	public static class BoundsExtensions
	{
		public static bool ContainsCompletely(this Bounds outerBounds, Bounds innerBounds)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			Vector3 max = ((Bounds)(ref outerBounds)).max;
			Vector3 min = ((Bounds)(ref outerBounds)).min;
			Vector3 max2 = ((Bounds)(ref innerBounds)).max;
			Vector3 min2 = ((Bounds)(ref innerBounds)).min;
			if (max.x >= max2.x && max.y >= max2.y && max.z >= max2.z && min.x <= min2.x && min.y <= min2.y)
			{
				return min.z <= min2.z;
			}
			return false;
		}
	}
	public static class CameraExtensions
	{
		private const float k_OneOverSqrt2 = 0.70710677f;

		public static float GetVerticalFieldOfView(this Camera camera, float aspectNeutralFieldOfView)
		{
			return Mathf.Atan(Mathf.Tan(aspectNeutralFieldOfView * 0.5f * (MathF.PI / 180f)) * 0.70710677f / Mathf.Sqrt(camera.aspect)) * 2f * 57.29578f;
		}

		public static float GetHorizontalFieldOfView(this Camera camera)
		{
			float num = camera.fieldOfView * 0.5f;
			return 57.29578f * Mathf.Atan(Mathf.Tan(num * (MathF.PI / 180f)) * camera.aspect);
		}

		public static float GetVerticalOrthographicSize(this Camera camera, float size)
		{
			return size * 0.70710677f / Mathf.Sqrt(camera.aspect);
		}
	}
	public static class CollectionExtensions
	{
		private static readonly StringBuilder k_String = new StringBuilder();

		public static string Stringify<T>(this ICollection<T> collection)
		{
			k_String.Length = 0;
			int num = collection.Count - 1;
			int num2 = 0;
			foreach (T item in collection)
			{
				k_String.AppendFormat((num2++ == num) ? "{0}" : "{0}, ", item);
			}
			return k_String.ToString();
		}
	}
	public static class DictionaryExtensions
	{
		public static KeyValuePair<TKey, TValue> First<TKey, TValue>(this Dictionary<TKey, TValue> dictionary)
		{
			KeyValuePair<TKey, TValue> result = default(KeyValuePair<TKey, TValue>);
			Dictionary<TKey, TValue>.Enumerator enumerator = dictionary.GetEnumerator();
			if (enumerator.MoveNext())
			{
				result = enumerator.Current;
			}
			enumerator.Dispose();
			return result;
		}
	}
	public static class GameObjectExtensions
	{
		public static void SetHideFlagsRecursively(this GameObject gameObject, HideFlags hideFlags)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			((Object)gameObject).hideFlags = hideFlags;
			foreach (Transform item in gameObject.transform)
			{
				((Component)item).gameObject.SetHideFlagsRecursively(hideFlags);
			}
		}

		public static void AddToHideFlagsRecursively(this GameObject gameObject, HideFlags hideFlags)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			((Object)gameObject).hideFlags = (HideFlags)(((Object)gameObject).hideFlags | hideFlags);
			foreach (Transform item in gameObject.transform)
			{
				((Component)item).gameObject.AddToHideFlagsRecursively(hideFlags);
			}
		}

		public static void SetLayerRecursively(this GameObject gameObject, int layer)
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			gameObject.layer = layer;
			foreach (Transform item in gameObject.transform)
			{
				((Component)item).gameObject.SetLayerRecursively(layer);
			}
		}

		public static void SetLayerAndAddToHideFlagsRecursively(this GameObject gameObject, int layer, HideFlags hideFlags)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_000f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			gameObject.layer = layer;
			((Object)gameObject).hideFlags = (HideFlags)(((Object)gameObject).hideFlags | hideFlags);
			foreach (Transform item in gameObject.transform)
			{
				((Component)item).gameObject.SetLayerAndAddToHideFlagsRecursively(layer, hideFlags);
			}
		}

		public static void SetLayerAndHideFlagsRecursively(this GameObject gameObject, int layer, HideFlags hideFlags)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: Unknown result type (might be due to invalid IL or missing references)
			gameObject.layer = layer;
			((Object)gameObject).hideFlags = hideFlags;
			foreach (Transform item in gameObject.transform)
			{
				((Component)item).gameObject.SetLayerAndHideFlagsRecursively(layer, hideFlags);
			}
		}

		public static void SetRunInEditModeRecursively(this GameObject gameObject, bool enabled)
		{
		}
	}
	public static class GuidExtensions
	{
		public static void Decompose(this Guid guid, out ulong low, out ulong high)
		{
			byte[] value = guid.ToByteArray();
			low = BitConverter.ToUInt64(value, 0);
			high = BitConverter.ToUInt64(value, 8);
		}
	}
	public static class HashSetExtensions
	{
		public static void ExceptWithNonAlloc<T>(this HashSet<T> self, HashSet<T> other)
		{
			foreach (T item in other)
			{
				self.Remove(item);
			}
		}

		public static T First<T>(this HashSet<T> set)
		{
			HashSet<T>.Enumerator enumerator = set.GetEnumerator();
			T result = (enumerator.MoveNext() ? enumerator.Current : default(T));
			enumerator.Dispose();
			return result;
		}
	}
	public static class LayerMaskExtensions
	{
		public static int GetFirstLayerIndex(this LayerMask layerMask)
		{
			if (((LayerMask)(ref layerMask)).value == 0)
			{
				return -1;
			}
			int num = 0;
			int num2 = ((LayerMask)(ref layerMask)).value;
			while ((num2 & 1) == 0)
			{
				num2 >>= 1;
				num++;
			}
			return num;
		}

		public static bool Contains(this LayerMask mask, int layer)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			return ((uint)LayerMask.op_Implicit(mask) & (1 << layer)) > 0;
		}
	}
	public static class ListExtensions
	{
		public static List<T> Fill<T>(this List<T> list, int count) where T : new()
		{
			for (int i = 0; i < count; i++)
			{
				list.Add(new T());
			}
			return list;
		}

		public static void EnsureCapacity<T>(this List<T> list, int capacity)
		{
			if (list.Capacity < capacity)
			{
				list.Capacity = capacity;
			}
		}

		public static void SwapAtIndices<T>(this List<T> list, int first, int second)
		{
			T val = list[second];
			T val2 = list[first];
			T val3 = (list[first] = val);
			val3 = (list[second] = val2);
		}
	}
	public static class MonoBehaviourExtensions
	{
	}
	public static class PoseExtensions
	{
		public static Pose ApplyOffsetTo(this Pose pose, Pose otherPose)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0013: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			Quaternion rotation = pose.rotation;
			return new Pose(rotation * otherPose.position + pose.position, rotation * otherPose.rotation);
		}

		public static Vector3 ApplyOffsetTo(this Pose pose, Vector3 position)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			return pose.rotation * position + pose.position;
		}

		public static Vector3 ApplyInverseOffsetTo(this Pose pose, Vector3 position)
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			return Quaternion.Inverse(pose.rotation) * (position - pose.position);
		}
	}
	public static class QuaternionExtensions
	{
		public static Quaternion ConstrainYaw(this Quaternion rotation)
		{
			//IL_0018: Unknown result type (might be due to invalid IL or missing references)
			rotation.x = 0f;
			rotation.z = 0f;
			return rotation;
		}

		public static Quaternion ConstrainYawNormalized(this Quaternion rotation)
		{
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			rotation.x = 0f;
			rotation.z = 0f;
			((Quaternion)(ref rotation)).Normalize();
			return rotation;
		}

		public static Quaternion ConstrainYawPitchNormalized(this Quaternion rotation)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			Vector3 eulerAngles = ((Quaternion)(ref rotation)).eulerAngles;
			eulerAngles.z = 0f;
			return Quaternion.Euler(eulerAngles);
		}
	}
	public static class StopwatchExtensions
	{
		public static void Restart(this Stopwatch stopwatch)
		{
			stopwatch.Stop();
			stopwatch.Reset();
			stopwatch.Start();
		}
	}
	public static class StringExtensions
	{
		private static readonly StringBuilder k_StringBuilder = new StringBuilder();

		public static string FirstToUpper(this string str)
		{
			if (string.IsNullOrEmpty(str))
			{
				return string.Empty;
			}
			if (str.Length == 1)
			{
				return char.ToUpper(str[0]).ToString();
			}
			return $"{char.ToUpper(str[0])}{str.Substring(1)}";
		}

		public static string InsertSpacesBetweenWords(this string str)
		{
			if (string.IsNullOrEmpty(str))
			{
				return string.Empty;
			}
			k_StringBuilder.Length = 0;
			k_StringBuilder.Append(str[0]);
			int length = str.Length;
			for (int i = 0; i < length - 1; i++)
			{
				char c = str[i];
				char c2 = str[i + 1];
				bool flag = char.IsLower(c);
				bool flag2 = char.IsLower(c2);
				bool flag3 = flag && !flag2;
				if (i + 2 < length)
				{
					bool flag4 = char.IsLower(str[i + 2]);
					flag3 = flag3 || (!flag && !flag2 && flag4);
				}
				if (flag3)
				{
					k_StringBuilder.Append(' ');
				}
				k_StringBuilder.Append(c2);
			}
			return k_StringBuilder.ToString();
		}
	}
	public static class TransformExtensions
	{
		public static Pose GetLocalPose(this Transform transform)
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			Vector3 val = default(Vector3);
			Quaternion val2 = default(Quaternion);
			transform.GetLocalPositionAndRotation(ref val, ref val2);
			return new Pose(val, val2);
		}

		public static Pose GetWorldPose(this Transform transform)
		{
			//IL_000a: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			Vector3 val = default(Vector3);
			Quaternion val2 = default(Quaternion);
			transform.GetPositionAndRotation(ref val, ref val2);
			return new Pose(val, val2);
		}

		public static void SetLocalPose(this Transform transform, Pose pose)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			transform.SetLocalPositionAndRotation(pose.position, pose.rotation);
		}

		public static void SetWorldPose(this Transform transform, Pose pose)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			transform.SetPositionAndRotation(pose.position, pose.rotation);
		}

		public static Pose TransformPose(this Transform transform, Pose pose)
		{
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			return ((Pose)(ref pose)).GetTransformedBy(transform);
		}

		public static Pose InverseTransformPose(this Transform transform, Pose pose)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)transform == (Object)null)
			{
				throw new ArgumentNullException("transform");
			}
			return new Pose
			{
				position = transform.InverseTransformPoint(pose.position),
				rotation = Quaternion.Inverse(transform.rotation) * pose.rotation
			};
		}

		public static Ray InverseTransformRay(this Transform transform, Ray ray)
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)transform == (Object)null)
			{
				throw new ArgumentNullException("transform");
			}
			return new Ray(transform.InverseTransformPoint(((Ray)(ref ray)).origin), transform.InverseTransformDirection(((Ray)(ref ray)).direction));
		}
	}
	public static class TypeExtensions
	{
		private static readonly List<FieldInfo> k_Fields = new List<FieldInfo>();

		private static readonly List<string> k_TypeNames = new List<string>();

		public static void GetAssignableTypes(this Type type, List<Type> list, Func<Type, bool> predicate = null)
		{
			ReflectionUtils.ForEachType(delegate(Type t)
			{
				if (type.IsAssignableFrom(t) && !t.IsInterface && !t.IsAbstract && (predicate == null || predicate(t)))
				{
					list.Add(t);
				}
			});
		}

		public static void GetImplementationsOfInterface(this Type type, List<Type> list)
		{
			if (type.IsInterface)
			{
				type.GetAssignableTypes(list);
			}
		}

		public static void GetExtensionsOfClass(this Type type, List<Type> list)
		{
			if (type.IsClass)
			{
				type.GetAssignableTypes(list);
			}
		}

		public static void GetGenericInterfaces(this Type type, Type genericInterface, List<Type> interfaces)
		{
			Type[] interfaces2 = type.GetInterfaces();
			foreach (Type type2 in interfaces2)
			{
				if (type2.IsGenericType && type2.GetGenericTypeDefinition() == genericInterface)
				{
					interfaces.Add(type2);
				}
			}
		}

		public static PropertyInfo GetPropertyRecursively(this Type type, string name, BindingFlags bindingAttr)
		{
			PropertyInfo propertyInfo = type.GetProperty(name, bindingAttr);
			if (propertyInfo != null)
			{
				return propertyInfo;
			}
			if (type.BaseType != null)
			{
				propertyInfo = type.BaseType.GetPropertyRecursively(name, bindingAttr);
			}
			return propertyInfo;
		}

		public static FieldInfo GetFieldRecursively(this Type type, string name, BindingFlags bindingAttr)
		{
			FieldInfo fieldInfo = type.GetField(name, bindingAttr);
			if (fieldInfo != null)
			{
				return fieldInfo;
			}
			if (type.BaseType != null)
			{
				fieldInfo = type.BaseType.GetFieldRecursively(name, bindingAttr);
			}
			return fieldInfo;
		}

		public static void GetFieldsRecursively(this Type type, List<FieldInfo> fields, BindingFlags bindingAttr = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
		{
			while (true)
			{
				FieldInfo[] fields2 = type.GetFields(bindingAttr);
				foreach (FieldInfo item in fields2)
				{
					fields.Add(item);
				}
				Type baseType = type.BaseType;
				if (baseType != null)
				{
					type = baseType;
					continue;
				}
				break;
			}
		}

		public static void GetPropertiesRecursively(this Type type, List<PropertyInfo> fields, BindingFlags bindingAttr = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
		{
			while (true)
			{
				PropertyInfo[] properties = type.GetProperties(bindingAttr);
				foreach (PropertyInfo item in properties)
				{
					fields.Add(item);
				}
				Type baseType = type.BaseType;
				if (baseType != null)
				{
					type = baseType;
					continue;
				}
				break;
			}
		}

		public static void GetInterfaceFieldsFromClasses(this IEnumerable<Type> classes, List<FieldInfo> fields, List<Type> interfaceTypes, BindingFlags bindingAttr)
		{
			foreach (Type interfaceType in interfaceTypes)
			{
				if (!interfaceType.IsInterface)
				{
					throw new ArgumentException($"Type {interfaceType} in interfaceTypes is not an interface!");
				}
			}
			foreach (Type @class in classes)
			{
				if (!@class.IsClass)
				{
					throw new ArgumentException($"Type {@class} in classes is not a class!");
				}
				k_Fields.Clear();
				@class.GetFieldsRecursively(k_Fields, bindingAttr);
				foreach (FieldInfo k_Field in k_Fields)
				{
					Type[] interfaces = k_Field.FieldType.GetInterfaces();
					foreach (Type item in interfaces)
					{
						if (interfaceTypes.Contains(item))
						{
							fields.Add(k_Field);
							break;
						}
					}
				}
			}
		}

		public static TAttribute GetAttribute<TAttribute>(this Type type, bool inherit = false) where TAttribute : Attribute
		{
			return (TAttribute)type.GetCustomAttributes(typeof(TAttribute), inherit)[0];
		}

		public static void IsDefinedGetInheritedTypes<TAttribute>(this Type type, List<Type> types) where TAttribute : Attribute
		{
			while (type != null)
			{
				if (type.IsDefined(typeof(TAttribute), inherit: true))
				{
					types.Add(type);
				}
				type = type.BaseType;
			}
		}

		public static FieldInfo GetFieldInTypeOrBaseType(this Type type, string fieldName)
		{
			FieldInfo field;
			while (true)
			{
				if (type == null)
				{
					return null;
				}
				field = type.GetField(fieldName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy);
				if (field != null)
				{
					break;
				}
				type = type.BaseType;
			}
			return field;
		}

		public static string GetNameWithGenericArguments(this Type type)
		{
			string name = type.Name;
			name = name.Replace('+', '.');
			if (!type.IsGenericType)
			{
				return name;
			}
			name = name.Split('`')[0];
			Type[] genericArguments = type.GetGenericArguments();
			int num = genericArguments.Length;
			string[] array = new string[num];
			for (int i = 0; i < num; i++)
			{
				array[i] = genericArguments[i].GetNameWithGenericArguments();
			}
			return name + "<" + string.Join(", ", array) + ">";
		}

		public static string GetNameWithFullGenericArguments(this Type type)
		{
			string name = type.Name;
			name = name.Replace('+', '.');
			if (!type.IsGenericType)
			{
				return name;
			}
			name = name.Split('`')[0];
			Type[] genericArguments = type.GetGenericArguments();
			int num = genericArguments.Length;
			string[] array = new string[num];
			for (int i = 0; i < num; i++)
			{
				array[i] = genericArguments[i].GetFullNameWithGenericArgumentsInternal();
			}
			return name + "<" + string.Join(", ", array) + ">";
		}

		public static string GetFullNameWithGenericArguments(this Type type)
		{
			Type type2 = type.DeclaringType;
			if (type2 != null && !type.IsGenericParameter)
			{
				k_TypeNames.Clear();
				string nameWithFullGenericArguments = type.GetNameWithFullGenericArguments();
				k_TypeNames.Add(nameWithFullGenericArguments);
				while (true)
				{
					Type declaringType = type2.DeclaringType;
					if (declaringType == null)
					{
						break;
					}
					nameWithFullGenericArguments = type2.GetNameWithFullGenericArguments();
					k_TypeNames.Insert(0, nameWithFullGenericArguments);
					type2 = declaringType;
				}
				nameWithFullGenericArguments = type2.GetFullNameWithGenericArguments();
				k_TypeNames.Insert(0, nameWithFullGenericArguments);
				return string.Join(".", k_TypeNames.ToArray());
			}
			return type.GetFullNameWithGenericArgumentsInternal();
		}

		private static string GetFullNameWithGenericArgumentsInternal(this Type type)
		{
			string fullName = type.FullName;
			if (!type.IsGenericType)
			{
				return fullName;
			}
			fullName = fullName.Split('`')[0];
			Type[] genericArguments = type.GetGenericArguments();
			int num = genericArguments.Length;
			string[] array = new string[num];
			for (int i = 0; i < num; i++)
			{
				array[i] = genericArguments[i].GetFullNameWithGenericArguments();
			}
			return fullName + "<" + string.Join(", ", array) + ">";
		

BepInEx/plugins/HowToFishXR/Unity.XR.Interaction.Toolkit.dll

Decompiled 7 hours ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Permissions;
using System.Text;
using Unity.Collections;
using Unity.Jobs;
using Unity.Mathematics;
using Unity.Profiling;
using Unity.XR.CoreUtils;
using Unity.XR.CoreUtils.Bindings;
using Unity.XR.CoreUtils.Bindings.Variables;
using Unity.XR.CoreUtils.Collections;
using Unity.XR.CoreUtils.Datums;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using UnityEngine.Experimental.XR.Interaction;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Controls;
using UnityEngine.InputSystem.Layouts;
using UnityEngine.InputSystem.LowLevel;
using UnityEngine.InputSystem.UI;
using UnityEngine.InputSystem.Utilities;
using UnityEngine.InputSystem.XR;
using UnityEngine.Pool;
using UnityEngine.Rendering;
using UnityEngine.SceneManagement;
using UnityEngine.Scripting;
using UnityEngine.Scripting.APIUpdating;
using UnityEngine.Serialization;
using UnityEngine.SpatialTracking;
using UnityEngine.UI;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Jobs;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Receiver;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Receiver.Primitives;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Rendering;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.State;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Theme;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Theme.Audio;
using UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Theme.Primitives;
using UnityEngine.XR.Interaction.Toolkit.Attachment;
using UnityEngine.XR.Interaction.Toolkit.Filtering;
using UnityEngine.XR.Interaction.Toolkit.Inputs;
using UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.Hands;
using UnityEngine.XR.Interaction.Toolkit.Locomotion.Teleportation;
using UnityEngine.XR.Interaction.Toolkit.Transformers;
using UnityEngine.XR.Interaction.Toolkit.UI;
using UnityEngine.XR.Interaction.Toolkit.Utilities;
using UnityEngine.XR.Interaction.Toolkit.Utilities.Collections;
using UnityEngine.XR.Interaction.Toolkit.Utilities.Curves;
using UnityEngine.XR.Interaction.Toolkit.Utilities.Internal;
using UnityEngine.XR.Interaction.Toolkit.Utilities.Pooling;
using UnityEngine.XR.Interaction.Toolkit.Utilities.Tweenables.Primitives;
using UnityEngine.XR.Interaction.Toolkit.Utilities.Tweenables.SmartTweenableVariables;
using UnityEngine.XR.OpenXR.Features.Interactions;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: InternalsVisibleTo("Unity.XR.Interaction.Toolkit.Editor")]
[assembly: InternalsVisibleTo("Unity.XR.Interaction.Toolkit.Samples.StarterAssets.Editor")]
[assembly: InternalsVisibleTo("Unity.XR.Interaction.Toolkit.Tests")]
[assembly: InternalsVisibleTo("Unity.XR.Interaction.Toolkit.Editor.Tests")]
[assembly: InternalsVisibleTo("Unity.XR.Interaction.Toolkit.Samples.StarterAssets")]
[assembly: InternalsVisibleTo("Unity.XR.Interaction.Toolkit.Samples.ARStarterAssets")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		return new MonoScriptData
		{
			FilePathsData = new byte[32761]
			{
				0, 0, 0, 1, 0, 0, 0, 107, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
				111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
				116, 101, 109, 92, 74, 111, 98, 115, 92, 67,
				111, 108, 111, 114, 84, 119, 101, 101, 110, 74,
				111, 98, 46, 99, 115, 0, 0, 0, 4, 0,
				0, 0, 107, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
				54, 46, 53, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 65, 102, 102, 111, 114, 100, 97, 110,
				99, 101, 83, 121, 115, 116, 101, 109, 92, 74,
				111, 98, 115, 92, 70, 108, 111, 97, 116, 84,
				119, 101, 101, 110, 74, 111, 98, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 103, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
				111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
				116, 101, 109, 92, 74, 111, 98, 115, 92, 73,
				84, 119, 101, 101, 110, 74, 111, 98, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 106, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
				102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
				115, 116, 101, 109, 92, 74, 111, 98, 115, 92,
				84, 119, 101, 101, 110, 74, 111, 98, 68, 97,
				116, 97, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 127, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
				54, 46, 53, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 65, 102, 102, 111, 114, 100, 97, 110,
				99, 101, 83, 121, 115, 116, 101, 109, 92, 82,
				101, 99, 101, 105, 118, 101, 114, 92, 65, 117,
				100, 105, 111, 92, 65, 117, 100, 105, 111, 65,
				102, 102, 111, 114, 100, 97, 110, 99, 101, 82,
				101, 99, 101, 105, 118, 101, 114, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 125, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
				111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
				116, 101, 109, 92, 82, 101, 99, 101, 105, 118,
				101, 114, 92, 66, 97, 115, 101, 65, 102, 102,
				111, 114, 100, 97, 110, 99, 101, 83, 116, 97,
				116, 101, 82, 101, 99, 101, 105, 118, 101, 114,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				130, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
				111, 108, 107, 105, 116, 64, 50, 46, 54, 46,
				53, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				65, 102, 102, 111, 114, 100, 97, 110, 99, 101,
				83, 121, 115, 116, 101, 109, 92, 82, 101, 99,
				101, 105, 118, 101, 114, 92, 66, 97, 115, 101,
				65, 115, 121, 110, 99, 65, 102, 102, 111, 114,
				100, 97, 110, 99, 101, 83, 116, 97, 116, 101,
				82, 101, 99, 101, 105, 118, 101, 114, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 136, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
				102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
				115, 116, 101, 109, 92, 82, 101, 99, 101, 105,
				118, 101, 114, 92, 66, 97, 115, 101, 83, 121,
				110, 99, 104, 114, 111, 110, 111, 117, 115, 65,
				102, 102, 111, 114, 100, 97, 110, 99, 101, 83,
				116, 97, 116, 101, 82, 101, 99, 101, 105, 118,
				101, 114, 46, 99, 115, 0, 0, 0, 2, 0,
				0, 0, 122, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
				54, 46, 53, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 65, 102, 102, 111, 114, 100, 97, 110,
				99, 101, 83, 121, 115, 116, 101, 109, 92, 82,
				101, 99, 101, 105, 118, 101, 114, 92, 73, 65,
				102, 102, 111, 114, 100, 97, 110, 99, 101, 83,
				116, 97, 116, 101, 82, 101, 99, 101, 105, 118,
				101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 127, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
				54, 46, 53, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 65, 102, 102, 111, 114, 100, 97, 110,
				99, 101, 83, 121, 115, 116, 101, 109, 92, 82,
				101, 99, 101, 105, 118, 101, 114, 92, 73, 65,
				115, 121, 110, 99, 65, 102, 102, 111, 114, 100,
				97, 110, 99, 101, 83, 116, 97, 116, 101, 82,
				101, 99, 101, 105, 118, 101, 114, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 133, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
				111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
				116, 101, 109, 92, 82, 101, 99, 101, 105, 118,
				101, 114, 92, 73, 83, 121, 110, 99, 104, 114,
				111, 110, 111, 117, 115, 65, 102, 102, 111, 114,
				100, 97, 110, 99, 101, 83, 116, 97, 116, 101,
				82, 101, 99, 101, 105, 118, 101, 114, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 132, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
				102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
				115, 116, 101, 109, 92, 82, 101, 99, 101, 105,
				118, 101, 114, 92, 80, 114, 105, 109, 105, 116,
				105, 118, 101, 115, 92, 67, 111, 108, 111, 114,
				65, 102, 102, 111, 114, 100, 97, 110, 99, 101,
				82, 101, 99, 101, 105, 118, 101, 114, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 132, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
				102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
				115, 116, 101, 109, 92, 82, 101, 99, 101, 105,
				118, 101, 114, 92, 80, 114, 105, 109, 105, 116,
				105, 118, 101, 115, 92, 70, 108, 111, 97, 116,
				65, 102, 102, 111, 114, 100, 97, 110, 99, 101,
				82, 101, 99, 101, 105, 118, 101, 114, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 137, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
				102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
				115, 116, 101, 109, 92, 82, 101, 99, 101, 105,
				118, 101, 114, 92, 80, 114, 105, 109, 105, 116,
				105, 118, 101, 115, 92, 81, 117, 97, 116, 101,
				114, 110, 105, 111, 110, 65, 102, 102, 111, 114,
				100, 97, 110, 99, 101, 82, 101, 99, 101, 105,
				118, 101, 114, 46, 99, 115, 0, 0, 0, 1,
				0, 0, 0, 142, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
				46, 54, 46, 53, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 65, 102, 102, 111, 114, 100, 97,
				110, 99, 101, 83, 121, 115, 116, 101, 109, 92,
				82, 101, 99, 101, 105, 118, 101, 114, 92, 80,
				114, 105, 109, 105, 116, 105, 118, 101, 115, 92,
				81, 117, 97, 116, 101, 114, 110, 105, 111, 110,
				69, 117, 108, 101, 114, 65, 102, 102, 111, 114,
				100, 97, 110, 99, 101, 82, 101, 99, 101, 105,
				118, 101, 114, 46, 99, 115, 0, 0, 0, 1,
				0, 0, 0, 134, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
				46, 54, 46, 53, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 65, 102, 102, 111, 114, 100, 97,
				110, 99, 101, 83, 121, 115, 116, 101, 109, 92,
				82, 101, 99, 101, 105, 118, 101, 114, 92, 80,
				114, 105, 109, 105, 116, 105, 118, 101, 115, 92,
				86, 101, 99, 116, 111, 114, 50, 65, 102, 102,
				111, 114, 100, 97, 110, 99, 101, 82, 101, 99,
				101, 105, 118, 101, 114, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 134, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 65, 102, 102, 111, 114,
				100, 97, 110, 99, 101, 83, 121, 115, 116, 101,
				109, 92, 82, 101, 99, 101, 105, 118, 101, 114,
				92, 80, 114, 105, 109, 105, 116, 105, 118, 101,
				115, 92, 86, 101, 99, 116, 111, 114, 51, 65,
				102, 102, 111, 114, 100, 97, 110, 99, 101, 82,
				101, 99, 101, 105, 118, 101, 114, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 134, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
				111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
				116, 101, 109, 92, 82, 101, 99, 101, 105, 118,
				101, 114, 92, 80, 114, 105, 109, 105, 116, 105,
				118, 101, 115, 92, 86, 101, 99, 116, 111, 114,
				52, 65, 102, 102, 111, 114, 100, 97, 110, 99,
				101, 82, 101, 99, 101, 105, 118, 101, 114, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 136,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
				108, 107, 105, 116, 64, 50, 46, 54, 46, 53,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 65,
				102, 102, 111, 114, 100, 97, 110, 99, 101, 83,
				121, 115, 116, 101, 109, 92, 82, 101, 99, 101,
				105, 118, 101, 114, 92, 82, 101, 110, 100, 101,
				114, 105, 110, 103, 92, 66, 108, 101, 110, 100,
				83, 104, 97, 112, 101, 65, 102, 102, 111, 114,
				100, 97, 110, 99, 101, 82, 101, 99, 101, 105,
				118, 101, 114, 46, 99, 115, 0, 0, 0, 1,
				0, 0, 0, 151, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
				46, 54, 46, 53, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 65, 102, 102, 111, 114, 100, 97,
				110, 99, 101, 83, 121, 115, 116, 101, 109, 92,
				82, 101, 99, 101, 105, 118, 101, 114, 92, 82,
				101, 110, 100, 101, 114, 105, 110, 103, 92, 67,
				111, 108, 111, 114, 71, 114, 97, 100, 105, 101,
				110, 116, 76, 105, 110, 101, 82, 101, 110, 100,
				101, 114, 101, 114, 65, 102, 102, 111, 114, 100,
				97, 110, 99, 101, 82, 101, 99, 101, 105, 118,
				101, 114, 46, 99, 115, 0, 0, 0, 2, 0,
				0, 0, 147, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
				54, 46, 53, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 65, 102, 102, 111, 114, 100, 97, 110,
				99, 101, 83, 121, 115, 116, 101, 109, 92, 82,
				101, 99, 101, 105, 118, 101, 114, 92, 82, 101,
				110, 100, 101, 114, 105, 110, 103, 92, 67, 111,
				108, 111, 114, 77, 97, 116, 101, 114, 105, 97,
				108, 80, 114, 111, 112, 101, 114, 116, 121, 65,
				102, 102, 111, 114, 100, 97, 110, 99, 101, 82,
				101, 99, 101, 105, 118, 101, 114, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 147, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
				111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
				116, 101, 109, 92, 82, 101, 99, 101, 105, 118,
				101, 114, 92, 82, 101, 110, 100, 101, 114, 105,
				110, 103, 92, 70, 108, 111, 97, 116, 77, 97,
				116, 101, 114, 105, 97, 108, 80, 114, 111, 112,
				101, 114, 116, 121, 65, 102, 102, 111, 114, 100,
				97, 110, 99, 101, 82, 101, 99, 101, 105, 118,
				101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 149, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
				54, 46, 53, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 65, 102, 102, 111, 114, 100, 97, 110,
				99, 101, 83, 121, 115, 116, 101, 109, 92, 82,
				101, 99, 101, 105, 118, 101, 114, 92, 82, 101,
				110, 100, 101, 114, 105, 110, 103, 92, 86, 101,
				99, 116, 111, 114, 50, 77, 97, 116, 101, 114,
				105, 97, 108, 80, 114, 111, 112, 101, 114, 116,
				121, 65, 102, 102, 111, 114, 100, 97, 110, 99,
				101, 82, 101, 99, 101, 105, 118, 101, 114, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 149,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
				108, 107, 105, 116, 64, 50, 46, 54, 46, 53,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 65,
				102, 102, 111, 114, 100, 97, 110, 99, 101, 83,
				121, 115, 116, 101, 109, 92, 82, 101, 99, 101,
				105, 118, 101, 114, 92, 82, 101, 110, 100, 101,
				114, 105, 110, 103, 92, 86, 101, 99, 116, 111,
				114, 51, 77, 97, 116, 101, 114, 105, 97, 108,
				80, 114, 111, 112, 101, 114, 116, 121, 65, 102,
				102, 111, 114, 100, 97, 110, 99, 101, 82, 101,
				99, 101, 105, 118, 101, 114, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 149, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 65, 102, 102, 111,
				114, 100, 97, 110, 99, 101, 83, 121, 115, 116,
				101, 109, 92, 82, 101, 99, 101, 105, 118, 101,
				114, 92, 82, 101, 110, 100, 101, 114, 105, 110,
				103, 92, 86, 101, 99, 116, 111, 114, 52, 77,
				97, 116, 101, 114, 105, 97, 108, 80, 114, 111,
				112, 101, 114, 116, 121, 65, 102, 102, 111, 114,
				100, 97, 110, 99, 101, 82, 101, 99, 101, 105,
				118, 101, 114, 46, 99, 115, 0, 0, 0, 1,
				0, 0, 0, 152, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
				46, 54, 46, 53, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 65, 102, 102, 111, 114, 100, 97,
				110, 99, 101, 83, 121, 115, 116, 101, 109, 92,
				82, 101, 99, 101, 105, 118, 101, 114, 92, 84,
				114, 97, 110, 115, 102, 111, 114, 109, 97, 116,
				105, 111, 110, 92, 85, 110, 105, 102, 111, 114,
				109, 84, 114, 97, 110, 115, 102, 111, 114, 109,
				83, 99, 97, 108, 101, 65, 102, 102, 111, 114,
				100, 97, 110, 99, 101, 82, 101, 99, 101, 105,
				118, 101, 114, 46, 99, 115, 0, 0, 0, 1,
				0, 0, 0, 129, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
				46, 54, 46, 53, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 65, 102, 102, 111, 114, 100, 97,
				110, 99, 101, 83, 121, 115, 116, 101, 109, 92,
				82, 101, 99, 101, 105, 118, 101, 114, 92, 85,
				73, 92, 73, 109, 97, 103, 101, 67, 111, 108,
				111, 114, 65, 102, 102, 111, 114, 100, 97, 110,
				99, 101, 82, 101, 99, 101, 105, 118, 101, 114,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				117, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
				111, 108, 107, 105, 116, 64, 50, 46, 54, 46,
				53, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				65, 102, 102, 111, 114, 100, 97, 110, 99, 101,
				83, 121, 115, 116, 101, 109, 92, 82, 101, 110,
				100, 101, 114, 105, 110, 103, 92, 77, 97, 116,
				101, 114, 105, 97, 108, 72, 101, 108, 112, 101,
				114, 66, 97, 115, 101, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 121, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 65, 102, 102, 111, 114,
				100, 97, 110, 99, 101, 83, 121, 115, 116, 101,
				109, 92, 82, 101, 110, 100, 101, 114, 105, 110,
				103, 92, 77, 97, 116, 101, 114, 105, 97, 108,
				73, 110, 115, 116, 97, 110, 99, 101, 72, 101,
				108, 112, 101, 114, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 126, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
				50, 46, 54, 46, 53, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 65, 102, 102, 111, 114, 100,
				97, 110, 99, 101, 83, 121, 115, 116, 101, 109,
				92, 82, 101, 110, 100, 101, 114, 105, 110, 103,
				92, 77, 97, 116, 101, 114, 105, 97, 108, 80,
				114, 111, 112, 101, 114, 116, 121, 66, 108, 111,
				99, 107, 72, 101, 108, 112, 101, 114, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 119, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
				102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
				115, 116, 101, 109, 92, 83, 116, 97, 116, 101,
				92, 68, 97, 116, 97, 92, 65, 102, 102, 111,
				114, 100, 97, 110, 99, 101, 83, 116, 97, 116,
				101, 68, 97, 116, 97, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 124, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 65, 102, 102, 111, 114,
				100, 97, 110, 99, 101, 83, 121, 115, 116, 101,
				109, 92, 83, 116, 97, 116, 101, 92, 68, 97,
				116, 97, 92, 65, 102, 102, 111, 114, 100, 97,
				110, 99, 101, 83, 116, 97, 116, 101, 83, 104,
				111, 114, 116, 99, 117, 116, 115, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 131, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
				111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
				116, 101, 109, 92, 83, 116, 97, 116, 101, 92,
				80, 114, 111, 118, 105, 100, 101, 114, 92, 66,
				97, 115, 101, 65, 102, 102, 111, 114, 100, 97,
				110, 99, 101, 83, 116, 97, 116, 101, 80, 114,
				111, 118, 105, 100, 101, 114, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 141, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 65, 102, 102, 111,
				114, 100, 97, 110, 99, 101, 83, 121, 115, 116,
				101, 109, 92, 83, 116, 97, 116, 101, 92, 80,
				114, 111, 118, 105, 100, 101, 114, 92, 88, 82,
				73, 110, 116, 101, 114, 97, 99, 116, 97, 98,
				108, 101, 65, 102, 102, 111, 114, 100, 97, 110,
				99, 101, 83, 116, 97, 116, 101, 80, 114, 111,
				118, 105, 100, 101, 114, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 139, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 65, 102, 102, 111, 114,
				100, 97, 110, 99, 101, 83, 121, 115, 116, 101,
				109, 92, 83, 116, 97, 116, 101, 92, 80, 114,
				111, 118, 105, 100, 101, 114, 92, 88, 82, 73,
				110, 116, 101, 114, 97, 99, 116, 111, 114, 65,
				102, 102, 111, 114, 100, 97, 110, 99, 101, 83,
				116, 97, 116, 101, 80, 114, 111, 118, 105, 100,
				101, 114, 46, 99, 115, 0, 0, 0, 4, 0,
				0, 0, 126, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
				54, 46, 53, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 65, 102, 102, 111, 114, 100, 97, 110,
				99, 101, 83, 121, 115, 116, 101, 109, 92, 84,
				104, 101, 109, 101, 92, 65, 117, 100, 105, 111,
				92, 65, 117, 100, 105, 111, 65, 102, 102, 111,
				114, 100, 97, 110, 99, 101, 84, 104, 101, 109,
				101, 68, 97, 116, 117, 109, 46, 99, 115, 0,
				0, 0, 2, 0, 0, 0, 114, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 65, 102, 102, 111,
				114, 100, 97, 110, 99, 101, 83, 121, 115, 116,
				101, 109, 92, 84, 104, 101, 109, 101, 92, 66,
				97, 115, 101, 65, 102, 102, 111, 114, 100, 97,
				110, 99, 101, 84, 104, 101, 109, 101, 46, 99,
				115, 0, 0, 0, 3, 0, 0, 0, 131, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
				102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
				115, 116, 101, 109, 92, 84, 104, 101, 109, 101,
				92, 80, 114, 105, 109, 105, 116, 105, 118, 101,
				115, 92, 67, 111, 108, 111, 114, 65, 102, 102,
				111, 114, 100, 97, 110, 99, 101, 84, 104, 101,
				109, 101, 68, 97, 116, 117, 109, 46, 99, 115,
				0, 0, 0, 3, 0, 0, 0, 131, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
				111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
				116, 101, 109, 92, 84, 104, 101, 109, 101, 92,
				80, 114, 105, 109, 105, 116, 105, 118, 101, 115,
				92, 70, 108, 111, 97, 116, 65, 102, 102, 111,
				114, 100, 97, 110, 99, 101, 84, 104, 101, 109,
				101, 68, 97, 116, 117, 109, 46, 99, 115, 0,
				0, 0, 3, 0, 0, 0, 133, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 65, 102, 102, 111,
				114, 100, 97, 110, 99, 101, 83, 121, 115, 116,
				101, 109, 92, 84, 104, 101, 109, 101, 92, 80,
				114, 105, 109, 105, 116, 105, 118, 101, 115, 92,
				86, 101, 99, 116, 111, 114, 50, 65, 102, 102,
				111, 114, 100, 97, 110, 99, 101, 84, 104, 101,
				109, 101, 68, 97, 116, 117, 109, 46, 99, 115,
				0, 0, 0, 3, 0, 0, 0, 133, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 65, 102, 102,
				111, 114, 100, 97, 110, 99, 101, 83, 121, 115,
				116, 101, 109, 92, 84, 104, 101, 109, 101, 92,
				80, 114, 105, 109, 105, 116, 105, 118, 101, 115,
				92, 86, 101, 99, 116, 111, 114, 51, 65, 102,
				102, 111, 114, 100, 97, 110, 99, 101, 84, 104,
				101, 109, 101, 68, 97, 116, 117, 109, 46, 99,
				115, 0, 0, 0, 3, 0, 0, 0, 133, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 65, 102,
				102, 111, 114, 100, 97, 110, 99, 101, 83, 121,
				115, 116, 101, 109, 92, 84, 104, 101, 109, 101,
				92, 80, 114, 105, 109, 105, 116, 105, 118, 101,
				115, 92, 86, 101, 99, 116, 111, 114, 52, 65,
				102, 102, 111, 114, 100, 97, 110, 99, 101, 84,
				104, 101, 109, 101, 68, 97, 116, 117, 109, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 113,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
				108, 107, 105, 116, 64, 50, 46, 54, 46, 53,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 65,
				82, 92, 73, 110, 116, 101, 114, 97, 99, 116,
				97, 98, 108, 101, 115, 92, 65, 82, 65, 110,
				110, 111, 116, 97, 116, 105, 111, 110, 73, 110,
				116, 101, 114, 97, 99, 116, 97, 98, 108, 101,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				114, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
				111, 108, 107, 105, 116, 64, 50, 46, 54, 46,
				53, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				65, 82, 92, 73, 110, 116, 101, 114, 97, 99,
				116, 97, 98, 108, 101, 115, 92, 65, 82, 66,
				97, 115, 101, 71, 101, 115, 116, 117, 114, 101,
				73, 110, 116, 101, 114, 97, 99, 116, 97, 98,
				108, 101, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 112, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
				54, 46, 53, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 65, 82, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 97, 98, 108, 101, 115, 92, 65,
				82, 80, 108, 97, 99, 101, 109, 101, 110, 116,
				73, 110, 116, 101, 114, 97, 99, 116, 97, 98,
				108, 101, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 111, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
				54, 46, 53, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 65, 82, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 97, 98, 108, 101, 115, 92, 65,
				82, 82, 111, 116, 97, 116, 105, 111, 110, 73,
				110, 116, 101, 114, 97, 99, 116, 97, 98, 108,
				101, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 108, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
				111, 111, 108, 107, 105, 116, 64, 50, 46, 54,
				46, 53, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 65, 82, 92, 73, 110, 116, 101, 114, 97,
				99, 116, 97, 98, 108, 101, 115, 92, 65, 82,
				83, 99, 97, 108, 101, 73, 110, 116, 101, 114,
				97, 99, 116, 97, 98, 108, 101, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 112, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 65, 82, 92,
				73, 110, 116, 101, 114, 97, 99, 116, 97, 98,
				108, 101, 115, 92, 65, 82, 83, 101, 108, 101,
				99, 116, 105, 111, 110, 73, 110, 116, 101, 114,
				97, 99, 116, 97, 98, 108, 101, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 114, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 65, 82, 92,
				73, 110, 116, 101, 114, 97, 99, 116, 97, 98,
				108, 101, 115, 92, 65, 82, 84, 114, 97, 110,
				115, 108, 97, 116, 105, 111, 110, 73, 110, 116,
				101, 114, 97, 99, 116, 97, 98, 108, 101, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 106,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
				108, 107, 105, 116, 64, 50, 46, 54, 46, 53,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 65,
				82, 92, 73, 110, 116, 101, 114, 97, 99, 116,
				111, 114, 115, 92, 65, 82, 71, 101, 115, 116,
				117, 114, 101, 73, 110, 116, 101, 114, 97, 99,
				116, 111, 114, 46, 99, 115, 0, 0, 0, 1,
				0, 0, 0, 94, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
				46, 54, 46, 53, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 73, 110, 112, 117, 116, 115, 92,
				67, 97, 114, 100, 105, 110, 97, 108, 85, 116,
				105, 108, 105, 116, 121, 46, 99, 115, 0, 0,
				0, 6, 0, 0, 0, 107, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 112, 117, 116,
				115, 92, 67, 111, 109, 112, 111, 115, 105, 116,
				101, 115, 92, 70, 97, 108, 108, 98, 97, 99,
				107, 67, 111, 109, 112, 111, 115, 105, 116, 101,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				97, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
				111, 108, 107, 105, 116, 64, 50, 46, 54, 46,
				53, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				73, 110, 112, 117, 116, 115, 92, 73, 110, 112,
				117, 116, 65, 99, 116, 105, 111, 110, 77, 97,
				110, 97, 103, 101, 114, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 108, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 112, 117, 116,
				115, 92, 73, 110, 112, 117, 116, 65, 99, 116,
				105, 111, 110, 80, 114, 111, 112, 101, 114, 116,
				121, 69, 120, 116, 101, 110, 115, 105, 111, 110,
				115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 109, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
				111, 111, 108, 107, 105, 116, 64, 50, 46, 54,
				46, 53, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 73, 110, 112, 117, 116, 115, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 115,
				92, 83, 101, 99, 116, 111, 114, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 117, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
				112, 117, 116, 115, 92, 83, 105, 109, 117, 108,
				97, 116, 105, 111, 110, 92, 72, 97, 110, 100,
				115, 92, 72, 97, 110, 100, 69, 120, 112, 114,
				101, 115, 115, 105, 111, 110, 67, 97, 112, 116,
				117, 114, 101, 46, 99, 115, 0, 0, 0, 1,
				0, 0, 0, 114, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
				46, 54, 46, 53, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 73, 110, 112, 117, 116, 115, 92,
				83, 105, 109, 117, 108, 97, 116, 105, 111, 110,
				92, 72, 97, 110, 100, 115, 92, 72, 97, 110,
				100, 69, 120, 112, 114, 101, 115, 115, 105, 111,
				110, 78, 97, 109, 101, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 116, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 112, 117, 116,
				115, 92, 83, 105, 109, 117, 108, 97, 116, 105,
				111, 110, 92, 72, 97, 110, 100, 115, 92, 88,
				82, 83, 105, 109, 117, 108, 97, 116, 101, 100,
				72, 97, 110, 100, 83, 116, 97, 116, 101, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 116,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
				108, 107, 105, 116, 64, 50, 46, 54, 46, 53,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
				110, 112, 117, 116, 115, 92, 83, 105, 109, 117,
				108, 97, 116, 105, 111, 110, 92, 83, 105, 109,
				117, 108, 97, 116, 101, 100, 73, 110, 112, 117,
				116, 76, 97, 121, 111, 117, 116, 76, 111, 97,
				100, 101, 114, 46, 99, 115, 0, 0, 0, 3,
				0, 0, 0, 107, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
				46, 54, 46, 53, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 73, 110, 112, 117, 116, 115, 92,
				83, 105, 109, 117, 108, 97, 116, 105, 111, 110,
				92, 88, 82, 68, 101, 118, 105, 99, 101, 83,
				105, 109, 117, 108, 97, 116, 111, 114, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 113, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
				112, 117, 116, 115, 92, 83, 105, 109, 117, 108,
				97, 116, 105, 111, 110, 92, 88, 82, 68, 101,
				118, 105, 99, 101, 83, 105, 109, 117, 108, 97,
				116, 111, 114, 76, 111, 97, 100, 101, 114, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 115,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
				108, 107, 105, 116, 64, 50, 46, 54, 46, 53,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
				110, 112, 117, 116, 115, 92, 83, 105, 109, 117,
				108, 97, 116, 105, 111, 110, 92, 88, 82, 68,
				101, 118, 105, 99, 101, 83, 105, 109, 117, 108,
				97, 116, 111, 114, 83, 101, 116, 116, 105, 110,
				103, 115, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 111, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
				54, 46, 53, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 73, 110, 112, 117, 116, 115, 92, 83,
				105, 109, 117, 108, 97, 116, 105, 111, 110, 92,
				88, 82, 83, 105, 109, 117, 108, 97, 116, 101,
				100, 67, 111, 110, 116, 114, 111, 108, 108, 101,
				114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 116, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
				111, 111, 108, 107, 105, 116, 64, 50, 46, 54,
				46, 53, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 73, 110, 112, 117, 116, 115, 92, 83, 105,
				109, 117, 108, 97, 116, 105, 111, 110, 92, 88,
				82, 83, 105, 109, 117, 108, 97, 116, 101, 100,
				67, 111, 110, 116, 114, 111, 108, 108, 101, 114,
				83, 116, 97, 116, 101, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 104, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 112, 117, 116,
				115, 92, 83, 105, 109, 117, 108, 97, 116, 105,
				111, 110, 92, 88, 82, 83, 105, 109, 117, 108,
				97, 116, 101, 100, 72, 77, 68, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 109, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 73, 110, 112,
				117, 116, 115, 92, 83, 105, 109, 117, 108, 97,
				116, 105, 111, 110, 92, 88, 82, 83, 105, 109,
				117, 108, 97, 116, 101, 100, 72, 77, 68, 83,
				116, 97, 116, 101, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 106, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
				50, 46, 54, 46, 53, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 73, 110, 112, 117, 116, 115,
				92, 88, 82, 72, 97, 110, 100, 83, 107, 101,
				108, 101, 116, 111, 110, 80, 111, 107, 101, 68,
				105, 115, 112, 108, 97, 99, 101, 114, 46, 99,
				115, 0, 0, 0, 3, 0, 0, 0, 101, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
				112, 117, 116, 115, 92, 88, 82, 73, 110, 112,
				117, 116, 77, 111, 100, 97, 108, 105, 116, 121,
				77, 97, 110, 97, 103, 101, 114, 46, 99, 115,
				0, 0, 0, 3, 0, 0, 0, 104, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 73, 110, 112,
				117, 116, 115, 92, 88, 82, 73, 110, 112, 117,
				116, 84, 114, 97, 99, 107, 105, 110, 103, 65,
				103, 103, 114, 101, 103, 97, 116, 111, 114, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 100,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
				108, 107, 105, 116, 64, 50, 46, 54, 46, 53,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
				110, 112, 117, 116, 115, 92, 88, 82, 84, 114,
				97, 110, 115, 102, 111, 114, 109, 83, 116, 97,
				98, 105, 108, 105, 122, 101, 114, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 121, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 92, 65,
				116, 116, 97, 99, 104, 109, 101, 110, 116, 92,
				65, 116, 116, 97, 99, 104, 80, 111, 105, 110,
				116, 86, 101, 108, 111, 99, 105, 116, 121, 84,
				114, 97, 99, 107, 101, 114, 46, 99, 115, 0,
				0, 0, 2, 0, 0, 0, 123, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 92, 65, 116,
				116, 97, 99, 104, 109, 101, 110, 116, 92, 73,
				65, 116, 116, 97, 99, 104, 80, 111, 105, 110,
				116, 86, 101, 108, 111, 99, 105, 116, 121, 80,
				114, 111, 118, 105, 100, 101, 114, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 122, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 92, 65,
				116, 116, 97, 99, 104, 109, 101, 110, 116, 92,
				73, 65, 116, 116, 97, 99, 104, 80, 111, 105,
				110, 116, 86, 101, 108, 111, 99, 105, 116, 121,
				84, 114, 97, 99, 107, 101, 114, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 120, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 92, 65,
				116, 116, 114, 105, 98, 117, 116, 101, 115, 92,
				67, 97, 110, 70, 111, 99, 117, 115, 77, 117,
				108, 116, 105, 112, 108, 101, 65, 116, 116, 114,
				105, 98, 117, 116, 101, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 121, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 92, 65, 116, 116,
				114, 105, 98, 117, 116, 101, 115, 92, 67, 97,
				110, 83, 101, 108, 101, 99, 116, 77, 117, 108,
				116, 105, 112, 108, 101, 65, 116, 116, 114, 105,
				98, 117, 116, 101, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 128, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
				50, 46, 54, 46, 53, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 73, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 92, 65, 116, 116, 114,
				105, 98, 117, 116, 101, 115, 92, 88, 82, 84,
				97, 114, 103, 101, 116, 69, 118, 97, 108, 117,
				97, 116, 111, 114, 69, 110, 97, 98, 108, 101,
				100, 65, 116, 116, 114, 105, 98, 117, 116, 101,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				117, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
				111, 108, 107, 105, 116, 64, 50, 46, 54, 46,
				53, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 92, 67, 111, 110, 116, 114, 111, 108, 108,
				101, 114, 115, 92, 65, 99, 116, 105, 111, 110,
				66, 97, 115, 101, 100, 67, 111, 110, 116, 114,
				111, 108, 108, 101, 114, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 128, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 92, 67, 111, 110,
				116, 114, 111, 108, 108, 101, 114, 115, 92, 65,
				99, 116, 105, 111, 110, 66, 97, 115, 101, 100,
				67, 111, 110, 116, 114, 111, 108, 108, 101, 114,
				46, 100, 101, 112, 114, 101, 99, 97, 116, 101,
				100, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 117, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
				111, 111, 108, 107, 105, 116, 64, 50, 46, 54,
				46, 53, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 73, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 92, 67, 111, 110, 116, 114, 111, 108,
				108, 101, 114, 115, 92, 73, 88, 82, 83, 99,
				97, 108, 101, 86, 97, 108, 117, 101, 80, 114,
				111, 118, 105, 100, 101, 114, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 112, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 92, 67, 111,
				110, 116, 114, 111, 108, 108, 101, 114, 115, 92,
				88, 82, 66, 97, 115, 101, 67, 111, 110, 116,
				114, 111, 108, 108, 101, 114, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 123, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 92, 67, 111,
				110, 116, 114, 111, 108, 108, 101, 114, 115, 92,
				88, 82, 66, 97, 115, 101, 67, 111, 110, 116,
				114, 111, 108, 108, 101, 114, 46, 100, 101, 112,
				114, 101, 99, 97, 116, 101, 100, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 108, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 92, 67,
				111, 110, 116, 114, 111, 108, 108, 101, 114, 115,
				92, 88, 82, 67, 111, 110, 116, 114, 111, 108,
				108, 101, 114, 46, 99, 115, 0, 0, 0, 1,
				0, 0, 0, 116, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
				46, 54, 46, 53, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 73, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 92, 67, 111, 110, 116, 114,
				111, 108, 108, 101, 114, 115, 92, 88, 82, 67,
				111, 110, 116, 114, 111, 108, 108, 101, 114, 82,
				101, 99, 111, 114, 100, 101, 114, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 117, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 92, 67,
				111, 110, 116, 114, 111, 108, 108, 101, 114, 115,
				92, 88, 82, 67, 111, 110, 116, 114, 111, 108,
				108, 101, 114, 82, 101, 99, 111, 114, 100, 105,
				110, 103, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 128, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
				54, 46, 53, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 92, 67, 111, 110, 116, 114, 111,
				108, 108, 101, 114, 115, 92, 88, 82, 67, 111,
				110, 116, 114, 111, 108, 108, 101, 114, 82, 101,
				99, 111, 114, 100, 105, 110, 103, 46, 100, 101,
				112, 114, 101, 99, 97, 116, 101, 100, 46, 99,
				115, 0, 0, 0, 2, 0, 0, 0, 113, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 92,
				67, 111, 110, 116, 114, 111, 108, 108, 101, 114,
				115, 92, 88, 82, 67, 111, 110, 116, 114, 111,
				108, 108, 101, 114, 83, 116, 97, 116, 101, 46,
				99, 115, 0, 0, 0, 2, 0, 0, 0, 124,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
				108, 107, 105, 116, 64, 50, 46, 54, 46, 53,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				92, 67, 111, 110, 116, 114, 111, 108, 108, 101,
				114, 115, 92, 88, 82, 67, 111, 110, 116, 114,
				111, 108, 108, 101, 114, 83, 116, 97, 116, 101,
				46, 100, 101, 112, 114, 101, 99, 97, 116, 101,
				100, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 119, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
				111, 111, 108, 107, 105, 116, 64, 50, 46, 54,
				46, 53, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 73, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 92, 67, 111, 110, 116, 114, 111, 108,
				108, 101, 114, 115, 92, 88, 82, 83, 99, 114,
				101, 101, 110, 83, 112, 97, 99, 101, 67, 111,
				110, 116, 114, 111, 108, 108, 101, 114, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 130, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 92,
				67, 111, 110, 116, 114, 111, 108, 108, 101, 114,
				115, 92, 88, 82, 83, 99, 114, 101, 101, 110,
				83, 112, 97, 99, 101, 67, 111, 110, 116, 114,
				111, 108, 108, 101, 114, 46, 100, 101, 112, 114,
				101, 99, 97, 116, 101, 100, 46, 99, 115, 0,
				0, 0, 2, 0, 0, 0, 114, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 92, 70, 105,
				108, 116, 101, 114, 105, 110, 103, 92, 72, 111,
				118, 101, 114, 92, 73, 88, 82, 72, 111, 118,
				101, 114, 70, 105, 108, 116, 101, 114, 46, 99,
				115, 0, 0, 0, 2, 0, 0, 0, 142, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 92,
				70, 105, 108, 116, 101, 114, 105, 110, 103, 92,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 83, 116, 114, 101, 110, 103, 116, 104, 92,
				73, 88, 82, 73, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 83, 116, 114, 101, 110, 103,
				116, 104, 70, 105, 108, 116, 101, 114, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 107, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 92,
				70, 105, 108, 116, 101, 114, 105, 110, 103, 92,
				73, 88, 82, 70, 105, 108, 116, 101, 114, 76,
				105, 115, 116, 46, 99, 115, 0, 0, 0, 1,
				0, 0, 0, 126, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
				46, 54, 46, 53, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 73, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 92, 70, 105, 108, 116, 101,
				114, 105, 110, 103, 92, 80, 111, 107, 101, 92,
				73, 77, 117, 108, 116, 105, 80, 111, 107, 101,
				83, 116, 97, 116, 101, 68, 97, 116, 97, 80,
				114, 111, 118, 105, 100, 101, 114, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 121, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 92, 70,
				105, 108, 116, 101, 114, 105, 110, 103, 92, 80,
				111, 107, 101, 92, 73, 80, 111, 107, 101, 83,
				116, 97, 116, 101, 68, 97, 116, 97, 80, 114,
				111, 118, 105, 100, 101, 114, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 112, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 92, 70, 105,
				108, 116, 101, 114, 105, 110, 103, 92, 80, 111,
				107, 101, 92, 73, 88, 82, 80, 111, 107, 101,
				70, 105, 108, 116, 101, 114, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 112, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 92, 70, 105,
				108, 116, 101, 114, 105, 110, 103, 92, 80, 111,
				107, 101, 92, 80, 111, 107, 101, 83, 116, 97,
				116, 101, 68, 97, 116, 97, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 116, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 92, 70, 105,
				108, 116, 101, 114, 105, 110, 103, 92, 80, 111,
				107, 101, 92, 80, 111, 107, 101, 84, 104, 114,
				101, 115, 104, 111, 108, 100, 68, 97, 116, 97,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				117, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
				111, 108, 107, 105, 116, 64, 50, 46, 54, 46,
				53, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 92, 70, 105, 108, 116, 101, 114, 105, 110,
				103, 92, 80, 111, 107, 101, 92, 80, 111, 107,
				101, 84, 104, 114, 101, 115, 104, 111, 108, 100,
				68, 97, 116, 117, 109, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 125, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 92, 70, 105, 108,
				116, 101, 114, 105, 110, 103, 92, 80, 111, 107,
				101, 92, 80, 111, 107, 101, 84, 104, 114, 101,
				115, 104, 111, 108, 100, 68, 97, 116, 117, 109,
				80, 114, 111, 112, 101, 114, 116, 121, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 111, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 92,
				70, 105, 108, 116, 101, 114, 105, 110, 103, 92,
				80, 111, 107, 101, 92, 88, 82, 80, 111, 107,
				101, 70, 105, 108, 116, 101, 114, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 110, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 92, 70,
				105, 108, 116, 101, 114, 105, 110, 103, 92, 80,
				111, 107, 101, 92, 88, 82, 80, 111, 107, 101,
				76, 111, 103, 105, 99, 46, 99, 115, 0, 0,
				0, 2, 0, 0, 0, 116, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 92, 70, 105, 108,
				116, 101, 114, 105, 110, 103, 92, 83, 101, 108,
				101, 99, 116, 92, 73, 88, 82, 83, 101, 108,
				101, 99, 116, 70, 105, 108, 116, 101, 114, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 138,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
				108, 107, 105, 116, 64, 50, 46, 54, 46, 53,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				92, 70, 105, 108, 116, 101, 114, 105, 110, 103,
				92, 84, 97, 114, 103, 101, 116, 92, 69, 118,
				97, 108, 117, 97, 116, 111, 114, 115, 92, 73,
				88, 82, 84, 97, 114, 103, 101, 116, 69, 118,
				97, 108, 117, 97, 116, 111, 114, 76, 105, 110,
				107, 97, 98, 108, 101, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 132, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 92, 70, 105, 108,
				116, 101, 114, 105, 110, 103, 92, 84, 97, 114,
				103, 101, 116, 92, 69, 118, 97, 108, 117, 97,
				116, 111, 114, 115, 92, 88, 82, 65, 110, 103,
				108, 101, 71, 97, 122, 101, 69, 118, 97, 108,
				117, 97, 116, 111, 114, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 131, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 92, 70, 105, 108,
				116, 101, 114, 105, 110, 103, 92, 84, 97, 114,
				103, 101, 116, 92, 69, 118, 97, 108, 117, 97,
				116, 111, 114, 115, 92, 88, 82, 68, 105, 115,
				116, 97, 110, 99, 101, 69, 118, 97, 108, 117,
				97, 116, 111, 114, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 135, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
				50, 46, 54, 46, 53, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 73, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 92, 70, 105, 108, 116,
				101, 114, 105, 110, 103, 92, 84, 97, 114, 103,
				101, 116, 92, 69, 118, 97, 108, 117, 97, 116,
				111, 114, 115, 92, 88, 82, 76, 97, 115, 116,
				83, 101, 108, 101, 99, 116, 101, 100, 69, 118,
				97, 108, 117, 97, 116, 111, 114, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 129, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 92, 70,
				105, 108, 116, 101, 114, 105, 110, 103, 92, 84,
				97, 114, 103, 101, 116, 92, 69, 118, 97, 108,
				117, 97, 116, 111, 114, 115, 92, 88, 82, 84,
				97, 114, 103, 101, 116, 69, 118, 97, 108, 117,
				97, 116, 111, 114, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 124, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
				50, 46, 54, 46, 53, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 73, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 92, 70, 105, 108, 116,
				101, 114, 105, 110, 103, 92, 84, 97, 114, 103,
				101, 116, 92, 70, 105, 108, 116, 101, 114, 115,
				92, 73, 88, 82, 84, 97, 114, 103, 101, 116,
				70, 105, 108, 116, 101, 114, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 127, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 92, 70, 105,
				108, 116, 101, 114, 105, 110, 103, 92, 84, 97,
				114, 103, 101, 116, 92, 70, 105, 108, 116, 101,
				114, 115, 92, 88, 82, 66, 97, 115, 101, 84,
				97, 114, 103, 101, 116, 70, 105, 108, 116, 101,
				114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 123, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
				111, 111, 108, 107, 105, 116, 64, 50, 46, 54,
				46, 53, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 73, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 92, 70, 105, 108, 116, 101, 114, 105,
				110, 103, 92, 84, 97, 114, 103, 101, 116, 92,
				70, 105, 108, 116, 101, 114, 115, 92, 88, 82,
				84, 97, 114, 103, 101, 116, 70, 105, 108, 116,
				101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 110, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
				54, 46, 53, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 92, 73, 110, 116, 101, 114, 97,
				99, 116, 97, 98, 108, 101, 115, 92, 68, 105,
				115, 116, 97, 110, 99, 101, 73, 110, 102, 111,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				121, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
				111, 108, 107, 105, 116, 64, 50, 46, 54, 46,
				53, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 92, 73, 110, 116, 101, 114, 97, 99, 116,
				97, 98, 108, 101, 115, 92, 73, 88, 82, 65,
				99, 116, 105, 118, 97, 116, 101, 73, 110, 116,
				101, 114, 97, 99, 116, 97, 98, 108, 101, 46,
				99, 115, 0, 0, 0, 2, 0, 0, 0, 118,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
				108, 107, 105, 116, 64, 50, 46, 54, 46, 53,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				92, 73, 110, 116, 101, 114, 97, 99, 116, 97,
				98, 108, 101, 115, 92, 73, 88, 82, 70, 111,
				99, 117, 115, 73, 110, 116, 101, 114, 97, 99,
				116, 97, 98, 108, 101, 46, 99, 115, 0, 0,
				0, 2, 0, 0, 0, 118, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 97, 98, 108, 101, 115,
				92, 73, 88, 82, 72, 111, 118, 101, 114, 73,
				110, 116, 101, 114, 97, 99, 116, 97, 98, 108,
				101, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 113, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
				111, 111, 108, 107, 105, 116, 64, 50, 46, 54,
				46, 53, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 73, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 92, 73, 110, 116, 101, 114, 97, 99,
				116, 97, 98, 108, 101, 115, 92, 73, 88, 82,
				73, 110, 116, 101, 114, 97, 99, 116, 97, 98,
				108, 101, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 132, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
				54, 46, 53, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 92, 73, 110, 116, 101, 114, 97,
				99, 116, 97, 98, 108, 101, 115, 92, 73, 88,
				82, 73, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 83, 116, 114, 101, 110, 103, 116, 104,
				73, 110, 116, 101, 114, 97, 99, 116, 97, 98,
				108, 101, 46, 99, 115, 0, 0, 0, 2, 0,
				0, 0, 119, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
				54, 46, 53, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 92, 73, 110, 116, 101, 114, 97,
				99, 116, 97, 98, 108, 101, 115, 92, 73, 88,
				82, 83, 101, 108, 101, 99, 116, 73, 110, 116,
				101, 114, 97, 99, 116, 97, 98, 108, 101, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 133,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
				108, 107, 105, 116, 64, 50, 46, 54, 46, 53,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				92, 73, 110, 116, 101, 114, 97, 99, 116, 97,
				98, 108, 101, 115, 92, 86, 105, 115, 117, 97,
				108, 92, 73, 88, 82, 73, 110, 116, 101, 114,
				97, 99, 116, 97, 98, 108, 101, 67, 117, 115,
				116, 111, 109, 82, 101, 116, 105, 99, 108, 101,
				46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
				129, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
				111, 108, 107, 105, 116, 64, 50, 46, 54, 46,
				53, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 92, 73, 110, 116, 101, 114, 97, 99, 116,
				97, 98, 108, 101, 115, 92, 86, 105, 115, 117,
				97, 108, 92, 88, 82, 84, 105, 110, 116, 73,
				110, 116, 101, 114, 97, 99, 116, 97, 98, 108,
				101, 86, 105, 115, 117, 97, 108, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 116, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 92, 73,
				110, 116, 101, 114, 97, 99, 116, 97, 98, 108,
				101, 115, 92, 88, 82, 66, 97, 115, 101, 73,
				110, 116, 101, 114, 97, 99, 116, 97, 98, 108,
				101, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 127, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
				111, 111, 108, 107, 105, 116, 64, 50, 46, 54,
				46, 53, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 73, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 92, 73, 110, 116, 101, 114, 97, 99,
				116, 97, 98, 108, 101, 115, 92, 88, 82, 66,
				97, 115, 101, 73, 110, 116, 101, 114, 97, 99,
				116, 97, 98, 108, 101, 46, 100, 101, 112, 114,
				101, 99, 97, 116, 101, 100, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 116, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 97, 98, 108, 101,
				115, 92, 88, 82, 71, 114, 97, 98, 73, 110,
				116, 101, 114, 97, 99, 116, 97, 98, 108, 101,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				127, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
				111, 108, 107, 105, 116, 64, 50, 46, 54, 46,
				53, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 92, 73, 110, 116, 101, 114, 97, 99, 116,
				97, 98, 108, 101, 115, 92, 88, 82, 71, 114,
				97, 98, 73, 110, 116, 101, 114, 97, 99, 116,
				97, 98, 108, 101, 46, 100, 101, 112, 114, 101,
				99, 97, 116, 101, 100, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 122, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 97, 98, 108, 101, 115,
				92, 88, 82, 73, 110, 116, 101, 114, 97, 99,
				116, 97, 98, 108, 101, 83, 110, 97, 112, 86,
				111, 108, 117, 109, 101, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 118, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 97, 98, 108, 101, 115,
				92, 88, 82, 83, 105, 109, 112, 108, 101, 73,
				110, 116, 101, 114, 97, 99, 116, 97, 98, 108,
				101, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 117, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
				111, 111, 108, 107, 105, 116, 64, 50, 46, 54,
				46, 53, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 73, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 92, 73, 110, 116, 101, 114, 97, 99,
				116, 111, 114, 115, 92, 73, 88, 82, 65, 99,
				116, 105, 118, 97, 116, 101, 73, 110, 116, 101,
				114, 97, 99, 116, 111, 114, 46, 99, 115, 0,
				0, 0, 2, 0, 0, 0, 110, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 111, 114, 115, 92,
				73, 88, 82, 71, 114, 111, 117, 112, 77, 101,
				109, 98, 101, 114, 46, 99, 115, 0, 0, 0,
				2, 0, 0, 0, 114, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
				50, 46, 54, 46, 53, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 73, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 111, 114, 115, 92, 73, 88,
				82, 72, 111, 118, 101, 114, 73, 110, 116, 101,
				114, 97, 99, 116, 111, 114, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 115, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 111, 114, 115, 92,
				73, 88, 82, 73, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 71, 114, 111, 117, 112, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 123,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
				108, 107, 105, 116, 64, 50, 46, 54, 46, 53,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				92, 73, 110, 116, 101, 114, 97, 99, 116, 111,
				114, 115, 92, 73, 88, 82, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 79, 118, 101,
				114, 114, 105, 100, 101, 71, 114, 111, 117, 112,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				128, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
				111, 108, 107, 105, 116, 64, 50, 46, 54, 46,
				53, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 92, 73, 110, 116, 101, 114, 97, 99, 116,
				111, 114, 115, 92, 73, 88, 82, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 83, 116,
				114, 101, 110, 103, 116, 104, 73, 110, 116, 101,
				114, 97, 99, 116, 111, 114, 46, 99, 115, 0,
				0, 0, 2, 0, 0, 0, 109, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 111, 114, 115, 92,
				73, 88, 82, 73, 110, 116, 101, 114, 97, 99,
				116, 111, 114, 46, 99, 115, 0, 0, 0, 1,
				0, 0, 0, 110, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 105,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				46, 116, 111, 111, 108, 107, 105, 116, 64, 50,
				46, 54, 46, 53, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 73, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 111, 114, 115, 92, 73, 88, 82,
				82, 97, 121, 80, 114, 111, 118, 105, 100, 101,
				114, 46, 99, 115, 0, 0, 0, 2, 0, 0,
				0, 115, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
				111, 111, 108, 107, 105, 116, 64, 50, 46, 54,
				46, 53, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 73, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 92, 73, 110, 116, 101, 114, 97, 99,
				116, 111, 114, 115, 92, 73, 88, 82, 83, 101,
				108, 101, 99, 116, 73, 110, 116, 101, 114, 97,
				99, 116, 111, 114, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 123, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
				50, 46, 54, 46, 53, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 73, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 111, 114, 115, 92, 73, 88,
				82, 84, 97, 114, 103, 101, 116, 80, 114, 105,
				111, 114, 105, 116, 121, 73, 110, 116, 101, 114,
				97, 99, 116, 111, 114, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 127, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 111, 114, 115, 92, 86,
				105, 115, 117, 97, 108, 92, 73, 88, 82, 67,
				117, 115, 116, 111, 109, 82, 101, 116, 105, 99,
				108, 101, 80, 114, 111, 118, 105, 100, 101, 114,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				130, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
				111, 108, 107, 105, 116, 64, 50, 46, 54, 46,
				53, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 92, 73, 110, 116, 101, 114, 97, 99, 116,
				111, 114, 115, 92, 86, 105, 115, 117, 97, 108,
				92, 73, 88, 82, 82, 101, 116, 105, 99, 108,
				101, 68, 105, 114, 101, 99, 116, 105, 111, 110,
				80, 114, 111, 118, 105, 100, 101, 114, 46, 99,
				115, 0, 0, 0, 3, 0, 0, 0, 125, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 92,
				73, 110, 116, 101, 114, 97, 99, 116, 111, 114,
				115, 92, 86, 105, 115, 117, 97, 108, 92, 88,
				82, 73, 110, 116, 101, 114, 97, 99, 116, 111,
				114, 76, 105, 110, 101, 86, 105, 115, 117, 97,
				108, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 128, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
				111, 111, 108, 107, 105, 116, 64, 50, 46, 54,
				46, 53, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 73, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 92, 73, 110, 116, 101, 114, 97, 99,
				116, 111, 114, 115, 92, 86, 105, 115, 117, 97,
				108, 92, 88, 82, 73, 110, 116, 101, 114, 97,
				99, 116, 111, 114, 82, 101, 116, 105, 99, 108,
				101, 86, 105, 115, 117, 97, 108, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 122, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 92, 73,
				110, 116, 101, 114, 97, 99, 116, 111, 114, 115,
				92, 88, 82, 66, 97, 115, 101, 67, 111, 110,
				116, 114, 111, 108, 108, 101, 114, 73, 110, 116,
				101, 114, 97, 99, 116, 111, 114, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 133, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 92, 73,
				110, 116, 101, 114, 97, 99, 116, 111, 114, 115,
				92, 88, 82, 66, 97, 115, 101, 67, 111, 110,
				116, 114, 111, 108, 108, 101, 114, 73, 110, 116,
				101, 114, 97, 99, 116, 111, 114, 46, 100, 101,
				112, 114, 101, 99, 97, 116, 101, 100, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 112, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 92,
				73, 110, 116, 101, 114, 97, 99, 116, 111, 114,
				115, 92, 88, 82, 66, 97, 115, 101, 73, 110,
				116, 101, 114, 97, 99, 116, 111, 114, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 123, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 105, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 46, 116, 111, 111, 108,
				107, 105, 116, 64, 50, 46, 54, 46, 53, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 92,
				73, 110, 116, 101, 114, 97, 99, 116, 111, 114,
				115, 92, 88, 82, 66, 97, 115, 101, 73, 110,
				116, 101, 114, 97, 99, 116, 111, 114, 46, 100,
				101, 112, 114, 101, 99, 97, 116, 101, 100, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 114,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
				108, 107, 105, 116, 64, 50, 46, 54, 46, 53,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				92, 73, 110, 116, 101, 114, 97, 99, 116, 111,
				114, 115, 92, 88, 82, 68, 105, 114, 101, 99,
				116, 73, 110, 116, 101, 114, 97, 99, 116, 111,
				114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 125, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 105, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 46, 116,
				111, 111, 108, 107, 105, 116, 64, 50, 46, 54,
				46, 53, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 73, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 92, 73, 110, 116, 101, 114, 97, 99,
				116, 111, 114, 115, 92, 88, 82, 68, 105, 114,
				101, 99, 116, 73, 110, 116, 101, 114, 97, 99,
				116, 111, 114, 46, 100, 101, 112, 114, 101, 99,
				97, 116, 101, 100, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 112, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
				50, 46, 54, 46, 53, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 73, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 111, 114, 115, 92, 88, 82,
				71, 97, 122, 101, 73, 110, 116, 101, 114, 97,
				99, 116, 111, 114, 46, 99, 115, 0, 0, 0,
				3, 0, 0, 0, 114, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				105, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 46, 116, 111, 111, 108, 107, 105, 116, 64,
				50, 46, 54, 46, 53, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 73, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 111, 114, 115, 92, 88, 82,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 71, 114, 111, 117, 112, 46, 99, 115, 0,
				0, 0, 2, 0, 0, 0, 112, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 111, 114, 115, 92,
				88, 82, 80, 111, 107, 101, 73, 110, 116, 101,
				114, 97, 99, 116, 111, 114, 46, 99, 115, 0,
				0, 0, 3, 0, 0, 0, 111, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 105, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 116, 111, 111, 108, 107, 105,
				116, 64, 50, 46, 54, 46, 53, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 111, 114, 115, 92,
				88, 82, 82, 97, 121, 73, 110, 116, 101, 114,
				97, 99, 116, 111, 114, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 122, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 111, 114, 115, 92, 88,
				82, 82, 97, 121, 73, 110, 116, 101, 114, 97,
				99, 116, 111, 114, 46, 100, 101, 112, 114, 101,
				99, 97, 116, 101, 100, 46, 99, 115, 0, 0,
				0, 2, 0, 0, 0, 114, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 105, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 46, 116, 111, 111, 108, 107, 105, 116,
				64, 50, 46, 54, 46, 53, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 111, 114, 115, 92, 88,
				82, 83, 111, 99, 107, 101, 116, 73, 110, 116,
				101, 114, 97, 99, 116, 111, 114, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 125, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 105, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 46, 116, 111, 111, 108, 107,
				105, 116, 64, 50, 46, 54, 46, 53, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 92, 73,
				110, 116, 101, 114, 97, 99, 116, 111, 114, 115,
				92, 88, 82, 83, 111, 99, 107, 101, 116, 73,
				110, 116, 101, 114, 97, 99, 116, 111, 114, 46,
				100, 101, 112, 114, 101, 99, 97, 116, 101, 100,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				111, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 105, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 46, 116, 111,
				111, 108, 107, 105, 116, 64, 50, 46, 54, 46,
				53, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 92, 76, 97, 121, 101, 114, 115, 92, 73,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				76, 97, 121, 101, 114, 77, 97, 115, 107, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 115,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 105, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 46, 116, 111, 111,
				108, 107, 105, 116, 64, 50, 46, 54, 46, 53,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 73,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				92, 76, 97, 121, 101, 114, 115, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 76,
				97, 121, 101, 114, 83, 101, 116, 116, 105, 110,
				103, 115, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 106, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 105, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				116, 111, 111, 108, 107, 105, 116, 64, 50, 46,
				54, 46, 53, 92, 8

BepInEx/plugins/HowToFishXR/Unity.XR.Management.dll

Decompiled 7 hours ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using UnityEngine.Rendering;
using UnityEngine.Serialization;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: InternalsVisibleTo("Unity.XR.Management.Editor")]
[assembly: InternalsVisibleTo("Unity.XR.Management.Tests")]
[assembly: InternalsVisibleTo("Unity.XR.Management.EditorTests")]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		return new MonoScriptData
		{
			FilePathsData = new byte[522]
			{
				0, 0, 0, 1, 0, 0, 0, 82, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 109, 97, 110, 97, 103, 101, 109,
				101, 110, 116, 64, 52, 46, 53, 46, 52, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 88, 82,
				67, 111, 110, 102, 105, 103, 117, 114, 97, 116,
				105, 111, 110, 68, 97, 116, 97, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 80, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 109, 97, 110, 97, 103, 101, 109,
				101, 110, 116, 64, 52, 46, 53, 46, 52, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 88, 82,
				71, 101, 110, 101, 114, 97, 108, 83, 101, 116,
				116, 105, 110, 103, 115, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 71, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 109, 97, 110, 97, 103, 101, 109, 101, 110,
				116, 64, 52, 46, 53, 46, 52, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 88, 82, 76, 111,
				97, 100, 101, 114, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 77, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				109, 97, 110, 97, 103, 101, 109, 101, 110, 116,
				64, 52, 46, 53, 46, 52, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 88, 82, 76, 111, 97,
				100, 101, 114, 72, 101, 108, 112, 101, 114, 46,
				99, 115, 0, 0, 0, 2, 0, 0, 0, 84,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 109, 97, 110, 97, 103,
				101, 109, 101, 110, 116, 64, 52, 46, 53, 46,
				52, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				88, 82, 77, 97, 110, 97, 103, 101, 109, 101,
				110, 116, 65, 110, 97, 108, 121, 116, 105, 99,
				115, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 80, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 109, 97, 110,
				97, 103, 101, 109, 101, 110, 116, 64, 52, 46,
				53, 46, 52, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 88, 82, 77, 97, 110, 97, 103, 101,
				114, 83, 101, 116, 116, 105, 110, 103, 115, 46,
				99, 115
			},
			TypesData = new byte[354]
			{
				0, 0, 0, 0, 54, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
				77, 97, 110, 97, 103, 101, 109, 101, 110, 116,
				124, 88, 82, 67, 111, 110, 102, 105, 103, 117,
				114, 97, 116, 105, 111, 110, 68, 97, 116, 97,
				65, 116, 116, 114, 105, 98, 117, 116, 101, 0,
				0, 0, 0, 43, 85, 110, 105, 116, 121, 69,
				110, 103, 105, 110, 101, 46, 88, 82, 46, 77,
				97, 110, 97, 103, 101, 109, 101, 110, 116, 124,
				88, 82, 71, 101, 110, 101, 114, 97, 108, 83,
				101, 116, 116, 105, 110, 103, 115, 0, 0, 0,
				0, 34, 85, 110, 105, 116, 121, 69, 110, 103,
				105, 110, 101, 46, 88, 82, 46, 77, 97, 110,
				97, 103, 101, 109, 101, 110, 116, 124, 88, 82,
				76, 111, 97, 100, 101, 114, 0, 0, 0, 0,
				40, 85, 110, 105, 116, 121, 69, 110, 103, 105,
				110, 101, 46, 88, 82, 46, 77, 97, 110, 97,
				103, 101, 109, 101, 110, 116, 124, 88, 82, 76,
				111, 97, 100, 101, 114, 72, 101, 108, 112, 101,
				114, 0, 0, 0, 0, 47, 85, 110, 105, 116,
				121, 69, 110, 103, 105, 110, 101, 46, 88, 82,
				46, 77, 97, 110, 97, 103, 101, 109, 101, 110,
				116, 124, 88, 82, 77, 97, 110, 97, 103, 101,
				109, 101, 110, 116, 65, 110, 97, 108, 121, 116,
				105, 99, 115, 0, 0, 0, 0, 58, 85, 110,
				105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
				88, 82, 46, 77, 97, 110, 97, 103, 101, 109,
				101, 110, 116, 46, 88, 82, 77, 97, 110, 97,
				103, 101, 109, 101, 110, 116, 65, 110, 97, 108,
				121, 116, 105, 99, 115, 124, 66, 117, 105, 108,
				100, 69, 118, 101, 110, 116, 0, 0, 0, 0,
				43, 85, 110, 105, 116, 121, 69, 110, 103, 105,
				110, 101, 46, 88, 82, 46, 77, 97, 110, 97,
				103, 101, 109, 101, 110, 116, 124, 88, 82, 77,
				97, 110, 97, 103, 101, 114, 83, 101, 116, 116,
				105, 110, 103, 115
			},
			TotalFiles = 6,
			TotalTypes = 7,
			IsEditorOnly = false
		};
	}
}
namespace UnityEngine.XR.Management;

[AttributeUsage(AttributeTargets.Class)]
public sealed class XRConfigurationDataAttribute : Attribute
{
	public string displayName { get; set; }

	public string buildSettingsKey { get; set; }

	private XRConfigurationDataAttribute()
	{
	}

	public XRConfigurationDataAttribute(string displayName, string buildSettingsKey)
	{
		this.displayName = displayName;
		this.buildSettingsKey = buildSettingsKey;
	}
}
public class XRGeneralSettings : ScriptableObject
{
	public static string k_SettingsKey = "com.unity.xr.management.loader_settings";

	internal static XRGeneralSettings s_RuntimeSettingsInstance = null;

	[SerializeField]
	internal XRManagerSettings m_LoaderManagerInstance;

	[SerializeField]
	[Tooltip("Toggling this on/off will enable/disable the automatic startup of XR at run time.")]
	internal bool m_InitManagerOnStart = true;

	private XRManagerSettings m_XRManager;

	private bool m_ProviderIntialized;

	private bool m_ProviderStarted;

	public XRManagerSettings Manager
	{
		get
		{
			return m_LoaderManagerInstance;
		}
		set
		{
			m_LoaderManagerInstance = value;
		}
	}

	public static XRGeneralSettings Instance => s_RuntimeSettingsInstance;

	public XRManagerSettings AssignedSettings => m_LoaderManagerInstance;

	public bool InitManagerOnStart => m_InitManagerOnStart;

	private void Awake()
	{
		Debug.Log((object)"XRGeneral Settings awakening...");
		s_RuntimeSettingsInstance = this;
		Application.quitting += Quit;
		Object.DontDestroyOnLoad((Object)(object)s_RuntimeSettingsInstance);
	}

	private static void Quit()
	{
		XRGeneralSettings instance = Instance;
		if (!((Object)(object)instance == (Object)null))
		{
			instance.DeInitXRSDK();
		}
	}

	private void Start()
	{
		StartXRSDK();
	}

	private void OnDestroy()
	{
		DeInitXRSDK();
	}

	[RuntimeInitializeOnLoadMethod(/*Could not decode attribute arguments.*/)]
	internal static void AttemptInitializeXRSDKOnLoad()
	{
		XRGeneralSettings instance = Instance;
		if (!((Object)(object)instance == (Object)null) && instance.InitManagerOnStart)
		{
			instance.InitXRSDK();
		}
	}

	[RuntimeInitializeOnLoadMethod(/*Could not decode attribute arguments.*/)]
	internal static void AttemptStartXRSDKOnBeforeSplashScreen()
	{
		XRGeneralSettings instance = Instance;
		if (!((Object)(object)instance == (Object)null) && instance.InitManagerOnStart)
		{
			instance.StartXRSDK();
		}
	}

	private void InitXRSDK()
	{
		if (!((Object)(object)Instance == (Object)null) && !((Object)(object)Instance.m_LoaderManagerInstance == (Object)null) && Instance.m_InitManagerOnStart)
		{
			m_XRManager = Instance.m_LoaderManagerInstance;
			if ((Object)(object)m_XRManager == (Object)null)
			{
				Debug.LogError((object)"Assigned GameObject for XR Management loading is invalid. No XR Providers will be automatically loaded.");
				return;
			}
			m_XRManager.automaticLoading = false;
			m_XRManager.automaticRunning = false;
			m_XRManager.InitializeLoaderSync();
			m_ProviderIntialized = true;
		}
	}

	private void StartXRSDK()
	{
		if ((Object)(object)m_XRManager != (Object)null && (Object)(object)m_XRManager.activeLoader != (Object)null)
		{
			m_XRManager.StartSubsystems();
			m_ProviderStarted = true;
		}
	}

	private void StopXRSDK()
	{
		if ((Object)(object)m_XRManager != (Object)null && (Object)(object)m_XRManager.activeLoader != (Object)null)
		{
			m_XRManager.StopSubsystems();
			m_ProviderStarted = false;
		}
	}

	private void DeInitXRSDK()
	{
		if ((Object)(object)m_XRManager != (Object)null && (Object)(object)m_XRManager.activeLoader != (Object)null)
		{
			m_XRManager.DeinitializeLoader();
			m_XRManager = null;
			m_ProviderIntialized = false;
		}
	}
}
public abstract class XRLoader : ScriptableObject
{
	public virtual bool Initialize()
	{
		return true;
	}

	public virtual bool Start()
	{
		return true;
	}

	public virtual bool Stop()
	{
		return true;
	}

	public virtual bool Deinitialize()
	{
		return true;
	}

	public abstract T GetLoadedSubsystem<T>() where T : class, ISubsystem;

	public virtual List<GraphicsDeviceType> GetSupportedGraphicsDeviceTypes(bool buildingPlayer)
	{
		return new List<GraphicsDeviceType>();
	}
}
public abstract class XRLoaderHelper : XRLoader
{
	protected Dictionary<Type, ISubsystem> m_SubsystemInstanceMap = new Dictionary<Type, ISubsystem>();

	public override T GetLoadedSubsystem<T>()
	{
		Type typeFromHandle = typeof(T);
		m_SubsystemInstanceMap.TryGetValue(typeFromHandle, out var value);
		return value as T;
	}

	protected void StartSubsystem<T>() where T : class, ISubsystem
	{
		T loadedSubsystem = GetLoadedSubsystem<T>();
		if (loadedSubsystem != null)
		{
			((ISubsystem)loadedSubsystem).Start();
		}
	}

	protected void StopSubsystem<T>() where T : class, ISubsystem
	{
		T loadedSubsystem = GetLoadedSubsystem<T>();
		if (loadedSubsystem != null)
		{
			((ISubsystem)loadedSubsystem).Stop();
		}
	}

	protected void DestroySubsystem<T>() where T : class, ISubsystem
	{
		T loadedSubsystem = GetLoadedSubsystem<T>();
		if (loadedSubsystem != null)
		{
			Type typeFromHandle = typeof(T);
			if (m_SubsystemInstanceMap.ContainsKey(typeFromHandle))
			{
				m_SubsystemInstanceMap.Remove(typeFromHandle);
			}
			((ISubsystem)loadedSubsystem).Destroy();
		}
	}

	protected void CreateSubsystem<TDescriptor, TSubsystem>(List<TDescriptor> descriptors, string id) where TDescriptor : ISubsystemDescriptor where TSubsystem : ISubsystem
	{
		if (descriptors == null)
		{
			throw new ArgumentNullException("descriptors");
		}
		SubsystemManager.GetSubsystemDescriptors<TDescriptor>(descriptors);
		if (descriptors.Count <= 0)
		{
			return;
		}
		foreach (TDescriptor descriptor in descriptors)
		{
			ISubsystem val = null;
			if (string.Compare(((ISubsystemDescriptor)descriptor).id, id, ignoreCase: true) == 0)
			{
				val = ((ISubsystemDescriptor)descriptor/*cast due to .constrained prefix*/).Create();
			}
			if (val != null)
			{
				m_SubsystemInstanceMap[typeof(TSubsystem)] = val;
				break;
			}
		}
	}

	[Obsolete("This method is obsolete. Please use the geenric CreateSubsystem method.", false)]
	protected void CreateIntegratedSubsystem<TDescriptor, TSubsystem>(List<TDescriptor> descriptors, string id) where TDescriptor : IntegratedSubsystemDescriptor where TSubsystem : IntegratedSubsystem
	{
		CreateSubsystem<TDescriptor, TSubsystem>(descriptors, id);
	}

	[Obsolete("This method is obsolete. Please use the generic CreateSubsystem method.", false)]
	protected void CreateStandaloneSubsystem<TDescriptor, TSubsystem>(List<TDescriptor> descriptors, string id) where TDescriptor : SubsystemDescriptor where TSubsystem : Subsystem
	{
		CreateSubsystem<TDescriptor, TSubsystem>(descriptors, id);
	}

	public override bool Deinitialize()
	{
		m_SubsystemInstanceMap.Clear();
		return base.Deinitialize();
	}
}
internal static class XRManagementAnalytics
{
	[Serializable]
	private struct BuildEvent
	{
		public string buildGuid;

		public string buildTarget;

		public string buildTargetGroup;

		public string[] assigned_loaders;
	}

	private const int kMaxEventsPerHour = 1000;

	private const int kMaxNumberOfElements = 1000;

	private const string kVendorKey = "unity.xrmanagement";

	private const string kEventBuild = "xrmanagment_build";

	private static bool s_Initialized;

	private static bool Initialize()
	{
		return s_Initialized;
	}
}
public sealed class XRManagerSettings : ScriptableObject
{
	[HideInInspector]
	private bool m_InitializationComplete;

	[HideInInspector]
	[SerializeField]
	private bool m_RequiresSettingsUpdate;

	[SerializeField]
	[Tooltip("Determines if the XR Manager instance is responsible for creating and destroying the appropriate loader instance.")]
	[FormerlySerializedAs("AutomaticLoading")]
	private bool m_AutomaticLoading;

	[SerializeField]
	[Tooltip("Determines if the XR Manager instance is responsible for starting and stopping subsystems for the active loader instance.")]
	[FormerlySerializedAs("AutomaticRunning")]
	private bool m_AutomaticRunning;

	[SerializeField]
	[Tooltip("List of XR Loader instances arranged in desired load order.")]
	[FormerlySerializedAs("Loaders")]
	private List<XRLoader> m_Loaders = new List<XRLoader>();

	[SerializeField]
	[HideInInspector]
	private HashSet<XRLoader> m_RegisteredLoaders = new HashSet<XRLoader>();

	public bool automaticLoading
	{
		get
		{
			return m_AutomaticLoading;
		}
		set
		{
			m_AutomaticLoading = value;
		}
	}

	public bool automaticRunning
	{
		get
		{
			return m_AutomaticRunning;
		}
		set
		{
			m_AutomaticRunning = value;
		}
	}

	[Obsolete("'XRManagerSettings.loaders' property is obsolete. Use 'XRManagerSettings.activeLoaders' instead to get a list of the current loaders.")]
	public List<XRLoader> loaders => m_Loaders;

	public IReadOnlyList<XRLoader> activeLoaders => m_Loaders;

	public bool isInitializationComplete => m_InitializationComplete;

	[HideInInspector]
	public XRLoader activeLoader { get; private set; }

	internal List<XRLoader> currentLoaders
	{
		get
		{
			return m_Loaders;
		}
		set
		{
			m_Loaders = value;
		}
	}

	internal HashSet<XRLoader> registeredLoaders => m_RegisteredLoaders;

	public T ActiveLoaderAs<T>() where T : XRLoader
	{
		return activeLoader as T;
	}

	public void InitializeLoaderSync()
	{
		if ((Object)(object)activeLoader != (Object)null)
		{
			Debug.LogWarning((object)"XR Management has already initialized an active loader in this scene. Please make sure to stop all subsystems and deinitialize the active loader before initializing a new one.");
			return;
		}
		foreach (XRLoader currentLoader in currentLoaders)
		{
			if ((Object)(object)currentLoader != (Object)null && CheckGraphicsAPICompatibility(currentLoader) && currentLoader.Initialize())
			{
				activeLoader = currentLoader;
				m_InitializationComplete = true;
				return;
			}
		}
		activeLoader = null;
	}

	public IEnumerator InitializeLoader()
	{
		if ((Object)(object)activeLoader != (Object)null)
		{
			Debug.LogWarning((object)"XR Management has already initialized an active loader in this scene. Please make sure to stop all subsystems and deinitialize the active loader before initializing a new one.");
			yield break;
		}
		foreach (XRLoader currentLoader in currentLoaders)
		{
			if ((Object)(object)currentLoader != (Object)null && CheckGraphicsAPICompatibility(currentLoader) && currentLoader.Initialize())
			{
				activeLoader = currentLoader;
				m_InitializationComplete = true;
				yield break;
			}
			yield return null;
		}
		activeLoader = null;
	}

	public bool TryAddLoader(XRLoader loader, int index = -1)
	{
		if ((Object)(object)loader == (Object)null || currentLoaders.Contains(loader))
		{
			return false;
		}
		if (!m_RegisteredLoaders.Contains(loader))
		{
			return false;
		}
		if (index < 0 || index >= currentLoaders.Count)
		{
			currentLoaders.Add(loader);
		}
		else
		{
			currentLoaders.Insert(index, loader);
		}
		return true;
	}

	public bool TryRemoveLoader(XRLoader loader)
	{
		bool result = true;
		if (currentLoaders.Contains(loader))
		{
			result = currentLoaders.Remove(loader);
		}
		return result;
	}

	public bool TrySetLoaders(List<XRLoader> reorderedLoaders)
	{
		List<XRLoader> list = new List<XRLoader>(activeLoaders);
		currentLoaders.Clear();
		foreach (XRLoader reorderedLoader in reorderedLoaders)
		{
			if (!TryAddLoader(reorderedLoader))
			{
				currentLoaders = list;
				return false;
			}
		}
		return true;
	}

	private void Awake()
	{
		foreach (XRLoader currentLoader in currentLoaders)
		{
			if (!m_RegisteredLoaders.Contains(currentLoader))
			{
				m_RegisteredLoaders.Add(currentLoader);
			}
		}
	}

	private unsafe bool CheckGraphicsAPICompatibility(XRLoader loader)
	{
		//IL_0000: Unknown result type (might be due to invalid IL or missing references)
		//IL_0005: Unknown result type (might be due to invalid IL or missing references)
		//IL_0018: Unknown result type (might be due to invalid IL or missing references)
		GraphicsDeviceType graphicsDeviceType = SystemInfo.graphicsDeviceType;
		List<GraphicsDeviceType> supportedGraphicsDeviceTypes = loader.GetSupportedGraphicsDeviceTypes(buildingPlayer: false);
		if (supportedGraphicsDeviceTypes.Count > 0 && !supportedGraphicsDeviceTypes.Contains(graphicsDeviceType))
		{
			Debug.LogWarning((object)$"The {((Object)loader).name} does not support the initialized graphics device, {((object)(*(GraphicsDeviceType*)(&graphicsDeviceType))/*cast due to .constrained prefix*/).ToString()}. Please change the preffered Graphics API in PlayerSettings. Attempting to start the next XR loader.");
			return false;
		}
		return true;
	}

	public void StartSubsystems()
	{
		if (!m_InitializationComplete)
		{
			Debug.LogWarning((object)"Call to StartSubsystems without an initialized manager.Please make sure wait for initialization to complete before calling this API.");
		}
		else if ((Object)(object)activeLoader != (Object)null)
		{
			activeLoader.Start();
		}
	}

	public void StopSubsystems()
	{
		if (!m_InitializationComplete)
		{
			Debug.LogWarning((object)"Call to StopSubsystems without an initialized manager.Please make sure wait for initialization to complete before calling this API.");
		}
		else if ((Object)(object)activeLoader != (Object)null)
		{
			activeLoader.Stop();
		}
	}

	public void DeinitializeLoader()
	{
		if (!m_InitializationComplete)
		{
			Debug.LogWarning((object)"Call to DeinitializeLoader without an initialized manager.Please make sure wait for initialization to complete before calling this API.");
			return;
		}
		StopSubsystems();
		if ((Object)(object)activeLoader != (Object)null)
		{
			activeLoader.Deinitialize();
			activeLoader = null;
		}
		m_InitializationComplete = false;
	}

	private void Start()
	{
		if (automaticLoading && automaticRunning)
		{
			StartSubsystems();
		}
	}

	private void OnDisable()
	{
		if (automaticLoading && automaticRunning)
		{
			StopSubsystems();
		}
	}

	private void OnDestroy()
	{
		if (automaticLoading)
		{
			DeinitializeLoader();
		}
	}
}

BepInEx/plugins/HowToFishXR/Unity.XR.OpenXR.dll

Decompiled 7 hours ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;
using System.Security.Cryptography;
using System.Security.Permissions;
using System.Text;
using System.Threading;
using AOT;
using UnityEngine.Analytics;
using UnityEngine.Events;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Controls;
using UnityEngine.InputSystem.Layouts;
using UnityEngine.InputSystem.LowLevel;
using UnityEngine.InputSystem.Utilities;
using UnityEngine.InputSystem.XR;
using UnityEngine.Rendering;
using UnityEngine.Scripting;
using UnityEngine.Serialization;
using UnityEngine.XR.Management;
using UnityEngine.XR.OpenXR.Features;
using UnityEngine.XR.OpenXR.Features.Interactions;
using UnityEngine.XR.OpenXR.Input;
using UnityEngine.XR.OpenXR.NativeTypes;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: InternalsVisibleTo("Unity.XR.OpenXR.Editor")]
[assembly: InternalsVisibleTo("UnityEditor.XR.OpenXR.Tests")]
[assembly: Preserve]
[assembly: InternalsVisibleTo("Unity.XR.OpenXR.TestHelpers")]
[assembly: InternalsVisibleTo("Unity.XR.OpenXR.Tests")]
[assembly: InternalsVisibleTo("Unity.XR.OpenXR.Tests.Editor")]
[assembly: InternalsVisibleTo("Unity.XR.OpenXR.Features.MockRuntime")]
[assembly: InternalsVisibleTo("Unity.XR.OpenXR.Features.ConformanceAutomation")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.0.0.0")]
[module: UnverifiableCode]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		return new MonoScriptData
		{
			FilePathsData = new byte[4123]
			{
				0, 0, 0, 2, 0, 0, 0, 108, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 111, 112, 101, 110, 120, 114, 64,
				49, 46, 49, 52, 46, 51, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 70, 101, 97, 116, 117,
				114, 101, 115, 92, 69, 120, 116, 101, 110, 115,
				105, 111, 110, 115, 92, 88, 114, 80, 101, 114,
				102, 111, 114, 109, 97, 110, 99, 101, 83, 101,
				116, 116, 105, 110, 103, 115, 70, 101, 97, 116,
				117, 114, 101, 46, 99, 115, 0, 0, 0, 1,
				0, 0, 0, 106, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 111,
				112, 101, 110, 120, 114, 64, 49, 46, 49, 52,
				46, 51, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 70, 101, 97, 116, 117, 114, 101, 115, 92,
				69, 120, 116, 101, 110, 115, 105, 111, 110, 115,
				92, 88, 114, 80, 101, 114, 102, 111, 114, 109,
				97, 110, 99, 101, 83, 101, 116, 116, 105, 110,
				103, 115, 84, 121, 112, 101, 115, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 93, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 111, 112, 101, 110, 120, 114, 64,
				49, 46, 49, 52, 46, 51, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 70, 101, 97, 116, 117,
				114, 101, 115, 92, 70, 111, 118, 101, 97, 116,
				101, 100, 82, 101, 110, 100, 101, 114, 105, 110,
				103, 70, 101, 97, 116, 117, 114, 101, 46, 99,
				115, 0, 0, 0, 2, 0, 0, 0, 97, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 111, 112, 101, 110, 120, 114,
				64, 49, 46, 49, 52, 46, 51, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 70, 101, 97, 116,
				117, 114, 101, 115, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 115, 92, 68, 80,
				97, 100, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 46, 99, 115, 0, 0, 0, 3,
				0, 0, 0, 100, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 111,
				112, 101, 110, 120, 114, 64, 49, 46, 49, 52,
				46, 51, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 70, 101, 97, 116, 117, 114, 101, 115, 92,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 115, 92, 69, 121, 101, 71, 97, 122, 101,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 46, 99, 115, 0, 0, 0, 2, 0, 0,
				0, 108, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 111, 112, 101,
				110, 120, 114, 64, 49, 46, 49, 52, 46, 51,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 70,
				101, 97, 116, 117, 114, 101, 115, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 115,
				92, 72, 97, 110, 100, 67, 111, 109, 109, 111,
				110, 80, 111, 115, 101, 115, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 46, 99, 115,
				0, 0, 0, 2, 0, 0, 0, 104, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 111, 112, 101, 110, 120, 114, 64,
				49, 46, 49, 52, 46, 51, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 70, 101, 97, 116, 117,
				114, 101, 115, 92, 73, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 115, 92, 72, 97, 110,
				100, 73, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 80, 114, 111, 102, 105, 108, 101, 46,
				99, 115, 0, 0, 0, 2, 0, 0, 0, 109,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 111, 112, 101, 110, 120,
				114, 64, 49, 46, 49, 52, 46, 51, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 70, 101, 97,
				116, 117, 114, 101, 115, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 115, 92, 72,
				80, 82, 101, 118, 101, 114, 98, 71, 50, 67,
				111, 110, 116, 114, 111, 108, 108, 101, 114, 80,
				114, 111, 102, 105, 108, 101, 46, 99, 115, 0,
				0, 0, 2, 0, 0, 0, 106, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 111, 112, 101, 110, 120, 114, 64, 49,
				46, 49, 52, 46, 51, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 70, 101, 97, 116, 117, 114,
				101, 115, 92, 73, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 115, 92, 72, 84, 67, 86,
				105, 118, 101, 67, 111, 110, 116, 114, 111, 108,
				108, 101, 114, 80, 114, 111, 102, 105, 108, 101,
				46, 99, 115, 0, 0, 0, 2, 0, 0, 0,
				108, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 111, 112, 101, 110,
				120, 114, 64, 49, 46, 49, 52, 46, 51, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 70, 101,
				97, 116, 117, 114, 101, 115, 92, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 115, 92,
				75, 72, 82, 83, 105, 109, 112, 108, 101, 67,
				111, 110, 116, 114, 111, 108, 108, 101, 114, 80,
				114, 111, 102, 105, 108, 101, 46, 99, 115, 0,
				0, 0, 2, 0, 0, 0, 117, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 111, 112, 101, 110, 120, 114, 64, 49,
				46, 49, 52, 46, 51, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 70, 101, 97, 116, 117, 114,
				101, 115, 92, 73, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 115, 92, 77, 101, 116, 97,
				81, 117, 101, 115, 116, 84, 111, 117, 99, 104,
				80, 108, 117, 115, 67, 111, 110, 116, 114, 111,
				108, 108, 101, 114, 80, 114, 111, 102, 105, 108,
				101, 46, 99, 115, 0, 0, 0, 2, 0, 0,
				0, 116, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 111, 112, 101,
				110, 120, 114, 64, 49, 46, 49, 52, 46, 51,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 70,
				101, 97, 116, 117, 114, 101, 115, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 115,
				92, 77, 101, 116, 97, 81, 117, 101, 115, 116,
				84, 111, 117, 99, 104, 80, 114, 111, 67, 111,
				110, 116, 114, 111, 108, 108, 101, 114, 80, 114,
				111, 102, 105, 108, 101, 46, 99, 115, 0, 0,
				0, 2, 0, 0, 0, 106, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 111, 112, 101, 110, 120, 114, 64, 49, 46,
				49, 52, 46, 51, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 70, 101, 97, 116, 117, 114, 101,
				115, 92, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 115, 92, 77, 105, 99, 114, 111,
				115, 111, 102, 116, 72, 97, 110, 100, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 46,
				99, 115, 0, 0, 0, 2, 0, 0, 0, 114,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 111, 112, 101, 110, 120,
				114, 64, 49, 46, 49, 52, 46, 51, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 70, 101, 97,
				116, 117, 114, 101, 115, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 115, 92, 77,
				105, 99, 114, 111, 115, 111, 102, 116, 77, 111,
				116, 105, 111, 110, 67, 111, 110, 116, 114, 111,
				108, 108, 101, 114, 80, 114, 111, 102, 105, 108,
				101, 46, 99, 115, 0, 0, 0, 2, 0, 0,
				0, 110, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 111, 112, 101,
				110, 120, 114, 64, 49, 46, 49, 52, 46, 51,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 70,
				101, 97, 116, 117, 114, 101, 115, 92, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 115,
				92, 79, 99, 117, 108, 117, 115, 84, 111, 117,
				99, 104, 67, 111, 110, 116, 114, 111, 108, 108,
				101, 114, 80, 114, 111, 102, 105, 108, 101, 46,
				99, 115, 0, 0, 0, 2, 0, 0, 0, 101,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 111, 112, 101, 110, 120,
				114, 64, 49, 46, 49, 52, 46, 51, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 70, 101, 97,
				116, 117, 114, 101, 115, 92, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 115, 92, 80,
				97, 108, 109, 80, 111, 115, 101, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 46, 99,
				115, 0, 0, 0, 2, 0, 0, 0, 109, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 111, 112, 101, 110, 120, 114,
				64, 49, 46, 49, 52, 46, 51, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 70, 101, 97, 116,
				117, 114, 101, 115, 92, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 115, 92, 86, 97,
				108, 118, 101, 73, 110, 100, 101, 120, 67, 111,
				110, 116, 114, 111, 108, 108, 101, 114, 80, 114,
				111, 102, 105, 108, 101, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 82, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 111, 112, 101, 110, 120, 114, 64, 49, 46,
				49, 52, 46, 51, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 70, 101, 97, 116, 117, 114, 101,
				115, 92, 79, 112, 101, 110, 88, 82, 70, 101,
				97, 116, 117, 114, 101, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 90, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 111, 112, 101, 110, 120, 114, 64, 49, 46,
				49, 52, 46, 51, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 70, 101, 97, 116, 117, 114, 101,
				115, 92, 79, 112, 101, 110, 88, 82, 70, 101,
				97, 116, 117, 114, 101, 73, 110, 116, 101, 114,
				110, 97, 108, 46, 99, 115, 0, 0, 0, 1,
				0, 0, 0, 90, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 111,
				112, 101, 110, 120, 114, 64, 49, 46, 49, 52,
				46, 51, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 70, 101, 97, 116, 117, 114, 101, 115, 92,
				79, 112, 101, 110, 88, 82, 70, 101, 97, 116,
				117, 114, 101, 83, 101, 116, 116, 105, 110, 103,
				115, 46, 99, 115, 0, 0, 0, 6, 0, 0,
				0, 93, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 111, 112, 101,
				110, 120, 114, 64, 49, 46, 49, 52, 46, 51,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 70,
				101, 97, 116, 117, 114, 101, 115, 92, 79, 112,
				101, 110, 88, 82, 73, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 70, 101, 97, 116, 117,
				114, 101, 46, 99, 115, 0, 0, 0, 2, 0,
				0, 0, 79, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 111, 112,
				101, 110, 120, 114, 64, 49, 46, 49, 52, 46,
				51, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				105, 110, 112, 117, 116, 92, 72, 97, 112, 116,
				105, 99, 67, 111, 110, 116, 114, 111, 108, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 78,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 111, 112, 101, 110, 120,
				114, 64, 49, 46, 49, 52, 46, 51, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 105, 110, 112,
				117, 116, 92, 79, 112, 101, 110, 88, 82, 68,
				101, 118, 105, 99, 101, 46, 99, 115, 0, 0,
				0, 1, 0, 0, 0, 75, 92, 76, 105, 98,
				114, 97, 114, 121, 92, 80, 97, 99, 107, 97,
				103, 101, 67, 97, 99, 104, 101, 92, 99, 111,
				109, 46, 117, 110, 105, 116, 121, 46, 120, 114,
				46, 111, 112, 101, 110, 120, 114, 64, 49, 46,
				49, 52, 46, 51, 92, 82, 117, 110, 116, 105,
				109, 101, 92, 105, 110, 112, 117, 116, 92, 79,
				112, 101, 110, 88, 82, 72, 109, 100, 46, 99,
				115, 0, 0, 0, 4, 0, 0, 0, 77, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 111, 112, 101, 110, 120, 114,
				64, 49, 46, 49, 52, 46, 51, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 105, 110, 112, 117,
				116, 92, 79, 112, 101, 110, 88, 82, 73, 110,
				112, 117, 116, 46, 99, 115, 0, 0, 0, 2,
				0, 0, 0, 77, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 111,
				112, 101, 110, 120, 114, 64, 49, 46, 49, 52,
				46, 51, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 105, 110, 112, 117, 116, 92, 80, 111, 115,
				101, 67, 111, 110, 116, 114, 111, 108, 46, 99,
				115, 0, 0, 0, 2, 0, 0, 0, 75, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 111, 112, 101, 110, 120, 114,
				64, 49, 46, 49, 52, 46, 51, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 79, 112, 101, 110,
				88, 82, 65, 110, 97, 108, 121, 116, 105, 99,
				115, 46, 99, 115, 0, 0, 0, 2, 0, 0,
				0, 88, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 111, 112, 101,
				110, 120, 114, 64, 49, 46, 49, 52, 46, 51,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 79,
				112, 101, 110, 88, 82, 67, 111, 108, 111, 114,
				83, 117, 98, 109, 105, 115, 115, 111, 110, 77,
				111, 100, 101, 76, 105, 115, 116, 46, 99, 115,
				0, 0, 0, 1, 0, 0, 0, 75, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 111, 112, 101, 110, 120, 114, 64,
				49, 46, 49, 52, 46, 51, 92, 82, 117, 110,
				116, 105, 109, 101, 92, 79, 112, 101, 110, 88,
				82, 67, 111, 110, 115, 116, 97, 110, 116, 115,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				82, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 111, 112, 101, 110,
				120, 114, 64, 49, 46, 49, 52, 46, 51, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 79, 112,
				101, 110, 88, 82, 68, 105, 97, 103, 110, 111,
				115, 116, 105, 99, 82, 101, 112, 111, 114, 116,
				46, 99, 115, 0, 0, 0, 3, 0, 0, 0,
				72, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 111, 112, 101, 110,
				120, 114, 64, 49, 46, 49, 52, 46, 51, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 79, 112,
				101, 110, 88, 82, 76, 111, 97, 100, 101, 114,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				76, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 111, 112, 101, 110,
				120, 114, 64, 49, 46, 49, 52, 46, 51, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 79, 112,
				101, 110, 88, 82, 76, 111, 97, 100, 101, 114,
				66, 97, 115, 101, 46, 99, 115, 0, 0, 0,
				1, 0, 0, 0, 81, 92, 76, 105, 98, 114,
				97, 114, 121, 92, 80, 97, 99, 107, 97, 103,
				101, 67, 97, 99, 104, 101, 92, 99, 111, 109,
				46, 117, 110, 105, 116, 121, 46, 120, 114, 46,
				111, 112, 101, 110, 120, 114, 64, 49, 46, 49,
				52, 46, 51, 92, 82, 117, 110, 116, 105, 109,
				101, 92, 79, 112, 101, 110, 88, 82, 76, 111,
				97, 100, 101, 114, 78, 111, 80, 114, 101, 73,
				110, 105, 116, 46, 99, 115, 0, 0, 0, 7,
				0, 0, 0, 77, 92, 76, 105, 98, 114, 97,
				114, 121, 92, 80, 97, 99, 107, 97, 103, 101,
				67, 97, 99, 104, 101, 92, 99, 111, 109, 46,
				117, 110, 105, 116, 121, 46, 120, 114, 46, 111,
				112, 101, 110, 120, 114, 64, 49, 46, 49, 52,
				46, 51, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 79, 112, 101, 110, 88, 82, 78, 97, 116,
				105, 118, 101, 84, 121, 112, 101, 115, 46, 99,
				115, 0, 0, 0, 1, 0, 0, 0, 80, 92,
				76, 105, 98, 114, 97, 114, 121, 92, 80, 97,
				99, 107, 97, 103, 101, 67, 97, 99, 104, 101,
				92, 99, 111, 109, 46, 117, 110, 105, 116, 121,
				46, 120, 114, 46, 111, 112, 101, 110, 120, 114,
				64, 49, 46, 49, 52, 46, 51, 92, 82, 117,
				110, 116, 105, 109, 101, 92, 79, 112, 101, 110,
				88, 82, 82, 101, 110, 100, 101, 114, 83, 101,
				116, 116, 105, 110, 103, 115, 46, 99, 115, 0,
				0, 0, 1, 0, 0, 0, 75, 92, 76, 105,
				98, 114, 97, 114, 121, 92, 80, 97, 99, 107,
				97, 103, 101, 67, 97, 99, 104, 101, 92, 99,
				111, 109, 46, 117, 110, 105, 116, 121, 46, 120,
				114, 46, 111, 112, 101, 110, 120, 114, 64, 49,
				46, 49, 52, 46, 51, 92, 82, 117, 110, 116,
				105, 109, 101, 92, 79, 112, 101, 110, 88, 82,
				82, 101, 115, 116, 97, 114, 116, 101, 114, 46,
				99, 115, 0, 0, 0, 1, 0, 0, 0, 73,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 111, 112, 101, 110, 120,
				114, 64, 49, 46, 49, 52, 46, 51, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 79, 112, 101,
				110, 88, 82, 82, 117, 110, 116, 105, 109, 101,
				46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
				74, 92, 76, 105, 98, 114, 97, 114, 121, 92,
				80, 97, 99, 107, 97, 103, 101, 67, 97, 99,
				104, 101, 92, 99, 111, 109, 46, 117, 110, 105,
				116, 121, 46, 120, 114, 46, 111, 112, 101, 110,
				120, 114, 64, 49, 46, 49, 52, 46, 51, 92,
				82, 117, 110, 116, 105, 109, 101, 92, 79, 112,
				101, 110, 88, 82, 83, 101, 116, 116, 105, 110,
				103, 115, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 79, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 111, 112,
				101, 110, 120, 114, 64, 49, 46, 49, 52, 46,
				51, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				79, 112, 101, 110, 88, 82, 83, 112, 97, 99,
				101, 83, 101, 116, 116, 105, 110, 103, 115, 46,
				99, 115, 0, 0, 0, 3, 0, 0, 0, 74,
				92, 76, 105, 98, 114, 97, 114, 121, 92, 80,
				97, 99, 107, 97, 103, 101, 67, 97, 99, 104,
				101, 92, 99, 111, 109, 46, 117, 110, 105, 116,
				121, 46, 120, 114, 46, 111, 112, 101, 110, 120,
				114, 64, 49, 46, 49, 52, 46, 51, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 79, 112, 101,
				110, 88, 82, 85, 110, 105, 116, 121, 65, 80,
				73, 46, 99, 115, 0, 0, 0, 1, 0, 0,
				0, 73, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 111, 112, 101,
				110, 120, 114, 64, 49, 46, 49, 52, 46, 51,
				92, 82, 117, 110, 116, 105, 109, 101, 92, 79,
				112, 101, 110, 88, 82, 85, 116, 105, 108, 105,
				116, 121, 46, 99, 115, 0, 0, 0, 1, 0,
				0, 0, 80, 92, 76, 105, 98, 114, 97, 114,
				121, 92, 80, 97, 99, 107, 97, 103, 101, 67,
				97, 99, 104, 101, 92, 99, 111, 109, 46, 117,
				110, 105, 116, 121, 46, 120, 114, 46, 111, 112,
				101, 110, 120, 114, 64, 49, 46, 49, 52, 46,
				51, 92, 82, 117, 110, 116, 105, 109, 101, 92,
				87, 97, 105, 116, 70, 111, 114, 82, 101, 115,
				116, 97, 114, 116, 70, 105, 110, 105, 115, 104,
				46, 99, 115
			},
			TypesData = new byte[5137]
			{
				0, 0, 0, 0, 90, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
				79, 112, 101, 110, 88, 82, 46, 70, 101, 97,
				116, 117, 114, 101, 115, 46, 69, 120, 116, 101,
				110, 115, 105, 111, 110, 115, 46, 80, 101, 114,
				102, 111, 114, 109, 97, 110, 99, 101, 83, 101,
				116, 116, 105, 110, 103, 115, 124, 88, 114, 80,
				101, 114, 102, 111, 114, 109, 97, 110, 99, 101,
				83, 101, 116, 116, 105, 110, 103, 115, 70, 101,
				97, 116, 117, 114, 101, 0, 0, 0, 0, 100,
				85, 110, 105, 116, 121, 69, 110, 103, 105, 110,
				101, 46, 88, 82, 46, 79, 112, 101, 110, 88,
				82, 46, 70, 101, 97, 116, 117, 114, 101, 115,
				46, 69, 120, 116, 101, 110, 115, 105, 111, 110,
				115, 46, 80, 101, 114, 102, 111, 114, 109, 97,
				110, 99, 101, 83, 101, 116, 116, 105, 110, 103,
				115, 46, 88, 114, 80, 101, 114, 102, 111, 114,
				109, 97, 110, 99, 101, 83, 101, 116, 116, 105,
				110, 103, 115, 70, 101, 97, 116, 117, 114, 101,
				124, 78, 97, 116, 105, 118, 101, 65, 112, 105,
				0, 0, 0, 0, 91, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
				79, 112, 101, 110, 88, 82, 46, 70, 101, 97,
				116, 117, 114, 101, 115, 46, 69, 120, 116, 101,
				110, 115, 105, 111, 110, 115, 46, 80, 101, 114,
				102, 111, 114, 109, 97, 110, 99, 101, 83, 101,
				116, 116, 105, 110, 103, 115, 124, 80, 101, 114,
				102, 111, 114, 109, 97, 110, 99, 101, 67, 104,
				97, 110, 103, 101, 78, 111, 116, 105, 102, 105,
				99, 97, 116, 105, 111, 110, 0, 0, 0, 0,
				55, 85, 110, 105, 116, 121, 69, 110, 103, 105,
				110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
				88, 82, 46, 70, 101, 97, 116, 117, 114, 101,
				115, 124, 70, 111, 118, 101, 97, 116, 101, 100,
				82, 101, 110, 100, 101, 114, 105, 110, 103, 70,
				101, 97, 116, 117, 114, 101, 0, 0, 0, 0,
				59, 85, 110, 105, 116, 121, 69, 110, 103, 105,
				110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
				88, 82, 46, 70, 101, 97, 116, 117, 114, 101,
				115, 46, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 115, 124, 68, 80, 97, 100, 73,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				0, 0, 0, 0, 64, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
				79, 112, 101, 110, 88, 82, 46, 70, 101, 97,
				116, 117, 114, 101, 115, 46, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 115, 46, 68,
				80, 97, 100, 73, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 124, 68, 80, 97, 100, 0,
				0, 0, 0, 62, 85, 110, 105, 116, 121, 69,
				110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
				112, 101, 110, 88, 82, 46, 70, 101, 97, 116,
				117, 114, 101, 115, 46, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 115, 124, 69, 121,
				101, 71, 97, 122, 101, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 0, 0, 0, 0,
				76, 85, 110, 105, 116, 121, 69, 110, 103, 105,
				110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
				88, 82, 46, 70, 101, 97, 116, 117, 114, 101,
				115, 46, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 115, 46, 69, 121, 101, 71, 97,
				122, 101, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 124, 69, 121, 101, 71, 97, 122,
				101, 68, 101, 118, 105, 99, 101, 0, 0, 0,
				0, 61, 85, 110, 105, 116, 121, 69, 110, 103,
				105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
				110, 88, 82, 46, 70, 101, 97, 116, 117, 114,
				101, 115, 46, 73, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 115, 124, 69, 121, 101, 84,
				114, 97, 99, 107, 105, 110, 103, 85, 115, 97,
				103, 101, 115, 0, 0, 0, 0, 70, 85, 110,
				105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
				88, 82, 46, 79, 112, 101, 110, 88, 82, 46,
				70, 101, 97, 116, 117, 114, 101, 115, 46, 73,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				115, 124, 72, 97, 110, 100, 67, 111, 109, 109,
				111, 110, 80, 111, 115, 101, 115, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 0, 0,
				0, 0, 91, 85, 110, 105, 116, 121, 69, 110,
				103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
				101, 110, 88, 82, 46, 70, 101, 97, 116, 117,
				114, 101, 115, 46, 73, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 115, 46, 72, 97, 110,
				100, 67, 111, 109, 109, 111, 110, 80, 111, 115,
				101, 115, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 124, 72, 97, 110, 100, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 80,
				111, 115, 101, 115, 0, 0, 0, 0, 66, 85,
				110, 105, 116, 121, 69, 110, 103, 105, 110, 101,
				46, 88, 82, 46, 79, 112, 101, 110, 88, 82,
				46, 70, 101, 97, 116, 117, 114, 101, 115, 46,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 115, 124, 72, 97, 110, 100, 73, 110, 116,
				101, 114, 97, 99, 116, 105, 111, 110, 80, 114,
				111, 102, 105, 108, 101, 0, 0, 0, 0, 82,
				85, 110, 105, 116, 121, 69, 110, 103, 105, 110,
				101, 46, 88, 82, 46, 79, 112, 101, 110, 88,
				82, 46, 70, 101, 97, 116, 117, 114, 101, 115,
				46, 73, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 115, 46, 72, 97, 110, 100, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 80,
				114, 111, 102, 105, 108, 101, 124, 72, 97, 110,
				100, 73, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 0, 0, 0, 0, 71, 85, 110, 105,
				116, 121, 69, 110, 103, 105, 110, 101, 46, 88,
				82, 46, 79, 112, 101, 110, 88, 82, 46, 70,
				101, 97, 116, 117, 114, 101, 115, 46, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 115,
				124, 72, 80, 82, 101, 118, 101, 114, 98, 71,
				50, 67, 111, 110, 116, 114, 111, 108, 108, 101,
				114, 80, 114, 111, 102, 105, 108, 101, 0, 0,
				0, 0, 90, 85, 110, 105, 116, 121, 69, 110,
				103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
				101, 110, 88, 82, 46, 70, 101, 97, 116, 117,
				114, 101, 115, 46, 73, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 115, 46, 72, 80, 82,
				101, 118, 101, 114, 98, 71, 50, 67, 111, 110,
				116, 114, 111, 108, 108, 101, 114, 80, 114, 111,
				102, 105, 108, 101, 124, 82, 101, 118, 101, 114,
				98, 71, 50, 67, 111, 110, 116, 114, 111, 108,
				108, 101, 114, 0, 0, 0, 0, 68, 85, 110,
				105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
				88, 82, 46, 79, 112, 101, 110, 88, 82, 46,
				70, 101, 97, 116, 117, 114, 101, 115, 46, 73,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				115, 124, 72, 84, 67, 86, 105, 118, 101, 67,
				111, 110, 116, 114, 111, 108, 108, 101, 114, 80,
				114, 111, 102, 105, 108, 101, 0, 0, 0, 0,
				83, 85, 110, 105, 116, 121, 69, 110, 103, 105,
				110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
				88, 82, 46, 70, 101, 97, 116, 117, 114, 101,
				115, 46, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 115, 46, 72, 84, 67, 86, 105,
				118, 101, 67, 111, 110, 116, 114, 111, 108, 108,
				101, 114, 80, 114, 111, 102, 105, 108, 101, 124,
				86, 105, 118, 101, 67, 111, 110, 116, 114, 111,
				108, 108, 101, 114, 0, 0, 0, 0, 70, 85,
				110, 105, 116, 121, 69, 110, 103, 105, 110, 101,
				46, 88, 82, 46, 79, 112, 101, 110, 88, 82,
				46, 70, 101, 97, 116, 117, 114, 101, 115, 46,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 115, 124, 75, 72, 82, 83, 105, 109, 112,
				108, 101, 67, 111, 110, 116, 114, 111, 108, 108,
				101, 114, 80, 114, 111, 102, 105, 108, 101, 0,
				0, 0, 0, 90, 85, 110, 105, 116, 121, 69,
				110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
				112, 101, 110, 88, 82, 46, 70, 101, 97, 116,
				117, 114, 101, 115, 46, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 115, 46, 75, 72,
				82, 83, 105, 109, 112, 108, 101, 67, 111, 110,
				116, 114, 111, 108, 108, 101, 114, 80, 114, 111,
				102, 105, 108, 101, 124, 75, 72, 82, 83, 105,
				109, 112, 108, 101, 67, 111, 110, 116, 114, 111,
				108, 108, 101, 114, 0, 0, 0, 0, 79, 85,
				110, 105, 116, 121, 69, 110, 103, 105, 110, 101,
				46, 88, 82, 46, 79, 112, 101, 110, 88, 82,
				46, 70, 101, 97, 116, 117, 114, 101, 115, 46,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 115, 124, 77, 101, 116, 97, 81, 117, 101,
				115, 116, 84, 111, 117, 99, 104, 80, 108, 117,
				115, 67, 111, 110, 116, 114, 111, 108, 108, 101,
				114, 80, 114, 111, 102, 105, 108, 101, 0, 0,
				0, 0, 104, 85, 110, 105, 116, 121, 69, 110,
				103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
				101, 110, 88, 82, 46, 70, 101, 97, 116, 117,
				114, 101, 115, 46, 73, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 115, 46, 77, 101, 116,
				97, 81, 117, 101, 115, 116, 84, 111, 117, 99,
				104, 80, 108, 117, 115, 67, 111, 110, 116, 114,
				111, 108, 108, 101, 114, 80, 114, 111, 102, 105,
				108, 101, 124, 81, 117, 101, 115, 116, 84, 111,
				117, 99, 104, 80, 108, 117, 115, 67, 111, 110,
				116, 114, 111, 108, 108, 101, 114, 0, 0, 0,
				0, 78, 85, 110, 105, 116, 121, 69, 110, 103,
				105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
				110, 88, 82, 46, 70, 101, 97, 116, 117, 114,
				101, 115, 46, 73, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 115, 124, 77, 101, 116, 97,
				81, 117, 101, 115, 116, 84, 111, 117, 99, 104,
				80, 114, 111, 67, 111, 110, 116, 114, 111, 108,
				108, 101, 114, 80, 114, 111, 102, 105, 108, 101,
				0, 0, 0, 0, 102, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
				79, 112, 101, 110, 88, 82, 46, 70, 101, 97,
				116, 117, 114, 101, 115, 46, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 115, 46, 77,
				101, 116, 97, 81, 117, 101, 115, 116, 84, 111,
				117, 99, 104, 80, 114, 111, 67, 111, 110, 116,
				114, 111, 108, 108, 101, 114, 80, 114, 111, 102,
				105, 108, 101, 124, 81, 117, 101, 115, 116, 80,
				114, 111, 84, 111, 117, 99, 104, 67, 111, 110,
				116, 114, 111, 108, 108, 101, 114, 0, 0, 0,
				0, 68, 85, 110, 105, 116, 121, 69, 110, 103,
				105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
				110, 88, 82, 46, 70, 101, 97, 116, 117, 114,
				101, 115, 46, 73, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 115, 124, 77, 105, 99, 114,
				111, 115, 111, 102, 116, 72, 97, 110, 100, 73,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				0, 0, 0, 0, 81, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
				79, 112, 101, 110, 88, 82, 46, 70, 101, 97,
				116, 117, 114, 101, 115, 46, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 115, 46, 77,
				105, 99, 114, 111, 115, 111, 102, 116, 72, 97,
				110, 100, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 124, 72, 111, 108, 111, 76, 101,
				110, 115, 72, 97, 110, 100, 0, 0, 0, 0,
				76, 85, 110, 105, 116, 121, 69, 110, 103, 105,
				110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
				88, 82, 46, 70, 101, 97, 116, 117, 114, 101,
				115, 46, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 115, 124, 77, 105, 99, 114, 111,
				115, 111, 102, 116, 77, 111, 116, 105, 111, 110,
				67, 111, 110, 116, 114, 111, 108, 108, 101, 114,
				80, 114, 111, 102, 105, 108, 101, 0, 0, 0,
				0, 97, 85, 110, 105, 116, 121, 69, 110, 103,
				105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
				110, 88, 82, 46, 70, 101, 97, 116, 117, 114,
				101, 115, 46, 73, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 115, 46, 77, 105, 99, 114,
				111, 115, 111, 102, 116, 77, 111, 116, 105, 111,
				110, 67, 111, 110, 116, 114, 111, 108, 108, 101,
				114, 80, 114, 111, 102, 105, 108, 101, 124, 87,
				77, 82, 83, 112, 97, 116, 105, 97, 108, 67,
				111, 110, 116, 114, 111, 108, 108, 101, 114, 0,
				0, 0, 0, 72, 85, 110, 105, 116, 121, 69,
				110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
				112, 101, 110, 88, 82, 46, 70, 101, 97, 116,
				117, 114, 101, 115, 46, 73, 110, 116, 101, 114,
				97, 99, 116, 105, 111, 110, 115, 124, 79, 99,
				117, 108, 117, 115, 84, 111, 117, 99, 104, 67,
				111, 110, 116, 114, 111, 108, 108, 101, 114, 80,
				114, 111, 102, 105, 108, 101, 0, 0, 0, 0,
				94, 85, 110, 105, 116, 121, 69, 110, 103, 105,
				110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
				88, 82, 46, 70, 101, 97, 116, 117, 114, 101,
				115, 46, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 115, 46, 79, 99, 117, 108, 117,
				115, 84, 111, 117, 99, 104, 67, 111, 110, 116,
				114, 111, 108, 108, 101, 114, 80, 114, 111, 102,
				105, 108, 101, 124, 79, 99, 117, 108, 117, 115,
				84, 111, 117, 99, 104, 67, 111, 110, 116, 114,
				111, 108, 108, 101, 114, 0, 0, 0, 0, 63,
				85, 110, 105, 116, 121, 69, 110, 103, 105, 110,
				101, 46, 88, 82, 46, 79, 112, 101, 110, 88,
				82, 46, 70, 101, 97, 116, 117, 114, 101, 115,
				46, 73, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 115, 124, 80, 97, 108, 109, 80, 111,
				115, 101, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 0, 0, 0, 0, 72, 85, 110,
				105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
				88, 82, 46, 79, 112, 101, 110, 88, 82, 46,
				70, 101, 97, 116, 117, 114, 101, 115, 46, 73,
				110, 116, 101, 114, 97, 99, 116, 105, 111, 110,
				115, 46, 80, 97, 108, 109, 80, 111, 115, 101,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 124, 80, 97, 108, 109, 80, 111, 115, 101,
				0, 0, 0, 0, 71, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
				79, 112, 101, 110, 88, 82, 46, 70, 101, 97,
				116, 117, 114, 101, 115, 46, 73, 110, 116, 101,
				114, 97, 99, 116, 105, 111, 110, 115, 124, 86,
				97, 108, 118, 101, 73, 110, 100, 101, 120, 67,
				111, 110, 116, 114, 111, 108, 108, 101, 114, 80,
				114, 111, 102, 105, 108, 101, 0, 0, 0, 0,
				92, 85, 110, 105, 116, 121, 69, 110, 103, 105,
				110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
				88, 82, 46, 70, 101, 97, 116, 117, 114, 101,
				115, 46, 73, 110, 116, 101, 114, 97, 99, 116,
				105, 111, 110, 115, 46, 86, 97, 108, 118, 101,
				73, 110, 100, 101, 120, 67, 111, 110, 116, 114,
				111, 108, 108, 101, 114, 80, 114, 111, 102, 105,
				108, 101, 124, 86, 97, 108, 118, 101, 73, 110,
				100, 101, 120, 67, 111, 110, 116, 114, 111, 108,
				108, 101, 114, 1, 0, 0, 0, 44, 85, 110,
				105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
				88, 82, 46, 79, 112, 101, 110, 88, 82, 46,
				70, 101, 97, 116, 117, 114, 101, 115, 124, 79,
				112, 101, 110, 88, 82, 70, 101, 97, 116, 117,
				114, 101, 1, 0, 0, 0, 44, 85, 110, 105,
				116, 121, 69, 110, 103, 105, 110, 101, 46, 88,
				82, 46, 79, 112, 101, 110, 88, 82, 46, 70,
				101, 97, 116, 117, 114, 101, 115, 124, 79, 112,
				101, 110, 88, 82, 70, 101, 97, 116, 117, 114,
				101, 1, 0, 0, 0, 36, 85, 110, 105, 116,
				121, 69, 110, 103, 105, 110, 101, 46, 88, 82,
				46, 79, 112, 101, 110, 88, 82, 124, 79, 112,
				101, 110, 88, 82, 83, 101, 116, 116, 105, 110,
				103, 115, 0, 0, 0, 0, 55, 85, 110, 105,
				116, 121, 69, 110, 103, 105, 110, 101, 46, 88,
				82, 46, 79, 112, 101, 110, 88, 82, 46, 70,
				101, 97, 116, 117, 114, 101, 115, 124, 79, 112,
				101, 110, 88, 82, 73, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 70, 101, 97, 116, 117,
				114, 101, 0, 0, 0, 0, 69, 85, 110, 105,
				116, 121, 69, 110, 103, 105, 110, 101, 46, 88,
				82, 46, 79, 112, 101, 110, 88, 82, 46, 70,
				101, 97, 116, 117, 114, 101, 115, 46, 79, 112,
				101, 110, 88, 82, 73, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 70, 101, 97, 116, 117,
				114, 101, 124, 65, 99, 116, 105, 111, 110, 66,
				105, 110, 100, 105, 110, 103, 0, 0, 0, 0,
				68, 85, 110, 105, 116, 121, 69, 110, 103, 105,
				110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
				88, 82, 46, 70, 101, 97, 116, 117, 114, 101,
				115, 46, 79, 112, 101, 110, 88, 82, 73, 110,
				116, 101, 114, 97, 99, 116, 105, 111, 110, 70,
				101, 97, 116, 117, 114, 101, 124, 65, 99, 116,
				105, 111, 110, 67, 111, 110, 102, 105, 103, 0,
				0, 0, 0, 68, 85, 110, 105, 116, 121, 69,
				110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
				112, 101, 110, 88, 82, 46, 70, 101, 97, 116,
				117, 114, 101, 115, 46, 79, 112, 101, 110, 88,
				82, 73, 110, 116, 101, 114, 97, 99, 116, 105,
				111, 110, 70, 101, 97, 116, 117, 114, 101, 124,
				68, 101, 118, 105, 99, 101, 67, 111, 110, 102,
				105, 103, 0, 0, 0, 0, 71, 85, 110, 105,
				116, 121, 69, 110, 103, 105, 110, 101, 46, 88,
				82, 46, 79, 112, 101, 110, 88, 82, 46, 70,
				101, 97, 116, 117, 114, 101, 115, 46, 79, 112,
				101, 110, 88, 82, 73, 110, 116, 101, 114, 97,
				99, 116, 105, 111, 110, 70, 101, 97, 116, 117,
				114, 101, 124, 65, 99, 116, 105, 111, 110, 77,
				97, 112, 67, 111, 110, 102, 105, 103, 0, 0,
				0, 0, 65, 85, 110, 105, 116, 121, 69, 110,
				103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
				101, 110, 88, 82, 46, 70, 101, 97, 116, 117,
				114, 101, 115, 46, 79, 112, 101, 110, 88, 82,
				73, 110, 116, 101, 114, 97, 99, 116, 105, 111,
				110, 70, 101, 97, 116, 117, 114, 101, 124, 85,
				115, 101, 114, 80, 97, 116, 104, 115, 0, 0,
				0, 0, 34, 85, 110, 105, 116, 121, 69, 110,
				103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
				101, 110, 88, 82, 46, 73, 110, 112, 117, 116,
				124, 72, 97, 112, 116, 105, 99, 0, 0, 0,
				0, 41, 85, 110, 105, 116, 121, 69, 110, 103,
				105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
				110, 88, 82, 46, 73, 110, 112, 117, 116, 124,
				72, 97, 112, 116, 105, 99, 67, 111, 110, 116,
				114, 111, 108, 0, 0, 0, 0, 40, 85, 110,
				105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
				88, 82, 46, 79, 112, 101, 110, 88, 82, 46,
				73, 110, 112, 117, 116, 124, 79, 112, 101, 110,
				88, 82, 68, 101, 118, 105, 99, 101, 0, 0,
				0, 0, 37, 85, 110, 105, 116, 121, 69, 110,
				103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
				101, 110, 88, 82, 46, 73, 110, 112, 117, 116,
				124, 79, 112, 101, 110, 88, 82, 72, 109, 100,
				0, 0, 0, 0, 39, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
				79, 112, 101, 110, 88, 82, 46, 73, 110, 112,
				117, 116, 124, 79, 112, 101, 110, 88, 82, 73,
				110, 112, 117, 116, 0, 0, 0, 0, 54, 85,
				110, 105, 116, 121, 69, 110, 103, 105, 110, 101,
				46, 88, 82, 46, 79, 112, 101, 110, 88, 82,
				46, 73, 110, 112, 117, 116, 46, 79, 112, 101,
				110, 88, 82, 73, 110, 112, 117, 116, 124, 83,
				101, 114, 105, 97, 108, 105, 122, 101, 100, 71,
				117, 105, 100, 0, 0, 0, 0, 57, 85, 110,
				105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
				88, 82, 46, 79, 112, 101, 110, 88, 82, 46,
				73, 110, 112, 117, 116, 46, 79, 112, 101, 110,
				88, 82, 73, 110, 112, 117, 116, 124, 83, 101,
				114, 105, 97, 108, 105, 122, 101, 100, 66, 105,
				110, 100, 105, 110, 103, 0, 0, 0, 0, 66,
				85, 110, 105, 116, 121, 69, 110, 103, 105, 110,
				101, 46, 88, 82, 46, 79, 112, 101, 110, 88,
				82, 46, 73, 110, 112, 117, 116, 46, 79, 112,
				101, 110, 88, 82, 73, 110, 112, 117, 116, 124,
				71, 101, 116, 73, 110, 116, 101, 114, 110, 97,
				108, 68, 101, 118, 105, 99, 101, 73, 100, 67,
				111, 109, 109, 97, 110, 100, 0, 0, 0, 0,
				32, 85, 110, 105, 116, 121, 69, 110, 103, 105,
				110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
				88, 82, 46, 73, 110, 112, 117, 116, 124, 80,
				111, 115, 101, 0, 0, 0, 0, 39, 85, 110,
				105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
				88, 82, 46, 79, 112, 101, 110, 88, 82, 46,
				73, 110, 112, 117, 116, 124, 80, 111, 115, 101,
				67, 111, 110, 116, 114, 111, 108, 0, 0, 0,
				0, 37, 85, 110, 105, 116, 121, 69, 110, 103,
				105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
				110, 88, 82, 124, 79, 112, 101, 110, 88, 82,
				65, 110, 97, 108, 121, 116, 105, 99, 115, 0,
				0, 0, 0, 53, 85, 110, 105, 116, 121, 69,
				110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
				112, 101, 110, 88, 82, 46, 79, 112, 101, 110,
				88, 82, 65, 110, 97, 108, 121, 116, 105, 99,
				115, 124, 73, 110, 105, 116, 105, 97, 108, 105,
				122, 101, 69, 118, 101, 110, 116, 1, 0, 0,
				0, 36, 85, 110, 105, 116, 121, 69, 110, 103,
				105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
				110, 88, 82, 124, 79, 112, 101, 110, 88, 82,
				83, 101, 116, 116, 105, 110, 103, 115, 0, 0,
				0, 0, 60, 85, 110, 105, 116, 121, 69, 110,
				103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
				101, 110, 88, 82, 46, 79, 112, 101, 110, 88,
				82, 83, 101, 116, 116, 105, 110, 103, 115, 124,
				67, 111, 108, 111, 114, 83, 117, 98, 109, 105,
				115, 115, 105, 111, 110, 77, 111, 100, 101, 76,
				105, 115, 116, 0, 0, 0, 0, 31, 85, 110,
				105, 116, 121, 69, 110, 103, 105, 110, 101, 46,
				88, 82, 46, 79, 112, 101, 110, 88, 82, 124,
				67, 111, 110, 115, 116, 97, 110, 116, 115, 0,
				0, 0, 0, 38, 85, 110, 105, 116, 121, 69,
				110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
				112, 101, 110, 88, 82, 124, 68, 105, 97, 103,
				110, 111, 115, 116, 105, 99, 82, 101, 112, 111,
				114, 116, 0, 0, 0, 0, 34, 85, 110, 105,
				116, 121, 69, 110, 103, 105, 110, 101, 46, 88,
				82, 46, 79, 112, 101, 110, 88, 82, 124, 79,
				112, 101, 110, 88, 82, 76, 111, 97, 100, 101,
				114, 1, 0, 0, 0, 38, 85, 110, 105, 116,
				121, 69, 110, 103, 105, 110, 101, 46, 88, 82,
				46, 79, 112, 101, 110, 88, 82, 124, 79, 112,
				101, 110, 88, 82, 76, 111, 97, 100, 101, 114,
				66, 97, 115, 101, 0, 0, 0, 0, 57, 85,
				110, 105, 116, 121, 69, 110, 103, 105, 110, 101,
				46, 88, 82, 46, 79, 112, 101, 110, 88, 82,
				46, 79, 112, 101, 110, 88, 82, 76, 111, 97,
				100, 101, 114, 66, 97, 115, 101, 124, 70, 101,
				97, 116, 117, 114, 101, 76, 111, 103, 103, 105,
				110, 103, 73, 110, 102, 111, 1, 0, 0, 0,
				38, 85, 110, 105, 116, 121, 69, 110, 103, 105,
				110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
				88, 82, 124, 79, 112, 101, 110, 88, 82, 76,
				111, 97, 100, 101, 114, 66, 97, 115, 101, 0,
				0, 0, 0, 43, 85, 110, 105, 116, 121, 69,
				110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
				112, 101, 110, 88, 82, 124, 79, 112, 101, 110,
				88, 82, 76, 111, 97, 100, 101, 114, 78, 111,
				80, 114, 101, 73, 110, 105, 116, 0, 0, 0,
				0, 52, 85, 110, 105, 116, 121, 69, 110, 103,
				105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
				110, 88, 82, 46, 78, 97, 116, 105, 118, 101,
				84, 121, 112, 101, 115, 124, 88, 114, 82, 101,
				115, 117, 108, 116, 69, 120, 116, 101, 110, 115,
				105, 111, 110, 115, 0, 0, 0, 0, 51, 85,
				110, 105, 116, 121, 69, 110, 103, 105, 110, 101,
				46, 88, 82, 46, 79, 112, 101, 110, 88, 82,
				46, 78, 97, 116, 105, 118, 101, 84, 121, 112,
				101, 115, 124, 88, 114, 66, 97, 115, 101, 73,
				110, 83, 116, 114, 117, 99, 116, 117, 114, 101,
				0, 0, 0, 0, 44, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
				79, 112, 101, 110, 88, 82, 46, 78, 97, 116,
				105, 118, 101, 84, 121, 112, 101, 115, 124, 88,
				114, 86, 101, 99, 116, 111, 114, 50, 102, 0,
				0, 0, 0, 44, 85, 110, 105, 116, 121, 69,
				110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
				112, 101, 110, 88, 82, 46, 78, 97, 116, 105,
				118, 101, 84, 121, 112, 101, 115, 124, 88, 114,
				86, 101, 99, 116, 111, 114, 51, 102, 0, 0,
				0, 0, 47, 85, 110, 105, 116, 121, 69, 110,
				103, 105, 110, 101, 46, 88, 82, 46, 79, 112,
				101, 110, 88, 82, 46, 78, 97, 116, 105, 118,
				101, 84, 121, 112, 101, 115, 124, 88, 114, 81,
				117, 97, 116, 101, 114, 110, 105, 111, 110, 102,
				0, 0, 0, 0, 41, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
				79, 112, 101, 110, 88, 82, 46, 78, 97, 116,
				105, 118, 101, 84, 121, 112, 101, 115, 124, 88,
				114, 80, 111, 115, 101, 102, 0, 0, 0, 0,
				55, 85, 110, 105, 116, 121, 69, 110, 103, 105,
				110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
				88, 82, 46, 78, 97, 116, 105, 118, 101, 84,
				121, 112, 101, 115, 124, 88, 114, 83, 119, 97,
				112, 99, 104, 97, 105, 110, 67, 114, 101, 97,
				116, 101, 73, 110, 102, 111, 1, 0, 0, 0,
				36, 85, 110, 105, 116, 121, 69, 110, 103, 105,
				110, 101, 46, 88, 82, 46, 79, 112, 101, 110,
				88, 82, 124, 79, 112, 101, 110, 88, 82, 83,
				101, 116, 116, 105, 110, 103, 115, 0, 0, 0,
				0, 37, 85, 110, 105, 116, 121, 69, 110, 103,
				105, 110, 101, 46, 88, 82, 46, 79, 112, 101,
				110, 88, 82, 124, 79, 112, 101, 110, 88, 82,
				82, 101, 115, 116, 97, 114, 116, 101, 114, 0,
				0, 0, 0, 35, 85, 110, 105, 116, 121, 69,
				110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
				112, 101, 110, 88, 82, 124, 79, 112, 101, 110,
				88, 82, 82, 117, 110, 116, 105, 109, 101, 1,
				0, 0, 0, 36, 85, 110, 105, 116, 121, 69,
				110, 103, 105, 110, 101, 46, 88, 82, 46, 79,
				112, 101, 110, 88, 82, 124, 79, 112, 101, 110,
				88, 82, 83, 101, 116, 116, 105, 110, 103, 115,
				1, 0, 0, 0, 36, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
				79, 112, 101, 110, 88, 82, 124, 79, 112, 101,
				110, 88, 82, 83, 101, 116, 116, 105, 110, 103,
				115, 0, 0, 0, 0, 44, 85, 110, 105, 116,
				121, 69, 110, 103, 105, 110, 101, 46, 88, 82,
				46, 79, 112, 101, 110, 88, 82, 46, 65, 80,
				73, 124, 85, 110, 105, 116, 121, 88, 82, 84,
				101, 120, 116, 117, 114, 101, 68, 97, 116, 97,
				0, 0, 0, 0, 50, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
				79, 112, 101, 110, 88, 82, 46, 65, 80, 73,
				124, 85, 110, 105, 116, 121, 88, 82, 82, 101,
				110, 100, 101, 114, 84, 101, 120, 116, 117, 114,
				101, 68, 101, 115, 99, 0, 0, 0, 0, 40,
				85, 110, 105, 116, 121, 69, 110, 103, 105, 110,
				101, 46, 88, 82, 46, 79, 112, 101, 110, 88,
				82, 46, 65, 80, 73, 124, 85, 110, 105, 116,
				121, 88, 82, 68, 105, 115, 112, 108, 97, 121,
				0, 0, 0, 0, 35, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
				79, 112, 101, 110, 88, 82, 124, 79, 112, 101,
				110, 88, 82, 85, 116, 105, 108, 105, 116, 121,
				0, 0, 0, 0, 42, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 88, 82, 46,
				79, 112, 101, 110, 88, 82, 124, 87, 97, 105,
				116, 70, 111, 114, 82, 101, 115, 116, 97, 114,
				116, 70, 105, 110, 105, 115, 104
			},
			TotalFiles = 42,
			TotalTypes = 80,
			IsEditorOnly = false
		};
	}
}
namespace UnityEngine.XR.OpenXR
{
	[Serializable]
	public class OpenXRSettings : ScriptableObject
	{
		public enum ColorSubmissionModeGroup
		{
			[InspectorName("8 bits per channel (LDR, default)")]
			kRenderTextureFormatGroup8888,
			[InspectorName("10 bits floating-point per color channel, 2 bit alpha (HDR)")]
			kRenderTextureFormatGroup1010102_Float,
			[InspectorName("16 bits floating-point per channel (HDR)")]
			kRenderTextureFormatGroup16161616_Float,
			[InspectorName("5,6,5 bit packed (LDR, mobile)")]
			kRenderTextureFormatGroup565,
			[InspectorName("11,11,10 bit packed floating-point (HDR)")]
			kRenderTextureFormatGroup111110_Float
		}

		[Serializable]
		public class ColorSubmissionModeList
		{
			public ColorSubmissionModeGroup[] m_List = new ColorSubmissionModeGroup[1];
		}

		public enum RenderMode
		{
			MultiPass,
			SinglePassInstanced
		}

		public enum DepthSubmissionMode
		{
			None,
			Depth16Bit,
			Depth24Bit
		}

		public enum BackendFovationApi : byte
		{
			Legacy,
			SRPFoveation
		}

		public enum SpaceWarpMotionVectorTextureFormat
		{
			RGBA16f,
			RG16f
		}

		[FormerlySerializedAs("extensions")]
		[HideInInspector]
		[SerializeField]
		internal OpenXRFeature[] features = new OpenXRFeature[0];

		public static readonly ColorSubmissionModeGroup kDefaultColorMode;

		[SerializeField]
		private RenderMode m_renderMode = RenderMode.SinglePassInstanced;

		[SerializeField]
		private bool m_autoColorSubmissionMode = true;

		[SerializeField]
		private ColorSubmissionModeList m_colorSubmissionModes = new ColorSubmissionModeList();

		[SerializeField]
		private DepthSubmissionMode m_depthSubmissionMode;

		[SerializeField]
		private SpaceWarpMotionVectorTextureFormat m_spacewarpMotionVectorTextureFormat;

		[SerializeField]
		private bool m_optimizeBufferDiscards;

		[SerializeField]
		private bool m_symmetricProjection;

		private const string LibraryName = "UnityOpenXR";

		private static OpenXRSettings s_RuntimeInstance;

		public int featureCount => features.Length;

		public RenderMode renderMode
		{
			get
			{
				if ((Object)(object)OpenXRLoaderBase.Instance != (Object)null)
				{
					return Internal_GetRenderMode();
				}
				return m_renderMode;
			}
			set
			{
				if ((Object)(object)OpenXRLoaderBase.Instance != (Object)null)
				{
					Internal_SetRenderMode(value);
				}
				else
				{
					m_renderMode = value;
				}
			}
		}

		public bool autoColorSubmissionMode
		{
			get
			{
				return m_autoColorSubmissionMode;
			}
			set
			{
				m_autoColorSubmissionMode = value;
			}
		}

		public ColorSubmissionModeGroup[] colorSubmissionModes
		{
			get
			{
				if (m_autoColorSubmissionMode)
				{
					return new ColorSubmissionModeGroup[1] { kDefaultColorMode };
				}
				if ((Object)(object)OpenXRLoaderBase.Instance != (Object)null)
				{
					int num = Internal_GetColorSubmissionModes(null, 0);
					int[] array = new int[num];
					Internal_GetColorSubmissionModes(array, num);
					return array.Select((int i) => (ColorSubmissionModeGroup)i).ToArray();
				}
				return m_colorSubmissionModes.m_List;
			}
			set
			{
				if ((Object)(object)OpenXRLoaderBase.Instance != (Object)null)
				{
					Internal_SetColorSubmissionModes(value.Select((ColorSubmissionModeGroup e) => (int)e).ToArray(), value.Length);
				}
				else
				{
					m_colorSubmissionModes.m_List = value;
				}
			}
		}

		public DepthSubmissionMode depthSubmissionMode
		{
			get
			{
				if ((Object)(object)OpenXRLoaderBase.Instance != (Object)null)
				{
					return Internal_GetDepthSubmissionMode();
				}
				return m_depthSubmissionMode;
			}
			set
			{
				if ((Object)(object)OpenXRLoaderBase.Instance != (Object)null)
				{
					Internal_SetDepthSubmissionMode(value);
				}
				else
				{
					m_depthSubmissionMode = value;
				}
			}
		}

		public SpaceWarpMotionVectorTextureFormat spacewarpMotionVectorTextureFormat
		{
			get
			{
				if ((Object)(object)OpenXRLoaderBase.Instance != (Object)null)
				{
					return Internal_GetSpaceWarpMotionVectorTextureFormat();
				}
				return m_spacewarpMotionVectorTextureFormat;
			}
			set
			{
				if ((Object)(object)OpenXRLoaderBase.Instance != (Object)null)
				{
					Internal_SetSpaceWarpMotionVectorTextureFormat(value);
				}
				else
				{
					m_spacewarpMotionVectorTextureFormat = value;
				}
			}
		}

		public bool optimizeBufferDiscards
		{
			get
			{
				return m_optimizeBufferDiscards;
			}
			set
			{
				if ((Object)(object)OpenXRLoaderBase.Instance != (Object)null)
				{
					Internal_SetOptimizeBufferDiscards(value);
				}
				else
				{
					m_optimizeBufferDiscards = value;
				}
			}
		}

		public bool symmetricProjection
		{
			get
			{
				return m_symmetricProjection;
			}
			set
			{
				if ((Object)(object)OpenXRLoaderBase.Instance != (Object)null)
				{
					Internal_SetSymmetricProjection(value);
				}
				else
				{
					m_symmetricProjection = value;
				}
			}
		}

		public BackendFovationApi foveatedRenderingApi => BackendFovationApi.Legacy;

		public static OpenXRSettings ActiveBuildTargetInstance => GetInstance(useActiveBuildTarget: true);

		public static OpenXRSettings Instance => GetInstance(useActiveBuildTarget: false);

		public static bool AllowRecentering => Internal_GetAllowRecentering();

		public static float FloorOffset => Internal_GetFloorOffset();

		public TFeature GetFeature<TFeature>() where TFeature : OpenXRFeature
		{
			return (TFeature)GetFeature(typeof(TFeature));
		}

		public OpenXRFeature GetFeature(Type featureType)
		{
			OpenXRFeature[] array = features;
			foreach (OpenXRFeature openXRFeature in array)
			{
				if (featureType.IsInstanceOfType(openXRFeature))
				{
					return openXRFeature;
				}
			}
			return null;
		}

		public OpenXRFeature[] GetFeatures<TFeature>()
		{
			return GetFeatures(typeof(TFeature));
		}

		public OpenXRFeature[] GetFeatures(Type featureType)
		{
			List<OpenXRFeature> list = new List<OpenXRFeature>();
			OpenXRFeature[] array = features;
			foreach (OpenXRFeature openXRFeature in array)
			{
				if (featureType.IsInstanceOfType(openXRFeature))
				{
					list.Add(openXRFeature);
				}
			}
			return list.ToArray();
		}

		public int GetFeatures<TFeature>(List<TFeature> featuresOut) where TFeature : OpenXRFeature
		{
			featuresOut.Clear();
			OpenXRFeature[] array = features;
			for (int i = 0; i < array.Length; i++)
			{
				if (array[i] is TFeature item)
				{
					featuresOut.Add(item);
				}
			}
			return featuresOut.Count;
		}

		public int GetFeatures(Type featureType, List<OpenXRFeature> featuresOut)
		{
			featuresOut.Clear();
			OpenXRFeature[] array = features;
			foreach (OpenXRFeature openXRFeature in array)
			{
				if (featureType.IsInstanceOfType(openXRFeature))
				{
					featuresOut.Add(openXRFeature);
				}
			}
			return featuresOut.Count;
		}

		public OpenXRFeature[] GetFeatures()
		{
			return ((OpenXRFeature[])features?.Clone()) ?? new OpenXRFeature[0];
		}

		public int GetFeatures(List<OpenXRFeature> featuresOut)
		{
			featuresOut.Clear();
			featuresOut.AddRange(features);
			return featuresOut.Count;
		}

		private static void PermissionGrantedCallback(string permissionName)
		{
		}

		private void ApplyRenderSettings()
		{
			Internal_SetSymmetricProjection(m_symmetricProjection);
			Internal_SetRenderMode(m_renderMode);
			Internal_SetColorSubmissionModes(m_colorSubmissionModes.m_List.Select((ColorSubmissionModeGroup e) => (int)e).ToArray(), m_colorSubmissionModes.m_List.Length);
			Internal_SetDepthSubmissionMode(m_depthSubmissionMode);
			Internal_SetSpaceWarpMotionVectorTextureFormat(m_spacewarpMotionVectorTextureFormat);
			Internal_SetOptimizeBufferDiscards(m_optimizeBufferDiscards);
		}

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_SetRenderMode")]
		private static extern void Internal_SetRenderMode(RenderMode renderMode);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetRenderMode")]
		private static extern RenderMode Internal_GetRenderMode();

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_SetDepthSubmissionMode")]
		private static extern void Internal_SetDepthSubmissionMode(DepthSubmissionMode depthSubmissionMode);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetDepthSubmissionMode")]
		private static extern DepthSubmissionMode Internal_GetDepthSubmissionMode();

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_SetSpaceWarpMotionVectorTextureFormat")]
		private static extern void Internal_SetSpaceWarpMotionVectorTextureFormat(SpaceWarpMotionVectorTextureFormat spaceWarpMotionVectorTextureFormat);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetSpaceWarpMotionVectorTextureFormat")]
		private static extern SpaceWarpMotionVectorTextureFormat Internal_GetSpaceWarpMotionVectorTextureFormat();

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_SetSymmetricProjection")]
		private static extern void Internal_SetSymmetricProjection([MarshalAs(UnmanagedType.I1)] bool enabled);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_SetOptimizeMultiviewRenderRegions")]
		private static extern void Internal_SetOptimizeMultiviewRenderRegions([MarshalAs(UnmanagedType.I1)] bool enabled);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_SetOptimizeBufferDiscards")]
		private static extern void Internal_SetOptimizeBufferDiscards([MarshalAs(UnmanagedType.I1)] bool enabled);

		[DllImport("UnityOpenXR", EntryPoint = "OculusFoveation_SetUsedApi")]
		private static extern void Internal_SetUsedFoveatedRenderingApi(BackendFovationApi api);

		[DllImport("UnityOpenXR", EntryPoint = "OculusFoveation_GetUsedApi")]
		internal static extern BackendFovationApi Internal_GetUsedFoveatedRenderingApi();

		[DllImport("UnityOpenXR", EntryPoint = "OculusFoveation_HasRequestedEyeTrackingPermissions")]
		[return: MarshalAs(UnmanagedType.U1)]
		internal static extern bool Internal_HasRequestedEyeTrackingPermissions();

		[DllImport("UnityOpenXR", EntryPoint = "OculusFoveation_GetHasEyeTrackingPermissions")]
		[return: MarshalAs(UnmanagedType.U1)]
		internal static extern bool Internal_GetHasEyeTrackingPermissions();

		[DllImport("UnityOpenXR", EntryPoint = "OculusFoveation_SetHasEyeTrackingPermissions")]
		internal static extern void Internal_SetHasEyeTrackingPermissions([MarshalAs(UnmanagedType.I1)] bool value);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_SetColorSubmissionMode")]
		private static extern void Internal_SetColorSubmissionMode(ColorSubmissionModeGroup[] colorSubmissionMode);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_SetColorSubmissionModes")]
		private static extern void Internal_SetColorSubmissionModes(int[] colorSubmissionMode, int arraySize);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetColorSubmissionModes")]
		private static extern int Internal_GetColorSubmissionModes([Out] int[] colorSubmissionMode, int arraySize);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetIsUsingLegacyXRDisplay")]
		[return: MarshalAs(UnmanagedType.U1)]
		private static extern bool Internal_GetIsUsingLegacyXRDisplay();

		private void Awake()
		{
			s_RuntimeInstance = this;
		}

		internal void ApplySettings()
		{
			ApplyRenderSettings();
		}

		private static OpenXRSettings GetInstance(bool useActiveBuildTarget)
		{
			OpenXRSettings openXRSettings = null;
			openXRSettings = s_RuntimeInstance;
			if ((Object)(object)openXRSettings == (Object)null)
			{
				openXRSettings = ScriptableObject.CreateInstance<OpenXRSettings>();
			}
			return openXRSettings;
		}

		public static void SetAllowRecentering(bool allowRecentering, float floorOffset = 1.5f)
		{
			Internal_SetAllowRecentering(allowRecentering, floorOffset);
		}

		public static void RefreshRecenterSpace()
		{
			Internal_RegenerateTrackingOrigin();
		}

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_SetAllowRecentering")]
		private static extern void Internal_SetAllowRecentering([MarshalAs(UnmanagedType.U1)] bool active, float height);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_RegenerateTrackingOrigin")]
		private static extern void Internal_RegenerateTrackingOrigin();

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetAllowRecentering")]
		[return: MarshalAs(UnmanagedType.U1)]
		private static extern bool Internal_GetAllowRecentering();

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetFloorOffsetHeight")]
		private static extern float Internal_GetFloorOffset();
	}
	internal static class OpenXRAnalytics
	{
		[Serializable]
		private struct InitializeEvent
		{
			public bool success;

			public string runtime;

			public string runtime_version;

			public string plugin_version;

			public string api_version;

			public string[] available_extensions;

			public string[] enabled_extensions;

			public string[] enabled_features;

			public string[] failed_features;
		}

		private const int kMaxEventsPerHour = 1000;

		private const int kMaxNumberOfElements = 1000;

		private const string kVendorKey = "unity.openxr";

		private const string kEventInitialize = "openxr_initialize";

		private static bool s_Initialized;

		private static bool Initialize()
		{
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			if (s_Initialized)
			{
				return true;
			}
			if ((int)Analytics.RegisterEvent("openxr_initialize", 1000, 1000, "unity.openxr", "") != 0)
			{
				return false;
			}
			s_Initialized = true;
			return true;
		}

		public static void SendInitializeEvent(bool success)
		{
			if (s_Initialized || Initialize())
			{
				SendPlayerAnalytics(CreateInitializeEvent(success));
			}
		}

		private static InitializeEvent CreateInitializeEvent(bool success)
		{
			return new InitializeEvent
			{
				success = success,
				runtime = OpenXRRuntime.name,
				runtime_version = OpenXRRuntime.version,
				plugin_version = OpenXRRuntime.pluginVersion,
				api_version = OpenXRRuntime.apiVersion,
				enabled_extensions = (from ext in OpenXRRuntime.GetEnabledExtensions()
					select $"{ext}_{OpenXRRuntime.GetExtensionVersion(ext)}").ToArray(),
				available_extensions = (from ext in OpenXRRuntime.GetAvailableExtensions()
					select $"{ext}_{OpenXRRuntime.GetExtensionVersion(ext)}").ToArray(),
				enabled_features = (from f in OpenXRSettings.Instance.features
					where (Object)(object)f != (Object)null && f.enabled
					select ((object)f).GetType().FullName + "_" + f.version).ToArray(),
				failed_features = (from f in OpenXRSettings.Instance.features
					where (Object)(object)f != (Object)null && f.failedInitialization
					select ((object)f).GetType().FullName + "_" + f.version).ToArray()
			};
		}

		private static void SendPlayerAnalytics(InitializeEvent data)
		{
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			Analytics.SendEvent("openxr_initialize", (object)data, 1, "");
		}
	}
	public static class Constants
	{
		public const string k_SettingsKey = "com.unity.xr.openxr.settings4";
	}
	internal class DiagnosticReport
	{
		private const string LibraryName = "UnityOpenXR";

		public static readonly ulong k_NullSection;

		[DllImport("UnityOpenXR", EntryPoint = "DiagnosticReport_StartReport")]
		public static extern void StartReport();

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "DiagnosticReport_GetSection")]
		public static extern ulong GetSection(string sectionName);

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "DiagnosticReport_AddSectionEntry")]
		public static extern void AddSectionEntry(ulong sectionHandle, string sectionEntry, string sectionBody);

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "DiagnosticReport_AddSectionBreak")]
		public static extern void AddSectionBreak(ulong sectionHandle);

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "DiagnosticReport_AddEventEntry")]
		public static extern void AddEventEntry(string eventName, string eventData);

		[DllImport("UnityOpenXR", EntryPoint = "DiagnosticReport_DumpReport")]
		private static extern void Internal_DumpReport();

		[DllImport("UnityOpenXR", EntryPoint = "DiagnosticReport_DumpReportWithReason")]
		private static extern void Internal_DumpReport(string reason);

		[DllImport("UnityOpenXR", EntryPoint = "DiagnosticReport_GenerateReport")]
		private static extern IntPtr Internal_GenerateReport();

		[DllImport("UnityOpenXR", EntryPoint = "DiagnosticReport_ReleaseReport")]
		private static extern void Internal_ReleaseReport(IntPtr report);

		internal static string GenerateReport()
		{
			string result = "";
			IntPtr intPtr = Internal_GenerateReport();
			if (intPtr != IntPtr.Zero)
			{
				result = Marshal.PtrToStringAnsi(intPtr);
				Internal_ReleaseReport(intPtr);
				intPtr = IntPtr.Zero;
			}
			return result;
		}

		public static void DumpReport(string reason)
		{
			Internal_DumpReport(reason);
		}
	}
	public class OpenXRLoader : OpenXRLoaderBase
	{
	}
	public class OpenXRLoaderBase : XRLoaderHelper
	{
		private class FeatureLoggingInfo
		{
			public string m_nameUi;

			public string m_version;

			public string m_company;

			public string m_openxrExtensionStrings;

			public FeatureLoggingInfo(string nameUi, string version, string company, string extensionStrings)
			{
				m_nameUi = nameUi;
				m_version = version;
				m_company = company;
				m_openxrExtensionStrings = extensionStrings;
			}
		}

		internal enum LoaderState
		{
			Uninitialized,
			InitializeAttempted,
			Initialized,
			StartAttempted,
			Started,
			StopAttempted,
			Stopped,
			DeinitializeAttempted
		}

		internal delegate void ReceiveNativeEventDelegate(OpenXRFeature.NativeEvent e, ulong payload);

		private List<FeatureLoggingInfo> featureLoggingInfo;

		private const double k_IdlePollingWaitTimeInSeconds = 0.1;

		private static List<XRDisplaySubsystemDescriptor> s_DisplaySubsystemDescriptors = new List<XRDisplaySubsystemDescriptor>();

		private static List<XRInputSubsystemDescriptor> s_InputSubsystemDescriptors = new List<XRInputSubsystemDescriptor>();

		private List<LoaderState> validLoaderInitStates = new List<LoaderState>
		{
			LoaderState.Uninitialized,
			LoaderState.InitializeAttempted
		};

		private List<LoaderState> validLoaderStartStates = new List<LoaderState>
		{
			LoaderState.Initialized,
			LoaderState.StartAttempted,
			LoaderState.Stopped
		};

		private List<LoaderState> validLoaderStopStates = new List<LoaderState>
		{
			LoaderState.StartAttempted,
			LoaderState.Started,
			LoaderState.StopAttempted
		};

		private List<LoaderState> validLoaderDeinitStates = new List<LoaderState>
		{
			LoaderState.InitializeAttempted,
			LoaderState.Initialized,
			LoaderState.Stopped,
			LoaderState.DeinitializeAttempted
		};

		private List<LoaderState> runningStates = new List<LoaderState>
		{
			LoaderState.Initialized,
			LoaderState.StartAttempted,
			LoaderState.Started
		};

		private OpenXRFeature.NativeEvent currentOpenXRState;

		private bool actionSetsAttached;

		private UnhandledExceptionEventHandler unhandledExceptionHandler;

		internal bool DisableValidationChecksOnEnteringPlaymode;

		private double lastPollCheckTime;

		private const string LibraryName = "UnityOpenXR";

		internal static OpenXRLoaderBase Instance { get; private set; }

		internal LoaderState currentLoaderState { get; private set; }

		internal XRDisplaySubsystem displaySubsystem => ((XRLoaderHelper)this).GetLoadedSubsystem<XRDisplaySubsystem>();

		internal XRInputSubsystem inputSubsystem
		{
			get
			{
				OpenXRLoaderBase instance = Instance;
				if (instance == null)
				{
					return null;
				}
				return ((XRLoaderHelper)instance).GetLoadedSubsystem<XRInputSubsystem>();
			}
		}

		private bool isInitialized
		{
			get
			{
				if (currentLoaderState != LoaderState.Uninitialized)
				{
					return currentLoaderState != LoaderState.DeinitializeAttempted;
				}
				return false;
			}
		}

		private bool isStarted => runningStates.Contains(currentLoaderState);

		private static void ExceptionHandler(object sender, UnhandledExceptionEventArgs args)
		{
			ulong section = DiagnosticReport.GetSection("Unhandled Exception Report");
			DiagnosticReport.AddSectionEntry(section, "Is Terminating", $"{args.IsTerminating}");
			Exception ex = (Exception)args.ExceptionObject;
			DiagnosticReport.AddSectionEntry(section, "Message", ex.Message ?? "");
			DiagnosticReport.AddSectionEntry(section, "Source", ex.Source ?? "");
			DiagnosticReport.AddSectionEntry(section, "Stack Trace", "\n" + ex.StackTrace);
			DiagnosticReport.DumpReport("Uncaught Exception");
		}

		public override bool Initialize()
		{
			if (currentLoaderState == LoaderState.Initialized)
			{
				return true;
			}
			if (!validLoaderInitStates.Contains(currentLoaderState))
			{
				return false;
			}
			if ((Object)(object)Instance != (Object)null)
			{
				Debug.LogError((object)"Only one OpenXRLoader can be initialized at any given time");
				return false;
			}
			DiagnosticReport.StartReport();
			try
			{
				if (InitializeInternal())
				{
					return true;
				}
			}
			catch (Exception ex)
			{
				Debug.LogException(ex);
			}
			((XRLoader)this).Deinitialize();
			Instance = null;
			OpenXRAnalytics.SendInitializeEvent(success: false);
			return false;
		}

		private bool InitializeInternal()
		{
			//IL_0119: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Expected O, but got Unknown
			Instance = this;
			currentLoaderState = LoaderState.InitializeAttempted;
			Internal_SetSuccessfullyInitialized(value: false);
			OpenXRInput.RegisterLayouts();
			OpenXRFeature.Initialize();
			if (!LoadOpenXRSymbols())
			{
				Debug.LogError((object)"Failed to load openxr runtime loader.");
				return false;
			}
			OpenXRSettings.Instance.features = (from f in OpenXRSettings.Instance.features
				where (Object)(object)f != (Object)null
				orderby f.priority descending, f.nameUi
				select f).ToArray();
			OpenXRFeature.HookGetInstanceProcAddr();
			if (!Internal_InitializeSession())
			{
				return false;
			}
			RequestOpenXRFeatures();
			RegisterOpenXRCallbacks();
			if ((Object)null != (Object)(object)OpenXRSettings.Instance)
			{
				OpenXRSettings.Instance.ApplySettings();
			}
			if (!CreateSubsystems())
			{
				return false;
			}
			if (OpenXRFeature.requiredFeatureFailed)
			{
				return false;
			}
			SetApplicationInfo();
			OpenXRAnalytics.SendInitializeEvent(success: true);
			OpenXRFeature.ReceiveLoaderEvent(this, OpenXRFeature.LoaderEvent.SubsystemCreate);
			DebugLogEnabledSpecExtensions();
			Application.onBeforeRender += new UnityAction(ProcessOpenXRMessageLoop);
			currentLoaderState = LoaderState.Initialized;
			return true;
		}

		private bool CreateSubsystems()
		{
			if (displaySubsystem == null)
			{
				this.CreateSubsystem<XRDisplaySubsystemDescriptor, XRDisplaySubsystem>(s_DisplaySubsystemDescriptors, "OpenXR Display");
				if (displaySubsystem == null)
				{
					return false;
				}
			}
			if (inputSubsystem == null)
			{
				this.CreateSubsystem<XRInputSubsystemDescriptor, XRInputSubsystem>(s_InputSubsystemDescriptors, "OpenXR Input");
				if (inputSubsystem == null)
				{
					return false;
				}
			}
			return true;
		}

		internal void ProcessOpenXRMessageLoop()
		{
			if (currentOpenXRState == OpenXRFeature.NativeEvent.XrIdle || currentOpenXRState == OpenXRFeature.NativeEvent.XrStopping || currentOpenXRState == OpenXRFeature.NativeEvent.XrExiting || currentOpenXRState == OpenXRFeature.NativeEvent.XrLossPending || currentOpenXRState == OpenXRFeature.NativeEvent.XrInstanceLossPending)
			{
				float realtimeSinceStartup = Time.realtimeSinceStartup;
				if ((double)realtimeSinceStartup - lastPollCheckTime < 0.1)
				{
					return;
				}
				lastPollCheckTime = realtimeSinceStartup;
			}
			Internal_PumpMessageLoop();
		}

		public override bool Start()
		{
			if (currentLoaderState == LoaderState.Started)
			{
				return true;
			}
			if (!validLoaderStartStates.Contains(currentLoaderState))
			{
				return false;
			}
			currentLoaderState = LoaderState.StartAttempted;
			if (!StartInternal())
			{
				((XRLoader)this).Stop();
				return false;
			}
			currentLoaderState = LoaderState.Started;
			return true;
		}

		private bool StartInternal()
		{
			if (!Internal_CreateSessionIfNeeded())
			{
				return false;
			}
			if (currentOpenXRState != OpenXRFeature.NativeEvent.XrReady || (currentLoaderState != LoaderState.StartAttempted && currentLoaderState != LoaderState.Started))
			{
				return true;
			}
			this.StartSubsystem<XRDisplaySubsystem>();
			XRDisplaySubsystem obj = displaySubsystem;
			if (obj != null && !((IntegratedSubsystem)obj).running)
			{
				return false;
			}
			Internal_BeginSession();
			if (!actionSetsAttached)
			{
				OpenXRInput.AttachActionSets();
				actionSetsAttached = true;
			}
			XRDisplaySubsystem obj2 = displaySubsystem;
			if (obj2 != null && !((IntegratedSubsystem)obj2).running)
			{
				this.StartSubsystem<XRDisplaySubsystem>();
			}
			XRInputSubsystem obj3 = inputSubsystem;
			if (obj3 != null && !((IntegratedSubsystem)obj3).running)
			{
				this.StartSubsystem<XRInputSubsystem>();
			}
			XRInputSubsystem obj4 = inputSubsystem;
			bool num = obj4 != null && ((IntegratedSubsystem)obj4).running;
			XRDisplaySubsystem obj5 = displaySubsystem;
			bool flag = obj5 != null && ((IntegratedSubsystem)obj5).running;
			if (num && flag)
			{
				OpenXRFeature.ReceiveLoaderEvent(this, OpenXRFeature.LoaderEvent.SubsystemStart);
				return true;
			}
			return false;
		}

		public override bool Stop()
		{
			if (currentLoaderState == LoaderState.Stopped)
			{
				return true;
			}
			if (!validLoaderStopStates.Contains(currentLoaderState))
			{
				return false;
			}
			currentLoaderState = LoaderState.StopAttempted;
			XRInputSubsystem obj = inputSubsystem;
			bool num = obj != null && ((IntegratedSubsystem)obj).running;
			XRDisplaySubsystem obj2 = displaySubsystem;
			bool flag = obj2 != null && ((IntegratedSubsystem)obj2).running;
			if (num || flag)
			{
				OpenXRFeature.ReceiveLoaderEvent(this, OpenXRFeature.LoaderEvent.SubsystemStop);
			}
			if (num)
			{
				this.StopSubsystem<XRInputSubsystem>();
			}
			if (flag)
			{
				this.StopSubsystem<XRDisplaySubsystem>();
			}
			StopInternal();
			currentLoaderState = LoaderState.Stopped;
			return true;
		}

		private void StopInternal()
		{
			Internal_EndSession();
			ProcessOpenXRMessageLoop();
		}

		public override bool Deinitialize()
		{
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			if (currentLoaderState == LoaderState.Uninitialized)
			{
				return true;
			}
			if (!validLoaderDeinitStates.Contains(currentLoaderState))
			{
				return false;
			}
			currentLoaderState = LoaderState.DeinitializeAttempted;
			try
			{
				Internal_RequestExitSession();
				Application.onBeforeRender -= new UnityAction(ProcessOpenXRMessageLoop);
				ProcessOpenXRMessageLoop();
				OpenXRFeature.ReceiveLoaderEvent(this, OpenXRFeature.LoaderEvent.SubsystemDestroy);
				this.DestroySubsystem<XRInputSubsystem>();
				this.DestroySubsystem<XRDisplaySubsystem>();
				DiagnosticReport.DumpReport("System Shutdown");
				Internal_DestroySession();
				ProcessOpenXRMessageLoop();
				Internal_UnloadOpenXRLibrary();
				currentLoaderState = LoaderState.Uninitialized;
				actionSetsAttached = false;
				if (unhandledExceptionHandler != null)
				{
					AppDomain.CurrentDomain.UnhandledException -= unhandledExceptionHandler;
					unhandledExceptionHandler = null;
				}
				return ((XRLoaderHelper)this).Deinitialize();
			}
			finally
			{
				Instance = null;
			}
		}

		internal void CreateSubsystem<TDescriptor, TSubsystem>(List<TDescriptor> descriptors, string id) where TDescriptor : ISubsystemDescriptor where TSubsystem : ISubsystem
		{
			((XRLoaderHelper)this).CreateSubsystem<TDescriptor, TSubsystem>(descriptors, id);
		}

		internal void StartSubsystem<T>() where T : class, ISubsystem
		{
			((XRLoaderHelper)this).StartSubsystem<T>();
		}

		internal void StopSubsystem<T>() where T : class, ISubsystem
		{
			((XRLoaderHelper)this).StopSubsystem<T>();
		}

		internal void DestroySubsystem<T>() where T : class, ISubsystem
		{
			((XRLoaderHelper)this).DestroySubsystem<T>();
		}

		private void SetApplicationInfo()
		{
			byte[] array = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(Application.version));
			if (BitConverter.IsLittleEndian)
			{
				Array.Reverse(array);
			}
			uint applicationVersionHash = BitConverter.ToUInt32(array, 0);
			Internal_SetApplicationInfo(Application.productName, Application.version, applicationVersionHash, Application.unityVersion);
		}

		internal static byte[] StringToWCHAR_T(string s)
		{
			return ((Environment.OSVersion.Platform == PlatformID.Unix) ? Encoding.UTF32 : Encoding.Unicode).GetBytes(s + "\0");
		}

		private bool LoadOpenXRSymbols()
		{
			if (!Internal_LoadOpenXRLibrary(StringToWCHAR_T("openxr_loader")))
			{
				return false;
			}
			return true;
		}

		private void RequestOpenXRFeatures()
		{
			OpenXRSettings instance = OpenXRSettings.Instance;
			if ((Object)(object)instance == (Object)null || instance.features == null)
			{
				return;
			}
			featureLoggingInfo = new List<FeatureLoggingInfo>(instance.featureCount);
			OpenXRFeature[] features = instance.features;
			foreach (OpenXRFeature openXRFeature in features)
			{
				if ((Object)(object)openXRFeature == (Object)null || !openXRFeature.enabled)
				{
					continue;
				}
				featureLoggingInfo.Add(new FeatureLoggingInfo(openXRFeature.nameUi, openXRFeature.version, openXRFeature.company, openXRFeature.openxrExtensionStrings));
				if (string.IsNullOrEmpty(openXRFeature.openxrExtensionStrings))
				{
					continue;
				}
				string[] array = openXRFeature.openxrExtensionStrings.Split(' ');
				foreach (string text in array)
				{
					if (!string.IsNullOrWhiteSpace(text))
					{
						Internal_RequestEnableExtensionString(text);
					}
				}
			}
		}

		private void LogRequestedOpenXRFeatures()
		{
			OpenXRSettings instance = OpenXRSettings.Instance;
			if ((Object)(object)instance == (Object)null || instance.features == null)
			{
				return;
			}
			StringBuilder stringBuilder = new StringBuilder("");
			StringBuilder stringBuilder2 = new StringBuilder("");
			uint num = 0u;
			uint num2 = 0u;
			foreach (FeatureLoggingInfo item in featureLoggingInfo)
			{
				stringBuilder.Append("  " + item.m_nameUi + ": Version=" + item.m_version + ", Company=\"" + item.m_company + "\"");
				if (!string.IsNullOrEmpty(item.m_openxrExtensionStrings))
				{
					stringBuilder.Append(", Extensions=\"" + item.m_openxrExtensionStrings + "\"");
					string[] array = item.m_openxrExtensionStrings.Split(' ');
					foreach (string text in array)
					{
						if (!string.IsNullOrWhiteSpace(text) && !Internal_IsExtensionEnabled(text))
						{
							num2++;
							stringBuilder2.Append("  " + text + ": Feature=\"" + item.m_nameUi + "\": Version=" + item.m_version + ", Company=\"" + item.m_company + "\"\n");
						}
					}
				}
				stringBuilder.Append("\n");
			}
			ulong section = DiagnosticReport.GetSection("OpenXR Runtime Info");
			DiagnosticReport.AddSectionBreak(section);
			DiagnosticReport.AddSectionEntry(section, "Features requested to be enabled", $"({num})\n{stringBuilder.ToString()}");
			DiagnosticReport.AddSectionBreak(section);
			DiagnosticReport.AddSectionEntry(section, "Requested feature extensions not supported by runtime", $"({num2})\n{stringBuilder2.ToString()}");
		}

		private static void DebugLogEnabledSpecExtensions()
		{
			ulong section = DiagnosticReport.GetSection("OpenXR Runtime Info");
			DiagnosticReport.AddSectionBreak(section);
			string[] enabledExtensions = OpenXRRuntime.GetEnabledExtensions();
			StringBuilder stringBuilder = new StringBuilder($"({enabledExtensions.Length})\n");
			string[] array = enabledExtensions;
			foreach (string text in array)
			{
				stringBuilder.Append($"  {text}: Version={OpenXRRuntime.GetExtensionVersion(text)}\n");
			}
			DiagnosticReport.AddSectionEntry(section, "Runtime extensions enabled", stringBuilder.ToString());
		}

		[MonoPInvokeCallback(typeof(ReceiveNativeEventDelegate))]
		private static void ReceiveNativeEvent(OpenXRFeature.NativeEvent e, ulong payload)
		{
			OpenXRLoaderBase instance = Instance;
			if ((Object)(object)instance != (Object)null)
			{
				instance.currentOpenXRState = e;
			}
			switch (e)
			{
			case OpenXRFeature.NativeEvent.XrRestartRequested:
				OpenXRRestarter.Instance.ShutdownAndRestart();
				break;
			case OpenXRFeature.NativeEvent.XrReady:
				instance.StartInternal();
				break;
			case OpenXRFeature.NativeEvent.XrBeginSession:
				instance.LogRequestedOpenXRFeatures();
				break;
			case OpenXRFeature.NativeEvent.XrFocused:
				DiagnosticReport.DumpReport("System Startup Completed");
				break;
			case OpenXRFeature.NativeEvent.XrRequestRestartLoop:
				Debug.Log((object)"XR Initialization failed, will try to restart xr periodically.");
				OpenXRRestarter.Instance.PauseAndShutdownAndRestart();
				break;
			case OpenXRFeature.NativeEvent.XrRequestGetSystemLoop:
				OpenXRRestarter.Instance.PauseAndRetryInitialization();
				break;
			case OpenXRFeature.NativeEvent.XrStopping:
				instance.StopInternal();
				break;
			}
			OpenXRFeature.ReceiveNativeEvent(e, payload);
			if ((!((Object)(object)instance == (Object)null) && instance.isStarted) || e == OpenXRFeature.NativeEvent.XrInstanceChanged)
			{
				switch (e)
				{
				case OpenXRFeature.NativeEvent.XrExiting:
					OpenXRRestarter.Instance.Shutdown();
					break;
				case OpenXRFeature.NativeEvent.XrLossPending:
					OpenXRRestarter.Instance.ShutdownAndRestart();
					break;
				case OpenXRFeature.NativeEvent.XrInstanceLossPending:
					OpenXRRestarter.Instance.Shutdown();
					break;
				}
			}
		}

		internal static void RegisterOpenXRCallbacks()
		{
			Internal_SetCallbacks(ReceiveNativeEvent);
		}

		[DllImport("UnityOpenXR", EntryPoint = "main_LoadOpenXRLibrary")]
		[return: MarshalAs(UnmanagedType.U1)]
		internal static extern bool Internal_LoadOpenXRLibrary(byte[] loaderPath);

		[DllImport("UnityOpenXR", EntryPoint = "main_UnloadOpenXRLibrary")]
		internal static extern void Internal_UnloadOpenXRLibrary();

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_SetCallbacks")]
		private static extern void Internal_SetCallbacks(ReceiveNativeEventDelegate callback);

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "NativeConfig_SetApplicationInfo")]
		private static extern void Internal_SetApplicationInfo(string applicationName, string applicationVersion, uint applicationVersionHash, string engineVersion);

		[DllImport("UnityOpenXR", EntryPoint = "session_RequestExitSession")]
		internal static extern void Internal_RequestExitSession();

		[DllImport("UnityOpenXR", EntryPoint = "session_InitializeSession")]
		[return: MarshalAs(UnmanagedType.U1)]
		internal static extern bool Internal_InitializeSession();

		[DllImport("UnityOpenXR", EntryPoint = "session_CreateSessionIfNeeded")]
		[return: MarshalAs(UnmanagedType.U1)]
		internal static extern bool Internal_CreateSessionIfNeeded();

		[DllImport("UnityOpenXR", EntryPoint = "session_BeginSession")]
		internal static extern void Internal_BeginSession();

		[DllImport("UnityOpenXR", EntryPoint = "session_EndSession")]
		internal static extern void Internal_EndSession();

		[DllImport("UnityOpenXR", EntryPoint = "session_DestroySession")]
		internal static extern void Internal_DestroySession();

		[DllImport("UnityOpenXR", EntryPoint = "messagepump_PumpMessageLoop")]
		private static extern void Internal_PumpMessageLoop();

		[DllImport("UnityOpenXR", EntryPoint = "session_SetSuccessfullyInitialized")]
		internal static extern void Internal_SetSuccessfullyInitialized([MarshalAs(UnmanagedType.I1)] bool value);

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "unity_ext_RequestEnableExtensionString")]
		[return: MarshalAs(UnmanagedType.U1)]
		internal static extern bool Internal_RequestEnableExtensionString(string extensionString);

		[DllImport("UnityOpenXR", EntryPoint = "unity_ext_IsExtensionEnabled")]
		[return: MarshalAs(UnmanagedType.U1)]
		private static extern bool Internal_IsExtensionEnabled(string extensionName);
	}
	public class OpenXRLoaderNoPreInit : OpenXRLoaderBase
	{
	}
	internal class OpenXRRestarter : MonoBehaviour
	{
		internal Action onAfterRestart;

		internal Action onAfterShutdown;

		internal Action onQuit;

		internal Action onAfterCoroutine;

		internal Action onAfterSuccessfulRestart;

		private static OpenXRRestarter s_Instance;

		private Coroutine m_Coroutine;

		private static int m_pauseAndRestartCoroutineCount;

		private Object m_PauseAndRestartCoroutineCountLock = new Object();

		private static int m_pauseAndRestartAttempts;

		public bool isRunning => m_Coroutine != null;

		public static float TimeBetweenRestartAttempts { get; set; }

		public static int PauseAndRestartAttempts => m_pauseAndRestartAttempts;

		internal static int PauseAndRestartCoroutineCount => m_pauseAndRestartCoroutineCount;

		public static OpenXRRestarter Instance
		{
			get
			{
				//IL_0026: Unknown result type (might be due to invalid IL or missing references)
				//IL_002c: Expected O, but got Unknown
				if ((Object)(object)s_Instance == (Object)null)
				{
					GameObject val = GameObject.Find("~oxrestarter");
					if ((Object)(object)val == (Object)null)
					{
						val = new GameObject("~oxrestarter");
						((Object)val).hideFlags = (HideFlags)61;
						val.AddComponent<OpenXRRestarter>();
					}
					s_Instance = val.GetComponent<OpenXRRestarter>();
				}
				return s_Instance;
			}
		}

		internal static bool DisableApplicationQuit { get; set; }

		static OpenXRRestarter()
		{
			TimeBetweenRestartAttempts = 5f;
			DisableApplicationQuit = false;
		}

		public void ResetCallbacks()
		{
			onAfterRestart = null;
			onAfterSuccessfulRestart = null;
			onAfterShutdown = null;
			onAfterCoroutine = null;
			onQuit = null;
			m_pauseAndRestartAttempts = 0;
		}

		public void Shutdown()
		{
			if (!((Object)(object)OpenXRLoaderBase.Instance == (Object)null))
			{
				if (m_Coroutine != null)
				{
					Debug.LogError((object)"Only one shutdown or restart can be executed at a time");
				}
				else
				{
					m_Coroutine = ((MonoBehaviour)this).StartCoroutine(RestartCoroutine(shouldRestart: false, shouldShutdown: true));
				}
			}
		}

		public void ShutdownAndRestart()
		{
			if (!((Object)(object)OpenXRLoaderBase.Instance == (Object)null))
			{
				if (m_Coroutine != null)
				{
					Debug.LogError((object)"Only one shutdown or restart can be executed at a time");
				}
				else
				{
					m_Coroutine = ((MonoBehaviour)this).StartCoroutine(RestartCoroutine(shouldRestart: true, shouldShutdown: true));
				}
			}
		}

		public void PauseAndShutdownAndRestart()
		{
			if (!((Object)(object)OpenXRLoaderBase.Instance == (Object)null))
			{
				((MonoBehaviour)this).StartCoroutine(PauseAndShutdownAndRestartCoroutine(TimeBetweenRestartAttempts));
			}
		}

		public void PauseAndRetryInitialization()
		{
			if (!((Object)(object)OpenXRLoaderBase.Instance == (Object)null))
			{
				((MonoBehaviour)this).StartCoroutine(PauseAndRetryInitializationCoroutine(TimeBetweenRestartAttempts));
			}
		}

		private void IncrementPauseAndRestartCoroutineCount()
		{
			lock (m_PauseAndRestartCoroutineCountLock)
			{
				m_pauseAndRestartCoroutineCount++;
			}
		}

		private void DecrementPauseAndRestartCoroutineCount()
		{
			lock (m_PauseAndRestartCoroutineCountLock)
			{
				m_pauseAndRestartCoroutineCount--;
			}
		}

		private IEnumerator PauseAndShutdownAndRestartCoroutine(float pauseTimeInSeconds)
		{
			IncrementPauseAndRestartCoroutineCount();
			try
			{
				yield return (object)new WaitForSeconds(pauseTimeInSeconds);
				yield return new WaitForRestartFinish();
				m_pauseAndRestartAttempts++;
				m_Coroutine = ((MonoBehaviour)this).StartCoroutine(RestartCoroutine(shouldRestart: true, shouldShutdown: true));
			}
			finally
			{
				onAfterCoroutine?.Invoke();
			}
			DecrementPauseAndRestartCoroutineCount();
		}

		private IEnumerator PauseAndRetryInitializationCoroutine(float pauseTimeInSeconds)
		{
			IncrementPauseAndRestartCoroutineCount();
			try
			{
				yield return (object)new WaitForSeconds(pauseTimeInSeconds);
				yield return new WaitForRestartFinish();
				if (!((Object)(object)XRGeneralSettings.Instance.Manager.activeLoader != (Object)null))
				{
					m_pauseAndRestartAttempts++;
					m_Coroutine = ((MonoBehaviour)this).StartCoroutine(RestartCoroutine(shouldRestart: true, shouldShutdown: false));
				}
			}
			finally
			{
				onAfterCoroutine?.Invoke();
			}
			DecrementPauseAndRestartCoroutineCount();
		}

		private IEnumerator RestartCoroutine(bool shouldRestart, bool shouldShutdown)
		{
			try
			{
				if (shouldShutdown)
				{
					Debug.Log((object)"Shutting down OpenXR.");
					yield return null;
					XRGeneralSettings.Instance.Manager.DeinitializeLoader();
					yield return null;
					onAfterShutdown?.Invoke();
				}
				if (shouldRestart && OpenXRRuntime.ShouldRestart())
				{
					Debug.Log((object)"Initializing OpenXR.");
					yield return XRGeneralSettings.Instance.Manager.InitializeLoader();
					XRGeneralSettings.Instance.Manager.StartSubsystems();
					if ((Object)(object)XRGeneralSettings.Instance.Manager.activeLoader != (Object)null)
					{
						m_pauseAndRestartAttempts = 0;
						onAfterSuccessfulRestart?.Invoke();
					}
					onAfterRestart?.Invoke();
				}
				else if (OpenXRRuntime.ShouldQuit())
				{
					onQuit?.Invoke();
					if (!DisableApplicationQuit)
					{
						Application.Quit();
					}
				}
			}
			finally
			{
				OpenXRRestarter openXRRestarter = this;
				openXRRestarter.m_Coroutine = null;
				openXRRestarter.onAfterCoroutine?.Invoke();
			}
		}
	}
	public static class OpenXRRuntime
	{
		private const string LibraryName = "UnityOpenXR";

		public static string name
		{
			get
			{
				if (!Internal_GetRuntimeName(out var runtimeNamePtr))
				{
					return "";
				}
				return Marshal.PtrToStringAnsi(runtimeNamePtr);
			}
		}

		public static string version
		{
			get
			{
				if (!Internal_GetRuntimeVersion(out var major, out var minor, out var patch))
				{
					return "";
				}
				return $"{major}.{minor}.{patch}";
			}
		}

		public static string apiVersion
		{
			get
			{
				if (!Internal_GetAPIVersion(out var major, out var minor, out var patch))
				{
					return "";
				}
				return $"{major}.{minor}.{patch}";
			}
		}

		public static string pluginVersion
		{
			get
			{
				if (!Internal_GetPluginVersion(out var pluginVersionPtr))
				{
					return "";
				}
				return Marshal.PtrToStringAnsi(pluginVersionPtr);
			}
		}

		public static bool retryInitializationOnFormFactorErrors
		{
			get
			{
				return Internal_GetSoftRestartLoopAtInitialization();
			}
			set
			{
				Internal_SetSoftRestartLoopAtInitialization(value);
			}
		}

		public static event Func<bool> wantsToQuit;

		public static event Func<bool> wantsToRestart;

		internal static bool isRuntimeAPIVersionGreaterThan1_1()
		{
			if (Internal_GetAPIVersion(out var major, out var minor, out var _) && major >= 1 && minor >= 1)
			{
				return true;
			}
			return false;
		}

		public static bool IsExtensionEnabled(string extensionName)
		{
			return Internal_IsExtensionEnabled(extensionName);
		}

		public static uint GetExtensionVersion(string extensionName)
		{
			return Internal_GetExtensionVersion(extensionName);
		}

		public static string[] GetEnabledExtensions()
		{
			string[] array = new string[Internal_GetEnabledExtensionCount()];
			for (int i = 0; i < array.Length; i++)
			{
				Internal_GetEnabledExtensionName((uint)i, out var extensionName);
				array[i] = extensionName ?? "";
			}
			return array;
		}

		public static string[] GetAvailableExtensions()
		{
			string[] array = new string[Internal_GetAvailableExtensionCount()];
			for (int i = 0; i < array.Length; i++)
			{
				Internal_GetAvailableExtensionName((uint)i, out var extensionName);
				array[i] = extensionName ?? "";
			}
			return array;
		}

		private static bool InvokeEvent(Func<bool> func)
		{
			if (func == null)
			{
				return true;
			}
			Delegate[] invocationList = func.GetInvocationList();
			for (int i = 0; i < invocationList.Length; i++)
			{
				Func<bool> func2 = (Func<bool>)invocationList[i];
				try
				{
					if (!func2())
					{
						return false;
					}
				}
				catch (Exception ex)
				{
					Debug.LogException(ex);
				}
			}
			return true;
		}

		internal static bool ShouldQuit()
		{
			return InvokeEvent(OpenXRRuntime.wantsToQuit);
		}

		internal static bool ShouldRestart()
		{
			return InvokeEvent(OpenXRRuntime.wantsToRestart);
		}

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetRuntimeName")]
		[return: MarshalAs(UnmanagedType.U1)]
		private static extern bool Internal_GetRuntimeName(out IntPtr runtimeNamePtr);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetRuntimeVersion")]
		[return: MarshalAs(UnmanagedType.U1)]
		private static extern bool Internal_GetRuntimeVersion(out ushort major, out ushort minor, out uint patch);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetAPIVersion")]
		[return: MarshalAs(UnmanagedType.U1)]
		private static extern bool Internal_GetAPIVersion(out ushort major, out ushort minor, out uint patch);

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetPluginVersion")]
		[return: MarshalAs(UnmanagedType.U1)]
		private static extern bool Internal_GetPluginVersion(out IntPtr pluginVersionPtr);

		[DllImport("UnityOpenXR", EntryPoint = "unity_ext_IsExtensionEnabled")]
		[return: MarshalAs(UnmanagedType.U1)]
		private static extern bool Internal_IsExtensionEnabled(string extensionName);

		[DllImport("UnityOpenXR", EntryPoint = "unity_ext_GetExtensionVersion")]
		private static extern uint Internal_GetExtensionVersion(string extensionName);

		[DllImport("UnityOpenXR", EntryPoint = "unity_ext_GetEnabledExtensionCount")]
		private static extern uint Internal_GetEnabledExtensionCount();

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "unity_ext_GetEnabledExtensionName")]
		[return: MarshalAs(UnmanagedType.U1)]
		private static extern bool Internal_GetEnabledExtensionNamePtr(uint index, out IntPtr outName);

		[DllImport("UnityOpenXR", EntryPoint = "session_SetSoftRestartLoopAtInitialization")]
		private static extern void Internal_SetSoftRestartLoopAtInitialization([MarshalAs(UnmanagedType.I1)] bool value);

		[DllImport("UnityOpenXR", EntryPoint = "session_GetSoftRestartLoopAtInitialization")]
		[return: MarshalAs(UnmanagedType.U1)]
		private static extern bool Internal_GetSoftRestartLoopAtInitialization();

		private static bool Internal_GetEnabledExtensionName(uint index, out string extensionName)
		{
			if (!Internal_GetEnabledExtensionNamePtr(index, out var outName))
			{
				extensionName = "";
				return false;
			}
			extensionName = Marshal.PtrToStringAnsi(outName);
			return true;
		}

		[DllImport("UnityOpenXR", EntryPoint = "unity_ext_GetAvailableExtensionCount")]
		private static extern uint Internal_GetAvailableExtensionCount();

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "unity_ext_GetAvailableExtensionName")]
		[return: MarshalAs(UnmanagedType.U1)]
		private static extern bool Internal_GetAvailableExtensionNamePtr(uint index, out IntPtr extensionName);

		private static bool Internal_GetAvailableExtensionName(uint index, out string extensionName)
		{
			if (!Internal_GetAvailableExtensionNamePtr(index, out var extensionName2))
			{
				extensionName = "";
				return false;
			}
			extensionName = Marshal.PtrToStringAnsi(extensionName2);
			return true;
		}

		[DllImport("UnityOpenXR", CharSet = CharSet.Ansi, EntryPoint = "session_GetLastError")]
		[return: MarshalAs(UnmanagedType.U1)]
		private static extern bool Internal_GetLastError(out IntPtr error);

		internal static bool GetLastError(out string error)
		{
			if (!Internal_GetLastError(out var error2))
			{
				error = "";
				return false;
			}
			error = Marshal.PtrToStringAnsi(error2);
			return true;
		}

		internal static void LogLastError()
		{
			if (GetLastError(out var error))
			{
				Debug.LogError((object)error);
			}
		}
	}
	public static class OpenXRUtility
	{
		private const string LibraryName = "UnityOpenXR";

		public static bool IsSessionFocused => Internal_IsSessionFocused();

		public static bool IsUserPresent => Internal_GetUserPresence();

		private static Pose Inverse(Pose p)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			Pose val = default(Pose);
			val.rotation = Quaternion.Inverse(p.rotation);
			val.position = val.rotation * -p.position;
			return val;
		}

		public static Pose ComputePoseToWorldSpace(Transform t, Camera camera)
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_005c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_0066: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)camera == (Object)null)
			{
				return default(Pose);
			}
			Transform transform = ((Component)camera).transform;
			Pose val = default(Pose);
			((Pose)(ref val))..ctor(transform.localPosition, transform.localRotation);
			Pose p = default(Pose);
			((Pose)(ref p))..ctor(transform.position, transform.rotation);
			Pose val2 = default(Pose);
			((Pose)(ref val2))..ctor(t.position, t.rotation);
			Pose transformedBy = ((Pose)(ref val2)).GetTransformedBy(Inverse(p));
			return ((Pose)(ref transformedBy)).GetTransformedBy(val);
		}

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_IsSessionFocused")]
		[return: MarshalAs(UnmanagedType.U1)]
		private static extern bool Internal_IsSessionFocused();

		[DllImport("UnityOpenXR", EntryPoint = "NativeConfig_GetUserPresence")]
		[return: MarshalAs(UnmanagedType.U1)]
		private static extern bool Internal_GetUserPresence();
	}
	internal sealed class WaitForRestartFinish : CustomYieldInstruction
	{
		private float m_Timeout;

		public override bool keepWaiting
		{
			get
			{
				if (!OpenXRRestarter.Instance.isRunning)
				{
					return false;
				}
				if (Time.realtimeSinceStartup > m_Timeout)
				{
					Debug.LogError((object)"WaitForRestartFinish: Timeout");
					return false;
				}
				return true;
			}
		}

		public WaitForRestartFinish(float timeout = 5f)
		{
			m_Timeout = Time.realtimeSinceStartup + timeout;
		}
	}
}
namespace UnityEngine.XR.OpenXR.API
{
	public enum UnityXRRenderTextureFormat
	{
		kUnityXRRenderTextureFormatRGBA32 = 0,
		kUnityXRRenderTextureFormatBGRA32 = 1,
		kUnityXRRenderTextureFormatRGB565 = 2,
		kUnityXRRenderTextureFormatR16G16B16A16_SFloat = 3,
		kUnityXRRenderTextureFormatRGBA1010102 = 4,
		kUnityXRRenderTextureFormatBGRA1010102 = 5,
		kUnityXRRenderTextureFormatR11G11B10_UFloat = 6,
		kUnityXRRenderTextureFormatReference = 64,
		kUnityXRRenderTextureFormatSoftReferenceMSAA = 65,
		kUnityXRRenderTextureFormatNone = 66
	}
	public struct UnityXRTextureData
	{
		public IntPtr nativePtr;

		public uint referenceTextureId;
	}
	public enum UnityXRDepthTextureFormat
	{
		kUnityXRDepthTextureFormat24bitOrGreater,
		kUnityXRDepthTextureFormat16bit,
		kUnityXRDepthTextureFormatReference,
		kUnityXRDepthTextureFormatNone
	}
	public enum UnityXRShadingRateFormat
	{
		kUnityXRShadingRateFormatNone,
		kUnityXRShadingRateR8G8
	}
	public enum UnityXRRenderTextureFlags
	{
		kUnityXRRenderTextureFlagsUVDirectionTopToBottom = 1,
		kUnityXRRenderTextureFlagsMultisampleAutoResolve = 2,
		kUnityXRRenderTextureFlagsLockedWidthHeight = 4,
		kUnityXRRenderTextureFlagsWriteOnly = 8,
		kUnityXRRenderTextureFlagsSRGB = 0x10,
		kUnityXRRenderTextureFlagsOptimizeBufferDiscards = 0x20,
		kUnityXRRenderTextureFlagsMotionVectorTexture = 0x40,
		kUnityXRRenderTextureFlagsFoveationOffset = 0x80,
		kUnityXRRenderTextureFlagsViewportAsRenderArea = 0x100,
		kUnityXRRenderTextureFlagsHDR = 0x200
	}
	public struct UnityXRRenderTextureDesc
	{
		public UnityXRRenderTextureFormat colorFormat;

		public UnityXRTextureData color;

		public UnityXRDepthTextureFormat depthFormat;

		public UnityXRTextureData depth;

		public UnityXRShadingRateFormat shadingRateFormat;

		public UnityXRTextureData shadingRate;

		public uint width;

		public uint height;

		public uint textureArrayLength;

		public uint flags;
	

BepInEx/plugins/HowToFishXR/UnityEngine.SpatialTracking.dll

Decompiled 7 hours ago
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using UnityEngine.Events;
using UnityEngine.Experimental.XR.Interaction;
using UnityEngine.SpatialTracking;
using UnityEngine.XR;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: InternalsVisibleTo("UnityEditor.XR.SpatialTracking")]
[assembly: InternalsVisibleTo("UnityEditor.SpatialTracking")]
[assembly: AssemblyVersion("0.0.0.0")]
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		return new MonoScriptData
		{
			FilePathsData = new byte[229]
			{
				0, 0, 0, 1, 0, 0, 0, 106, 92, 76,
				105, 98, 114, 97, 114, 121, 92, 80, 97, 99,
				107, 97, 103, 101, 67, 97, 99, 104, 101, 92,
				99, 111, 109, 46, 117, 110, 105, 116, 121, 46,
				120, 114, 46, 108, 101, 103, 97, 99, 121, 105,
				110, 112, 117, 116, 104, 101, 108, 112, 101, 114,
				115, 64, 50, 46, 49, 46, 49, 50, 92, 82,
				117, 110, 116, 105, 109, 101, 92, 84, 114, 97,
				99, 107, 101, 100, 80, 111, 115, 101, 68, 114,
				105, 118, 101, 114, 92, 66, 97, 115, 101, 80,
				111, 115, 101, 80, 114, 111, 118, 105, 100, 101,
				114, 46, 99, 115, 0, 0, 0, 4, 0, 0,
				0, 107, 92, 76, 105, 98, 114, 97, 114, 121,
				92, 80, 97, 99, 107, 97, 103, 101, 67, 97,
				99, 104, 101, 92, 99, 111, 109, 46, 117, 110,
				105, 116, 121, 46, 120, 114, 46, 108, 101, 103,
				97, 99, 121, 105, 110, 112, 117, 116, 104, 101,
				108, 112, 101, 114, 115, 64, 50, 46, 49, 46,
				49, 50, 92, 82, 117, 110, 116, 105, 109, 101,
				92, 84, 114, 97, 99, 107, 101, 100, 80, 111,
				115, 101, 68, 114, 105, 118, 101, 114, 92, 84,
				114, 97, 99, 107, 101, 100, 80, 111, 115, 101,
				68, 114, 105, 118, 101, 114, 46, 99, 115
			},
			TypesData = new byte[297]
			{
				0, 0, 0, 0, 56, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 69, 120, 112,
				101, 114, 105, 109, 101, 110, 116, 97, 108, 46,
				88, 82, 46, 73, 110, 116, 101, 114, 97, 99,
				116, 105, 111, 110, 124, 66, 97, 115, 101, 80,
				111, 115, 101, 80, 114, 111, 118, 105, 100, 101,
				114, 0, 0, 0, 0, 60, 85, 110, 105, 116,
				121, 69, 110, 103, 105, 110, 101, 46, 83, 112,
				97, 116, 105, 97, 108, 84, 114, 97, 99, 107,
				105, 110, 103, 124, 84, 114, 97, 99, 107, 101,
				100, 80, 111, 115, 101, 68, 114, 105, 118, 101,
				114, 68, 97, 116, 97, 68, 101, 115, 99, 114,
				105, 112, 116, 105, 111, 110, 0, 0, 0, 0,
				69, 85, 110, 105, 116, 121, 69, 110, 103, 105,
				110, 101, 46, 83, 112, 97, 116, 105, 97, 108,
				84, 114, 97, 99, 107, 105, 110, 103, 46, 84,
				114, 97, 99, 107, 101, 100, 80, 111, 115, 101,
				68, 114, 105, 118, 101, 114, 68, 97, 116, 97,
				68, 101, 115, 99, 114, 105, 112, 116, 105, 111,
				110, 124, 80, 111, 115, 101, 68, 97, 116, 97,
				0, 0, 0, 0, 42, 85, 110, 105, 116, 121,
				69, 110, 103, 105, 110, 101, 46, 83, 112, 97,
				116, 105, 97, 108, 84, 114, 97, 99, 107, 105,
				110, 103, 124, 80, 111, 115, 101, 68, 97, 116,
				97, 83, 111, 117, 114, 99, 101, 0, 0, 0,
				0, 45, 85, 110, 105, 116, 121, 69, 110, 103,
				105, 110, 101, 46, 83, 112, 97, 116, 105, 97,
				108, 84, 114, 97, 99, 107, 105, 110, 103, 124,
				84, 114, 97, 99, 107, 101, 100, 80, 111, 115,
				101, 68, 114, 105, 118, 101, 114
			},
			TotalFiles = 2,
			TotalTypes = 5,
			IsEditorOnly = false
		};
	}
}
namespace UnityEngine.SpatialTracking
{
	internal class TrackedPoseDriverDataDescription
	{
		internal struct PoseData
		{
			public List<string> PoseNames;

			public List<TrackedPoseDriver.TrackedPose> Poses;
		}

		internal static List<PoseData> DeviceData = new List<PoseData>
		{
			new PoseData
			{
				PoseNames = new List<string> { "Left Eye", "Right Eye", "Center Eye - HMD Reference", "Head", "Color Camera" },
				Poses = new List<TrackedPoseDriver.TrackedPose>
				{
					TrackedPoseDriver.TrackedPose.LeftEye,
					TrackedPoseDriver.TrackedPose.RightEye,
					TrackedPoseDriver.TrackedPose.Center,
					TrackedPoseDriver.TrackedPose.Head,
					TrackedPoseDriver.TrackedPose.ColorCamera
				}
			},
			new PoseData
			{
				PoseNames = new List<string> { "Left Controller", "Right Controller" },
				Poses = new List<TrackedPoseDriver.TrackedPose>
				{
					TrackedPoseDriver.TrackedPose.LeftPose,
					TrackedPoseDriver.TrackedPose.RightPose
				}
			},
			new PoseData
			{
				PoseNames = new List<string> { "Device Pose" },
				Poses = new List<TrackedPoseDriver.TrackedPose> { TrackedPoseDriver.TrackedPose.RemotePose }
			}
		};
	}
	[Flags]
	public enum PoseDataFlags
	{
		NoData = 0,
		Position = 1,
		Rotation = 2
	}
	public static class PoseDataSource
	{
		internal static List<XRNodeState> nodeStates = new List<XRNodeState>();

		internal static PoseDataFlags GetNodePoseData(XRNode node, out Pose resultPose)
		{
			//IL_001b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0020: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Unknown result type (might be due to invalid IL or missing references)
			PoseDataFlags poseDataFlags = PoseDataFlags.NoData;
			InputTracking.GetNodeStates(nodeStates);
			foreach (XRNodeState nodeState in nodeStates)
			{
				XRNodeState current = nodeState;
				if (((XRNodeState)(ref current)).nodeType == node)
				{
					if (((XRNodeState)(ref current)).TryGetPosition(ref resultPose.position))
					{
						poseDataFlags |= PoseDataFlags.Position;
					}
					if (((XRNodeState)(ref current)).TryGetRotation(ref resultPose.rotation))
					{
						poseDataFlags |= PoseDataFlags.Rotation;
					}
					return poseDataFlags;
				}
			}
			resultPose = Pose.identity;
			return poseDataFlags;
		}

		public static bool TryGetDataFromSource(TrackedPoseDriver.TrackedPose poseSource, out Pose resultPose)
		{
			return GetDataFromSource(poseSource, out resultPose) == (PoseDataFlags.Position | PoseDataFlags.Rotation);
		}

		public static PoseDataFlags GetDataFromSource(TrackedPoseDriver.TrackedPose poseSource, out Pose resultPose)
		{
			//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
			switch (poseSource)
			{
			case TrackedPoseDriver.TrackedPose.RemotePose:
			{
				PoseDataFlags nodePoseData = GetNodePoseData((XRNode)5, out resultPose);
				if (nodePoseData == PoseDataFlags.NoData)
				{
					return GetNodePoseData((XRNode)4, out resultPose);
				}
				return nodePoseData;
			}
			case TrackedPoseDriver.TrackedPose.LeftEye:
				return GetNodePoseData((XRNode)0, out resultPose);
			case TrackedPoseDriver.TrackedPose.RightEye:
				return GetNodePoseData((XRNode)1, out resultPose);
			case TrackedPoseDriver.TrackedPose.Head:
				return GetNodePoseData((XRNode)3, out resultPose);
			case TrackedPoseDriver.TrackedPose.Center:
				return GetNodePoseData((XRNode)2, out resultPose);
			case TrackedPoseDriver.TrackedPose.LeftPose:
				return GetNodePoseData((XRNode)4, out resultPose);
			case TrackedPoseDriver.TrackedPose.RightPose:
				return GetNodePoseData((XRNode)5, out resultPose);
			case TrackedPoseDriver.TrackedPose.ColorCamera:
				return GetNodePoseData((XRNode)2, out resultPose);
			default:
				Debug.LogWarningFormat("Unable to retrieve pose data for poseSource: {0}", new object[1] { poseSource.ToString() });
				resultPose = Pose.identity;
				return PoseDataFlags.NoData;
			}
		}
	}
	[Serializable]
	[DefaultExecutionOrder(-30000)]
	[AddComponentMenu("XR/Tracked Pose Driver")]
	[HelpURL("https://docs.unity3d.com/Packages/[email protected]/manual/index.html")]
	public class TrackedPoseDriver : MonoBehaviour
	{
		public enum DeviceType
		{
			GenericXRDevice,
			GenericXRController,
			GenericXRRemote
		}

		public enum TrackedPose
		{
			LeftEye,
			RightEye,
			Center,
			Head,
			LeftPose,
			RightPose,
			ColorCamera,
			DepthCameraDeprecated,
			FisheyeCameraDeprected,
			DeviceDeprecated,
			RemotePose
		}

		public enum TrackingType
		{
			RotationAndPosition,
			RotationOnly,
			PositionOnly
		}

		public enum UpdateType
		{
			UpdateAndBeforeRender,
			Update,
			BeforeRender
		}

		[SerializeField]
		private DeviceType m_Device;

		[SerializeField]
		private TrackedPose m_PoseSource = TrackedPose.Center;

		[SerializeField]
		private BasePoseProvider m_PoseProviderComponent;

		[SerializeField]
		private TrackingType m_TrackingType;

		[SerializeField]
		private UpdateType m_UpdateType;

		[SerializeField]
		private bool m_UseRelativeTransform;

		protected Pose m_OriginPose;

		public DeviceType deviceType
		{
			get
			{
				return m_Device;
			}
			internal set
			{
				m_Device = value;
			}
		}

		public TrackedPose poseSource
		{
			get
			{
				return m_PoseSource;
			}
			internal set
			{
				m_PoseSource = value;
			}
		}

		public BasePoseProvider poseProviderComponent
		{
			get
			{
				return m_PoseProviderComponent;
			}
			set
			{
				m_PoseProviderComponent = value;
			}
		}

		public TrackingType trackingType
		{
			get
			{
				return m_TrackingType;
			}
			set
			{
				m_TrackingType = value;
			}
		}

		public UpdateType updateType
		{
			get
			{
				return m_UpdateType;
			}
			set
			{
				m_UpdateType = value;
			}
		}

		public bool UseRelativeTransform
		{
			get
			{
				return m_UseRelativeTransform;
			}
			set
			{
				m_UseRelativeTransform = value;
			}
		}

		public Pose originPose
		{
			get
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				return m_OriginPose;
			}
			set
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				m_OriginPose = value;
			}
		}

		public bool SetPoseSource(DeviceType deviceType, TrackedPose pose)
		{
			if ((int)deviceType < TrackedPoseDriverDataDescription.DeviceData.Count)
			{
				TrackedPoseDriverDataDescription.PoseData poseData = TrackedPoseDriverDataDescription.DeviceData[(int)deviceType];
				for (int i = 0; i < poseData.Poses.Count; i++)
				{
					if (poseData.Poses[i] == pose)
					{
						this.deviceType = deviceType;
						poseSource = pose;
						return true;
					}
				}
			}
			return false;
		}

		private PoseDataFlags GetPoseData(DeviceType device, TrackedPose poseSource, out Pose resultPose)
		{
			if (!((Object)(object)m_PoseProviderComponent != (Object)null))
			{
				return PoseDataSource.GetDataFromSource(poseSource, out resultPose);
			}
			return m_PoseProviderComponent.GetPoseFromProvider(out resultPose);
		}

		private void CacheLocalPosition()
		{
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0011: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			m_OriginPose.position = ((Component)this).transform.localPosition;
			m_OriginPose.rotation = ((Component)this).transform.localRotation;
		}

		private void ResetToCachedLocalPosition()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			SetLocalTransform(m_OriginPose.position, m_OriginPose.rotation, PoseDataFlags.Position | PoseDataFlags.Rotation);
		}

		protected virtual void Awake()
		{
			CacheLocalPosition();
		}

		protected virtual void OnDestroy()
		{
		}

		protected virtual void OnEnable()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			Application.onBeforeRender += new UnityAction(OnBeforeRender);
		}

		protected virtual void OnDisable()
		{
			//IL_000e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Expected O, but got Unknown
			ResetToCachedLocalPosition();
			Application.onBeforeRender -= new UnityAction(OnBeforeRender);
		}

		protected virtual void FixedUpdate()
		{
			if (m_UpdateType == UpdateType.Update || m_UpdateType == UpdateType.UpdateAndBeforeRender)
			{
				PerformUpdate();
			}
		}

		protected virtual void Update()
		{
			if (m_UpdateType == UpdateType.Update || m_UpdateType == UpdateType.UpdateAndBeforeRender)
			{
				PerformUpdate();
			}
		}

		[BeforeRenderOrder(-30000)]
		protected virtual void OnBeforeRender()
		{
			if (m_UpdateType == UpdateType.BeforeRender || m_UpdateType == UpdateType.UpdateAndBeforeRender)
			{
				PerformUpdate();
			}
		}

		protected virtual void SetLocalTransform(Vector3 newPosition, Quaternion newRotation, PoseDataFlags poseFlags)
		{
			//IL_001d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			if ((m_TrackingType == TrackingType.RotationAndPosition || m_TrackingType == TrackingType.RotationOnly) && (poseFlags & PoseDataFlags.Rotation) > PoseDataFlags.NoData)
			{
				((Component)this).transform.localRotation = newRotation;
			}
			if ((m_TrackingType == TrackingType.RotationAndPosition || m_TrackingType == TrackingType.PositionOnly) && (poseFlags & PoseDataFlags.Position) > PoseDataFlags.NoData)
			{
				((Component)this).transform.localPosition = newPosition;
			}
		}

		protected Pose TransformPoseByOriginIfNeeded(Pose pose)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0010: Unknown result type (might be due to invalid IL or missing references)
			if (m_UseRelativeTransform)
			{
				return ((Pose)(ref pose)).GetTransformedBy(m_OriginPose);
			}
			return pose;
		}

		private bool HasStereoCamera()
		{
			Camera component = ((Component)this).GetComponent<Camera>();
			if ((Object)(object)component != (Object)null)
			{
				return component.stereoEnabled;
			}
			return false;
		}

		protected virtual void PerformUpdate()
		{
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Unknown result type (might be due to invalid IL or missing references)
			//IL_002a: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Unknown result type (might be due to invalid IL or missing references)
			if (((Behaviour)this).enabled)
			{
				Pose resultPose;
				PoseDataFlags poseData = GetPoseData(m_Device, m_PoseSource, out resultPose);
				if (poseData != PoseDataFlags.NoData)
				{
					Pose val = TransformPoseByOriginIfNeeded(resultPose);
					SetLocalTransform(val.position, val.rotation, poseData);
				}
			}
		}
	}
}
namespace UnityEngine.Experimental.XR.Interaction
{
	[Serializable]
	public abstract class BasePoseProvider : MonoBehaviour
	{
		public virtual PoseDataFlags GetPoseFromProvider(out Pose output)
		{
			if (TryGetPoseFromProvider(out output))
			{
				return PoseDataFlags.Position | PoseDataFlags.Rotation;
			}
			return PoseDataFlags.NoData;
		}

		[Obsolete("This function is provided for backwards compatibility with the BasePoseProvider found in com.unity.xr.legacyinputhelpers v1.3.X. Please do not implement this function, instead use the new API via GetPoseFromProvider", false)]
		public virtual bool TryGetPoseFromProvider(out Pose output)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			output = Pose.identity;
			return false;
		}
	}
}