Decompiled source of StatsPlus v2.0.3

StatsMod.dll

Decompiled 2 weeks ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using BepInEx;
using BepInEx.Logging;
using IL.RoR2;
using LeTai.Asset.TranslucentImage;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using Newtonsoft.Json;
using On.RoR2;
using On.RoR2.UI;
using R2API;
using R2API.Networking;
using R2API.Networking.Interfaces;
using RoR2;
using RoR2.Stats;
using RoR2.UI;
using StatsMod.CustomStats;
using TMPro;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using UnityEngine.Networking;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("StatsMod")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+1d04e0c8db0d947f9a47810d641e50aff942f90d")]
[assembly: AssemblyProduct("StatsMod")]
[assembly: AssemblyTitle("StatsMod")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.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 StatsMod
{
	public static class Assets
	{
		public static AssetBundle mainAssetBundle = null;

		internal static string assetBundleName = "statsmodassets";

		internal static string assemblyDir => Path.GetDirectoryName(StatsMod.pluginInfo.Location);

		public static void PopulateAssets()
		{
			mainAssetBundle = AssetBundle.LoadFromFile(Path.Combine(assemblyDir, assetBundleName));
		}
	}
	public class GraphHandler : MonoBehaviour
	{
		public enum MouseActionType
		{
			Move,
			SelectAreaToZoom,
			SelectPoints
		}

		public enum RectangleType
		{
			Free,
			PreserveAspectRatio,
			OriginalAspectRatio
		}

		public enum RectangleSelectionType
		{
			SelectAll,
			SelectUnselect
		}

		public enum RectangleSelectionPhase
		{
			Moving,
			Release
		}

		public enum PointSelectionType
		{
			Select,
			FixZoomPoint
		}

		[Flags]
		public enum UpdateMethod
		{
			UpdatePositionAndScale = 1,
			UpdateOutlines = 2,
			UpdatePointVisuals = 4,
			UpdateContent = 8,
			MouseZoom = 0x10,
			MouseAction = 0x20,
			UpdateGridLines = 0x40,
			All = 0x80
		}

		public bool updateGraph = true;

		private GraphSettings GS;

		[SerializeField]
		private Canvas canvas;

		private RectTransform graph;

		private RectTransform graphContent;

		private Vector2 contentScale = Vector2.zero;

		private List<Vector2> values;

		private List<float> trueYvalues;

		private List<int> sortedIndices;

		private Vector2Int xAxisRange = new Vector2Int(-1, -1);

		private Vector2Int prevXAxisRange = new Vector2Int(-1, -1);

		public int activePointIndex = -1;

		private Vector2 activePointValue = Vector2.zero;

		private bool pointIsActive = false;

		private List<GameObject> points;

		private List<Image> pointImages;

		private List<RectTransform> pointRects;

		private List<GameObject> pointOutlines;

		private List<RectTransform> pointOutlineRects;

		private List<Image> pointOutlineImages;

		private List<GameObject> lines;

		private List<RectTransform> lineRects;

		private List<Image> lineImages;

		private List<RectTransform> xGridRects;

		private List<Image> xGridImages;

		private List<TextMeshProUGUI> xAxisTexts;

		private List<RectTransform> xAxisTextRects;

		private List<RectTransform> yGridRects;

		private List<Image> yGridImages;

		private List<TextMeshProUGUI> yAxisTexts;

		private List<RectTransform> yAxisTextRects;

		private RectTransform zoomSelectionRectTransform;

		private Image zoomSelectionImage;

		private List<RectTransform> zoomSelectionOutlines;

		private List<Image> zoomSelectionOutlineImages;

		private RectTransform pointSelectionRectTransform;

		private Image pointSelectionImage;

		private List<RectTransform> pointSelectionOutlines;

		private List<Image> pointSelectionOutlineImages;

		private RectTransform maskObj;

		private Image backgroundImage;

		private RectTransform backgroundRect;

		private GameObject pointParent;

		private GameObject lineParent;

		private GameObject gridParent;

		private GameObject outlineParent;

		private List<RectTransform> outlines;

		private List<Image> outlineImages;

		private List<int> lockedHoveredPoints;

		private List<int> lockedPoints;

		private List<int> fixedHoveredPoints;

		public int fixedPointIndex = -1;

		private Vector2 contentOffset = Vector2.zero;

		private Vector2 bottomLeft;

		private Vector2 topRight;

		private Vector2 center;

		public MouseActionType mouseActionType;

		public RectangleType rectangleType;

		public RectangleSelectionType rectangleSelectionType;

		public RectangleSelectionPhase rectangleSelectionPhase;

		public PointSelectionType pointSelectionType;

		private List<int> initialLockedPoints;

		private List<int> recentlyLockedPoints;

		private bool mouseInsideBounds = false;

		private Vector2 mousePos;

		private Vector2 previousMousePos;

		private Vector2 initialMousePos = Vector2.zero;

		private bool initialMouseInsideBounds = false;

		private Vector2 _zoomPoint = Vector2.zero;

		private Vector2 _absoluteZoomPoint = Vector2.zero;

		private Vector2 _targetZoom = new Vector2(1f, 1f);

		private Vector2 zoom = new Vector2(1f, 1f);

		private Vector2 moveOffset;

		public Vector2 _targetMoveOffset;

		private Vector2 initialMoveOffset = Vector2.zero;

		private float timeToUpdateMouse = 0f;

		private float timeToUpdateTouch = 0f;

		private float timeToUpdateScroll = 0f;

		private bool error;

		private bool currentPlotIsLog = false;

		public readonly int logBase = 2;

		private bool rightBorderReached;

		private bool topBorderReached;

		private bool bottomBorderReached;

		private bool leftBorderReached;

		public List<Vector2> Values => values;

		public Vector2Int XAxisRange => xAxisRange;

		public Vector2 ActivePointValue => activePointValue;

		public Vector2 BottomLeft => bottomLeft;

		public Vector2 TopRight => topRight;

		public Vector2 Center => center;

		private Vector2 zoomPoint
		{
			get
			{
				//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)
				return _zoomPoint;
			}
			set
			{
				//IL_0003: 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_0010: 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_0021: Unknown result type (might be due to invalid IL or missing references)
				if (IsWithinBounds(zoom, absoluteZoomPoint, value, moveOffset))
				{
					_zoomPoint = value;
				}
			}
		}

		private Vector2 absoluteZoomPoint
		{
			get
			{
				//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)
				return _absoluteZoomPoint;
			}
			set
			{
				//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_000a: 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)
				//IL_0020: 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)
				if (IsWithinBounds(zoom, value, zoomPoint, moveOffset))
				{
					_absoluteZoomPoint = value;
				}
			}
		}

		public Vector2 targetZoom
		{
			get
			{
				//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)
				return _targetZoom;
			}
			set
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0004: 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: 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_0021: Unknown result type (might be due to invalid IL or missing references)
				if (IsWithinBounds(value, absoluteZoomPoint, zoomPoint, moveOffset))
				{
					_targetZoom = value;
				}
			}
		}

		public Vector2 targetMoveOffset
		{
			get
			{
				//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)
				return _targetMoveOffset;
			}
			set
			{
				//IL_0003: 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_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_0020: 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)
				if (IsWithinBounds(zoom, absoluteZoomPoint, zoomPoint, value))
				{
					_targetMoveOffset = value;
				}
			}
		}

		public void CreatePoint(Vector2 newValue, bool shouldCreateLine = true)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			CreatePointInternal(newValue, shouldCreateLine);
		}

		public void ChangePoint(int indexToChange, Vector2 newValue)
		{
			//IL_0003: Unknown result type (might be due to invalid IL or missing references)
			ChangePointInternal(indexToChange, newValue);
		}

		public void SetCornerValues(Vector2 newBottomLeft, Vector2 newTopRight)
		{
			//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)
			SetCornerValuesInternal(newBottomLeft, newTopRight);
		}

		public void UpdateGraph()
		{
			UpdateGraphInternal(UpdateMethod.All);
		}

		public void PlotStat(string statName, int index, bool isLog = false)
		{
			//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_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_033a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0358: Unknown result type (might be due to invalid IL or missing references)
			//IL_0364: Unknown result type (might be due to invalid IL or missing references)
			//IL_0382: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b2: 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_0123: 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_0292: Unknown result type (might be due to invalid IL or missing references)
			//IL_026f: Unknown result type (might be due to invalid IL or missing references)
			ResetGraph();
			UpdateGraph();
			UpdateContent();
			float num = -5f;
			float num2 = 5f;
			currentPlotIsLog = isLog;
			StatsScreen.ChangePlotTitle(statName);
			List<object> statSeries = RecordHandler.independentDatabase[0].GetStatSeries("timestamps");
			if (index >= 0)
			{
				Color lineColor = GraphSettings.Rainbow((float)index / (float)RecordHandler.independentDatabase.Count);
				GS.LineColor = lineColor;
				List<object> statSeries2 = RecordHandler.independentDatabase[index].GetStatSeries(statName);
				for (int i = 0; i < statSeries.Count; i++)
				{
					float num3 = Convert.ToSingle(statSeries[i]);
					float num4 = Convert.ToSingle(PlayerStatsDatabase.Numberise(statSeries2[i]));
					trueYvalues.Add(num4);
					if (num4.ToString() == "Infinity")
					{
						num4 = -1f;
					}
					if (currentPlotIsLog && num4 != 0f)
					{
						num4 = (float)Math.Log(Math.Abs(num4), logBase);
					}
					CreatePoint(new Vector2(num3, num4));
					if (num4 < num)
					{
						num = num4;
					}
					else if (num4 > num2)
					{
						num2 = num4;
					}
				}
			}
			else if (index == -1)
			{
				int num5 = 0;
				foreach (IndependentEntry item in RecordHandler.independentDatabase)
				{
					Color lineColor2 = GraphSettings.Rainbow((float)num5 / (float)RecordHandler.independentDatabase.Count);
					GS.LineColor = lineColor2;
					List<object> statSeries3 = item.GetStatSeries(statName);
					for (int j = 0; j < statSeries.Count; j++)
					{
						float num6 = Convert.ToSingle(statSeries[j]);
						float num7 = Convert.ToSingle(PlayerStatsDatabase.Numberise(statSeries3[j]));
						trueYvalues.Add(num7);
						if (num7.ToString() == "Infinity")
						{
							num7 = -1f;
						}
						if (currentPlotIsLog && num7 != 0f)
						{
							num7 = (float)Math.Log(Math.Abs(num7), logBase);
						}
						if (j == 0)
						{
							GS.LineColor = Color.clear;
						}
						CreatePoint(new Vector2(num6, num7));
						GS.LineColor = lineColor2;
						if (num7 < num)
						{
							num = num7;
						}
						else if (num7 > num2)
						{
							num2 = num7;
						}
					}
					num5++;
				}
			}
			float num8 = Convert.ToSingle(statSeries[statSeries.Count - 1]) * 0.05f;
			float num9 = math.max(math.abs(num), math.abs(num2)) * 0.05f;
			SetCornerValues(new Vector2(0f - num8, num - num9), new Vector2(Convert.ToSingle(statSeries[statSeries.Count - 1]) + num8, num2 + num9));
			absoluteZoomPoint = Vector2.zero;
			UpdateGraph();
			SetCornerValues(new Vector2(0f - num8, num - num9), new Vector2(Convert.ToSingle(statSeries[statSeries.Count - 1]) + num8, num2 + num9));
			UpdateGraph();
		}

		private void ResetGraph()
		{
			Object.Destroy((Object)(object)((Component)maskObj).gameObject);
			Object.Destroy((Object)(object)outlineParent.gameObject);
			AwakeWOHook();
			Start();
		}

		private void Awake()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			ResolutionConVar.SetString += new hook_SetString(ResizeGraph);
			AwakeWOHook();
		}

		private void AwakeWOHook()
		{
			values = new List<Vector2>();
			trueYvalues = new List<float>();
			sortedIndices = new List<int>();
			points = new List<GameObject>();
			pointRects = new List<RectTransform>();
			pointImages = new List<Image>();
			pointOutlines = new List<GameObject>();
			pointOutlineRects = new List<RectTransform>();
			pointOutlineImages = new List<Image>();
			lines = new List<GameObject>();
			lineRects = new List<RectTransform>();
			lineImages = new List<Image>();
			xGridRects = new List<RectTransform>();
			xGridImages = new List<Image>();
			yGridRects = new List<RectTransform>();
			yGridImages = new List<Image>();
			xAxisTexts = new List<TextMeshProUGUI>();
			yAxisTexts = new List<TextMeshProUGUI>();
			xAxisTextRects = new List<RectTransform>();
			yAxisTextRects = new List<RectTransform>();
			zoomSelectionOutlines = new List<RectTransform>();
			zoomSelectionOutlineImages = new List<Image>();
			pointSelectionOutlines = new List<RectTransform>();
			pointSelectionOutlineImages = new List<Image>();
			outlines = new List<RectTransform>();
			outlineImages = new List<Image>();
			lockedHoveredPoints = new List<int>();
			lockedPoints = new List<int>();
			initialLockedPoints = new List<int>();
			recentlyLockedPoints = new List<int>();
			fixedHoveredPoints = new List<int>();
		}

		private void ResizeGraph(orig_SetString orig, ResolutionConVar self, string newValue)
		{
			//IL_004d: 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_0073: Unknown result type (might be due to invalid IL or missing references)
			orig.Invoke(self, newValue);
			if ((Object)(object)graph != (Object)null)
			{
				string[] array = newValue.Split('x');
				int num = int.Parse(array[0]);
				int num2 = int.Parse(array[1]);
				GS.GraphSize = new Vector2(0.5208f * (float)num, 0.7037f * (float)num2);
				((Transform)graph).localPosition = Vector2.op_Implicit(new Vector2(0.1302f * (float)num, 0.0212f * (float)num2));
				UpdateOutlines();
			}
		}

		private bool IsWithinBounds(Vector2 zoom, Vector2 absoluteZoomPoint, Vector2 zoomPoint, Vector2 moveOffset)
		{
			//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)
			//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_0015: 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_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_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)
			//IL_0028: 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)
			//IL_002f: 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_0035: 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_0041: 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)
			//IL_004e: 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_006f: 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_0090: 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_00b1: 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)
			Vector2 val = GS.GraphScale * zoom;
			Vector2 val2 = absoluteZoomPoint - zoomPoint * val - moveOffset;
			Vector2 val3 = -val2 / val;
			Vector2 val4 = val3 + GS.GraphSize / val;
			rightBorderReached = val4.x > float.MaxValue || float.IsNaN(val4.x);
			topBorderReached = val4.y > float.MaxValue || float.IsNaN(val4.y);
			bottomBorderReached = val3.x < float.MinValue || float.IsNaN(val3.x);
			leftBorderReached = val3.y < float.MinValue || float.IsNaN(val3.y);
			if (rightBorderReached || topBorderReached || bottomBorderReached || leftBorderReached)
			{
				return false;
			}
			return true;
		}

		private bool IsSizeableDif()
		{
			//IL_0007: 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)
			//IL_0019: 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_0024: 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_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0035: 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_003b: 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_0041: 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_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: 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_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: 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_0066: 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_006c: 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_0082: 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_0088: Unknown result type (might be due to invalid IL or missing references)
			Vector2 val = GS.GraphScale * targetZoom;
			Vector2 val2 = absoluteZoomPoint - zoomPoint * val - targetMoveOffset;
			Vector2 val3 = -val2 / val;
			Vector2 val4 = val3 + GS.GraphSize / val;
			Vector2 val5 = TopRight - val4;
			if (!(((Vector2)(ref val5)).magnitude > 1E+11f))
			{
				val5 = BottomLeft - val3;
				if (!(((Vector2)(ref val5)).magnitude > 1E+11f))
				{
					return false;
				}
			}
			return true;
		}

		private void OnDestroy()
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			ResolutionConVar.SetString -= new hook_SetString(ResizeGraph);
		}

		private void Start()
		{
			if (!CheckForErrors())
			{
				GS = ((Component)this).GetComponent<GraphSettings>();
				PrepareGraph();
			}
		}

		private void Update()
		{
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: 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_00c8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00de: 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_00f7: 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_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)
			if (Input.GetKey((KeyCode)304))
			{
				mouseActionType = MouseActionType.SelectAreaToZoom;
			}
			else if (Input.GetKey((KeyCode)306))
			{
				mouseActionType = MouseActionType.SelectPoints;
			}
			else
			{
				mouseActionType = MouseActionType.Move;
			}
			if (!error)
			{
				CheckIfUpdateGraph();
				if (updateGraph)
				{
					UpdateGraphInternal(UpdateMethod.All);
				}
				if (lockedHoveredPoints.Count > 0)
				{
					UpdatePoints();
				}
				if (fixedHoveredPoints.Count > 0)
				{
					UpdatePointOutlines();
				}
				zoom = Vector2.Lerp(zoom, targetZoom, GS.SmoothZoomSpeed * Time.deltaTime);
				moveOffset = Vector2.Lerp(moveOffset, targetMoveOffset, GS.SmoothMoveSpeed * Time.deltaTime);
				if (IsSizeableDif())
				{
					zoom = targetZoom;
					moveOffset = targetMoveOffset;
				}
			}
		}

		private void PrepareGraph()
		{
			//IL_0018: 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_00b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: 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_00f2: 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_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: 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_0169: Unknown result type (might be due to invalid IL or missing references)
			//IL_0190: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01e3: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)canvas == (Object)null)
			{
				canvas = new GameObject("GraphCanvas").AddComponent<Canvas>();
				((Component)canvas).gameObject.SetActive(false);
				canvas.renderMode = (RenderMode)0;
				((Component)canvas).gameObject.AddComponent<GraphicRaycaster>();
			}
			if ((Object)(object)((Component)this).GetComponent<RectTransform>() == (Object)null)
			{
				((Component)this).gameObject.AddComponent<RectTransform>();
			}
			graph = ((Component)this).gameObject.GetComponent<RectTransform>();
			((Transform)graph).SetParent(((Component)canvas).transform);
			graph.anchoredPosition = Vector2.zero;
			graph.sizeDelta = GS.GraphSize;
			RectTransform obj = graph;
			Vector3 localPosition = (((Transform)graph).localPosition = Vector2.op_Implicit(new Vector2(0.1302f * (float)Screen.width, 0.0212f * (float)Screen.height)));
			((Transform)obj).localPosition = localPosition;
			maskObj = new GameObject("MaskObj").AddComponent<RectTransform>();
			((Transform)maskObj).SetParent((Transform)(object)graph);
			maskObj.anchoredPosition = Vector2.zero;
			((Component)maskObj).gameObject.AddComponent<Image>();
			Mask val2 = ((Component)maskObj).gameObject.AddComponent<Mask>();
			val2.showMaskGraphic = false;
			backgroundRect = new GameObject("Background").AddComponent<RectTransform>();
			((Transform)backgroundRect).SetParent((Transform)(object)maskObj);
			backgroundRect.anchoredPosition = Vector2.zero;
			backgroundImage = ((Component)backgroundRect).gameObject.AddComponent<Image>();
			graphContent = new GameObject("GraphContent").AddComponent<RectTransform>();
			((Transform)graphContent).SetParent(((Component)backgroundRect).transform);
			graphContent.sizeDelta = Vector2.zero;
			gridParent = CreateParent("GridParent");
			lineParent = CreateParent("LineParent");
			pointParent = CreateParent("PointParent");
			outlineParent = CreateParent("OutlineParent");
			CreateOutlines();
			outlineParent.transform.SetParent((Transform)(object)graph);
			fixedPointIndex = -1;
			CreateselectionTypes();
			UpdateGraphInternal(UpdateMethod.All);
		}

		private GameObject CreateParent(string name)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = new GameObject(name);
			val.transform.SetParent((Transform)(object)((name == "OutlineParent") ? graph : graphContent));
			Image val2 = val.AddComponent<Image>();
			((Graphic)val2).color = new Color(0f, 0f, 0f, 0f);
			((Graphic)val2).raycastTarget = false;
			val.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
			return val;
		}

		private void CreateOutlines()
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			for (int i = 0; i < 4; i++)
			{
				Image val = new GameObject("Outline").AddComponent<Image>();
				RectTransform component = ((Component)val).GetComponent<RectTransform>();
				((Transform)component).SetParent(outlineParent.transform);
				((Graphic)val).color = GS.OutlineColor;
				((Graphic)val).raycastTarget = false;
				outlines.Add(component);
				outlineImages.Add(val);
			}
		}

		private void CreatePointInternal(Vector2 value, bool shouldCreateLine = true)
		{
			//IL_0041: Unknown result type (might be due to invalid IL or missing references)
			//IL_0047: Expected O, but got Unknown
			//IL_005a: 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_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: 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_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_0164: Expected O, but got Unknown
			//IL_0278: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c2: Expected O, but got Unknown
			//IL_01fa: 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_028b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0239: Unknown result type (might be due to invalid IL or missing references)
			int i = points.Count;
			GameObject val = CreatePointOutline(i);
			GameObject val2 = new GameObject("Point" + i);
			points.Add(val2);
			values.Add(value);
			val2.transform.SetParent(val.transform);
			Image val3 = val2.AddComponent<Image>();
			((Graphic)val3).color = GS.PointColor;
			pointImages.Add(val3);
			RectTransform component = val2.GetComponent<RectTransform>();
			component.sizeDelta = Vector2.one * GS.PointRadius;
			pointRects.Add(component);
			val3.sprite = GS.PointSprite;
			EventTrigger val4 = val2.AddComponent<EventTrigger>();
			var array = new[]
			{
				new
				{
					Type = (EventTriggerType)0,
					Callback = (Action)delegate
					{
						MouseTrigger(i, enter: true);
					}
				},
				new
				{
					Type = (EventTriggerType)1,
					Callback = (Action)delegate
					{
						MouseTrigger(i, enter: false);
					}
				},
				new
				{
					Type = (EventTriggerType)4,
					Callback = (Action)delegate
					{
						PointClicked(i);
					}
				}
			};
			var array2 = array;
			foreach (var eventType in array2)
			{
				Entry val5 = new Entry
				{
					eventID = eventType.Type
				};
				((UnityEvent<BaseEventData>)(object)val5.callback).AddListener((UnityAction<BaseEventData>)delegate
				{
					eventType.Callback();
				});
				val4.triggers.Add(val5);
			}
			if (points.Count > 1 && shouldCreateLine)
			{
				GameObject val6 = new GameObject("Line");
				val6.transform.SetParent(lineParent.transform);
				lineImages.Add(val6.AddComponent<Image>());
				((Graphic)val6.GetComponent<Image>()).color = GS.LineColor;
				lineRects.Add(val6.GetComponent<RectTransform>());
				lines.Add(val6);
				if (value.x < bottomLeft.x || value.x > topRight.x)
				{
					val6.SetActive(false);
				}
			}
			lockedHoveredPoints.Add(i);
			SortIndices();
			if (value.x < bottomLeft.x || value.x > topRight.x)
			{
				val.SetActive(false);
			}
		}

		private void ChangePointInternal(int index, Vector2 newValue)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			values[index] = newValue;
			SortIndices();
		}

		private void SortIndices()
		{
			sortedIndices = (from item in values.Select((Vector2 vector, int index) => new { vector, index })
				orderby item.vector.x, item.vector.y
				select item.index).ToList();
		}

		private GameObject CreatePointOutline(int i)
		{
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0018: Expected O, but got Unknown
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0094: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = new GameObject("PointOutline" + i);
			pointOutlines.Add(val);
			if ((Object)(object)pointParent != (Object)null)
			{
				val.transform.SetParent(pointParent.transform);
			}
			Image val2 = val.AddComponent<Image>();
			((Graphic)val2).color = GS.PointColor;
			pointOutlineImages.Add(val2);
			RectTransform component = val.GetComponent<RectTransform>();
			component.sizeDelta = new Vector2(GS.PointRadius, GS.PointRadius);
			pointOutlineRects.Add(component);
			Sprite pointSprite = GS.PointSprite;
			val2.sprite = pointSprite;
			return val;
		}

		private void CreateGridLines(bool createX)
		{
			//IL_0188: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: 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_020f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0276: Unknown result type (might be due to invalid IL or missing references)
			//IL_028c: 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_00a7: 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_0123: 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)
			if (createX)
			{
				GameObject val = new GameObject("xGrid" + xGridRects.Count);
				val.transform.SetParent(gridParent.transform);
				Image val2 = val.AddComponent<Image>();
				((Graphic)val2).raycastTarget = false;
				xGridRects.Add(val.GetComponent<RectTransform>());
				xGridImages.Add(val2);
				if (xGridRects.Count > 1)
				{
					TextMeshProUGUI val3 = new GameObject("xText" + xGridRects.Count).AddComponent<TextMeshProUGUI>();
					RectTransform component = ((Component)val3).gameObject.GetComponent<RectTransform>();
					((Transform)component).SetParent((Transform)(object)val.GetComponent<RectTransform>());
					((TMP_Text)val3).font = GS.GridTextFont;
					((TMP_Text)val3).fontStyle = (FontStyles)1;
					((TMP_Text)val3).alignment = (TextAlignmentOptions)514;
					((TMP_Text)val3).verticalAlignment = (VerticalAlignmentOptions)512;
					((Graphic)val3).color = GS.XAxisTextColor;
					((TMP_Text)val3).enableAutoSizing = true;
					component.sizeDelta = Vector2.one * GS.XAxisTextSize;
					((Graphic)val3).raycastTarget = false;
					xAxisTexts.Add(val3);
					xAxisTextRects.Add(component);
				}
			}
			else
			{
				GameObject val4 = new GameObject("yGrid" + yGridRects.Count);
				val4.transform.SetParent(gridParent.transform);
				Image val5 = val4.AddComponent<Image>();
				((Graphic)val5).raycastTarget = false;
				yGridRects.Add(val4.GetComponent<RectTransform>());
				yGridImages.Add(val5);
				if (yGridRects.Count > 1)
				{
					TextMeshProUGUI val6 = new GameObject("yText" + yGridRects.Count).AddComponent<TextMeshProUGUI>();
					RectTransform component2 = ((Component)val6).gameObject.GetComponent<RectTransform>();
					((Transform)component2).SetParent((Transform)(object)val4.GetComponent<RectTransform>());
					((TMP_Text)val6).font = GS.GridTextFont;
					((TMP_Text)val6).fontStyle = (FontStyles)1;
					((TMP_Text)val6).alignment = (TextAlignmentOptions)514;
					((TMP_Text)val6).verticalAlignment = (VerticalAlignmentOptions)512;
					((Graphic)val6).color = GS.YAxisTextColor;
					((TMP_Text)val6).enableAutoSizing = true;
					component2.sizeDelta = Vector2.one * GS.YAxisTextSize;
					((Graphic)val6).raycastTarget = false;
					yAxisTexts.Add(val6);
					yAxisTextRects.Add(component2);
				}
			}
		}

		private void CreateselectionTypes()
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Expected O, but got Unknown
			//IL_002e: 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_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00db: 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)
			GameObject val = new GameObject("SelectionParent");
			val.transform.SetParent((Transform)(object)graphContent);
			val.AddComponent<RectTransform>().anchoredPosition = new Vector2(0f, 0f);
			zoomSelectionImage = new GameObject("ZoomSelection").AddComponent<Image>();
			zoomSelectionRectTransform = ((Component)zoomSelectionImage).GetComponent<RectTransform>();
			((Transform)zoomSelectionRectTransform).SetParent(val.transform);
			for (int i = 0; i < 4; i++)
			{
				Image val2 = new GameObject("Outline").AddComponent<Image>();
				RectTransform component = ((Component)val2).GetComponent<RectTransform>();
				((Transform)component).SetParent((Transform)(object)zoomSelectionRectTransform);
				zoomSelectionOutlineImages.Add(val2);
				zoomSelectionOutlines.Add(component);
			}
			((Component)zoomSelectionRectTransform).gameObject.SetActive(false);
			pointSelectionImage = new GameObject("PointSelection").AddComponent<Image>();
			pointSelectionRectTransform = ((Component)pointSelectionImage).GetComponent<RectTransform>();
			((Transform)pointSelectionRectTransform).SetParent(val.transform);
			for (int j = 0; j < 4; j++)
			{
				Image val3 = new GameObject("Outline").AddComponent<Image>();
				RectTransform component2 = ((Component)val3).GetComponent<RectTransform>();
				((Transform)component2).SetParent((Transform)(object)pointSelectionRectTransform);
				pointSelectionOutlineImages.Add(val3);
				pointSelectionOutlines.Add(component2);
			}
			((Component)pointSelectionRectTransform).gameObject.SetActive(false);
		}

		private void CheckIfUpdateGraph()
		{
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			CalculateMousePosition();
			if (mouseInsideBounds)
			{
				if (Input.GetMouseButtonDown(0) || Input.GetMouseButton(0) || Input.GetMouseButtonUp(0))
				{
					timeToUpdateMouse = GS.updatePeriod;
				}
				if (Input.touchCount > 0)
				{
					timeToUpdateTouch = GS.updatePeriod;
				}
				if (Input.mouseScrollDelta.y != 0f)
				{
					timeToUpdateScroll = GS.updatePeriod;
				}
			}
			if (timeToUpdateMouse > 0f)
			{
				UpdateGraphInternal(UpdateMethod.UpdatePositionAndScale | UpdateMethod.UpdatePointVisuals | UpdateMethod.UpdateContent | UpdateMethod.MouseAction | UpdateMethod.UpdateGridLines);
			}
			if (timeToUpdateTouch > 0f)
			{
				UpdateGraphInternal(UpdateMethod.UpdatePositionAndScale | UpdateMethod.UpdatePointVisuals | UpdateMethod.UpdateContent | UpdateMethod.MouseZoom | UpdateMethod.MouseAction | UpdateMethod.UpdateGridLines);
			}
			if (timeToUpdateScroll > 0f)
			{
				UpdateGraphInternal(UpdateMethod.UpdatePositionAndScale | UpdateMethod.UpdatePointVisuals | UpdateMethod.UpdateContent | UpdateMethod.MouseZoom | UpdateMethod.UpdateGridLines);
			}
			timeToUpdateMouse -= Time.deltaTime;
			timeToUpdateTouch -= Time.deltaTime;
			timeToUpdateScroll -= Time.deltaTime;
		}

		public void UpdateGraphInternal(UpdateMethod methodsToUpdate)
		{
			if (methodsToUpdate.HasFlag(UpdateMethod.UpdatePositionAndScale) || methodsToUpdate.HasFlag(UpdateMethod.All))
			{
				UpdatePositionAndScale();
			}
			CalculateCornerValues();
			if (methodsToUpdate.HasFlag(UpdateMethod.UpdateOutlines) || methodsToUpdate.HasFlag(UpdateMethod.All))
			{
				UpdateOutlines();
			}
			if (methodsToUpdate.HasFlag(UpdateMethod.UpdateContent) || methodsToUpdate.HasFlag(UpdateMethod.All))
			{
				HandleActiveObjects();
			}
			if (methodsToUpdate.HasFlag(UpdateMethod.UpdatePointVisuals) || methodsToUpdate.HasFlag(UpdateMethod.All))
			{
				UpdatePointVisuals();
			}
			if (methodsToUpdate.HasFlag(UpdateMethod.UpdateContent) || methodsToUpdate.HasFlag(UpdateMethod.All))
			{
				UpdateContent();
			}
			CalculateMousePosition();
			if (methodsToUpdate.HasFlag(UpdateMethod.MouseZoom) || methodsToUpdate.HasFlag(UpdateMethod.All))
			{
				MouseZoom();
			}
			if (methodsToUpdate.HasFlag(UpdateMethod.MouseAction) || methodsToUpdate.HasFlag(UpdateMethod.All))
			{
				MouseAction();
			}
			if (methodsToUpdate.HasFlag(UpdateMethod.UpdateGridLines) || methodsToUpdate.HasFlag(UpdateMethod.All))
			{
				UpdateGridLines();
			}
		}

		private void UpdatePositionAndScale()
		{
			//IL_0008: 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_0018: 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_0036: 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_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_0052: 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_006d: 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_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: 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_009e: 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_00cc: Unknown result type (might be due to invalid IL or missing references)
			contentScale = GS.GraphScale * zoom;
			maskObj.sizeDelta = GS.GraphSize;
			contentOffset = absoluteZoomPoint - zoomPoint * contentScale - moveOffset;
			graphContent.anchoredPosition = -GS.GraphSize / 2f + contentOffset;
			graph.sizeDelta = GS.GraphSize;
			backgroundRect.sizeDelta = GS.GraphSize;
			((Graphic)backgroundImage).color = GS.BackgroundColor;
		}

		private void UpdateOutlines()
		{
			//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: 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_0050: 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_012a: 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_0097: Unknown result type (might be due to invalid IL or missing references)
			for (int i = 0; i < outlines.Count; i++)
			{
				if (i % 2 == 0)
				{
					outlines[i].sizeDelta = new Vector2(GS.OutlineWidth, GS.GraphSize.y + GS.OutlineWidth * 2f);
					outlines[i].anchoredPosition = new Vector2((float)((i != 0) ? 1 : (-1)) * (GS.GraphSize.x + GS.OutlineWidth) / 2f, 0f);
				}
				else
				{
					outlines[i].sizeDelta = new Vector2(GS.GraphSize.x + GS.OutlineWidth * 2f, GS.OutlineWidth);
					outlines[i].anchoredPosition = new Vector2(0f, (float)((i != 1) ? 1 : (-1)) * (GS.GraphSize.y + GS.OutlineWidth) / 2f);
				}
			}
		}

		private void CalculateCornerValues()
		{
			//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_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_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_0063: 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_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: 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_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a6: 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_00b1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			topRight = new Vector2(Mathf.Clamp(topRight.x, bottomLeft.x, float.PositiveInfinity), Mathf.Clamp(topRight.y, bottomLeft.y, float.PositiveInfinity));
			bottomLeft = -contentOffset / contentScale;
			topRight = bottomLeft + GS.GraphSize / contentScale;
			center = (topRight - bottomLeft) / 2f + bottomLeft;
		}

		private void UpdateContent()
		{
			//IL_0090: 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_00e0: 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_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: 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_0120: Unknown result type (might be due to invalid IL or missing references)
			//IL_0149: Unknown result type (might be due to invalid IL or missing references)
			//IL_017f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0184: Unknown result type (might be due to invalid IL or missing references)
			//IL_018a: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0191: Unknown result type (might be due to invalid IL or missing references)
			//IL_0193: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_01dc: 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_01e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f2: 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_021b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0220: Unknown result type (might be due to invalid IL or missing references)
			if (((Vector2Int)(ref xAxisRange)).x == -1 || ((Vector2Int)(ref xAxisRange)).y == -1)
			{
				return;
			}
			Vector2 val = default(Vector2);
			((Vector2)(ref val))..ctor(bottomLeft.y, topRight.y);
			for (int i = ((Vector2Int)(ref xAxisRange)).x - 1; i <= ((Vector2Int)(ref xAxisRange)).y + 1; i++)
			{
				if (i < 0 || i > sortedIndices.Count - 1)
				{
					continue;
				}
				int num = sortedIndices[i];
				float y = values[num].y;
				float y2 = values[Mathf.Clamp(num - 1, 0, values.Count - 1)].y;
				float y3 = values[Mathf.Clamp(num + 1, 0, values.Count - 1)].y;
				if ((!(y < val.x) || !(y2 < val.x) || !(y3 < val.x)) && (!(y > val.y) || !(y2 > val.y) || !(y3 > val.y)))
				{
					UpdateAnchoredPosition(pointOutlineRects[i], CalculatePosition(i));
					if (lines.Count > 0 && num < lines.Count)
					{
						Vector2 val2 = CalculatePosition(num);
						Vector2 val3 = CalculatePosition(num + 1);
						float num2 = Vector2.Distance(val2, val3);
						UpdateAnchoredPosition(lineRects[num], (val3 + val2) / 2f);
						UpdateSizeDelta(lineRects[num], new Vector2(num2, GS.LineWidth));
						Vector2 val4 = val3 - val2;
						float num3 = Mathf.Atan2(val4.y, val4.x) * 57.29578f;
						((Transform)lineRects[num]).rotation = Quaternion.AngleAxis(num3, Vector3.forward);
					}
				}
			}
		}

		private void HandleActiveObjects()
		{
			//IL_031b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0320: 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_0339: Unknown result type (might be due to invalid IL or missing references)
			try
			{
				if (((Vector2Int)(ref prevXAxisRange)).x < ((Vector2Int)(ref xAxisRange)).x)
				{
					for (int i = ((Vector2Int)(ref prevXAxisRange)).x - 1; i < ((Vector2Int)(ref xAxisRange)).x - 1; i++)
					{
						if (i >= 0)
						{
							pointOutlines[sortedIndices[i]].SetActive(false);
							if (i < lines.Count)
							{
								lines[sortedIndices[i]].SetActive(false);
							}
						}
					}
				}
				else if (((Vector2Int)(ref prevXAxisRange)).x > ((Vector2Int)(ref xAxisRange)).x && ((Vector2Int)(ref xAxisRange)).x >= 0)
				{
					for (int j = ((Vector2Int)(ref xAxisRange)).x - 1; j < ((Vector2Int)(ref prevXAxisRange)).x; j++)
					{
						if (j >= 0)
						{
							pointOutlines[sortedIndices[j]].SetActive(true);
							if (j < lines.Count)
							{
								lines[sortedIndices[j]].SetActive(true);
							}
						}
					}
				}
				if (((Vector2Int)(ref prevXAxisRange)).y > ((Vector2Int)(ref xAxisRange)).y)
				{
					for (int k = ((Vector2Int)(ref xAxisRange)).y + 2; k <= ((Vector2Int)(ref prevXAxisRange)).y + 2; k++)
					{
						if (k <= pointOutlines.Count - 1 && k >= 0)
						{
							pointOutlines[sortedIndices[k]].SetActive(false);
							if (k < lines.Count)
							{
								lines[sortedIndices[k]].SetActive(false);
							}
						}
					}
				}
				else if (((Vector2Int)(ref xAxisRange)).y > ((Vector2Int)(ref prevXAxisRange)).y)
				{
					for (int l = ((Vector2Int)(ref prevXAxisRange)).y + 2; l <= ((Vector2Int)(ref xAxisRange)).y + 1; l++)
					{
						if (l <= pointOutlines.Count - 1 && l >= 0)
						{
							pointOutlines[sortedIndices[l]].SetActive(true);
							if (l < lines.Count)
							{
								lines[sortedIndices[l]].SetActive(true);
							}
						}
					}
				}
			}
			catch (ArgumentOutOfRangeException)
			{
			}
			prevXAxisRange = xAxisRange;
			xAxisRange = new Vector2Int(MinMaxBinarySearch(findLeft: true), MinMaxBinarySearch(findLeft: false));
		}

		private Vector2 CalculatePosition(int i)
		{
			//IL_0008: 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_0018: 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)
			return values[i] * contentScale;
		}

		private void MouseTrigger(int pointIndex, bool enter)
		{
			//IL_0039: 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_012f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0136: Expected O, but got Unknown
			//IL_0160: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_017a: 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_0195: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: 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_01e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_025b: Unknown result type (might be due to invalid IL or missing references)
			fixedHoveredPoints.Add(pointIndex);
			fixedHoveredPoints = fixedHoveredPoints.Distinct().ToList();
			if (enter)
			{
				activePointIndex = pointIndex;
				activePointValue = values[pointIndex];
				pointIsActive = enter;
				if (pointSelectionType == PointSelectionType.Select)
				{
					lockedHoveredPoints.Add(pointIndex);
					lockedHoveredPoints = lockedHoveredPoints.Distinct().ToList();
				}
			}
			else
			{
				if ((lockedPoints.Contains(activePointIndex) && pointSelectionType == PointSelectionType.Select) || (fixedPointIndex == activePointIndex && pointSelectionType == PointSelectionType.FixZoomPoint))
				{
					return;
				}
				activePointIndex = pointIndex;
				activePointValue = values[pointIndex];
				pointIsActive = enter;
			}
			if (points[pointIndex].transform.childCount > 0)
			{
				Object.Destroy((Object)(object)((Component)points[pointIndex].transform.GetChild(0)).gameObject);
				return;
			}
			GameObject val = new GameObject("coordinateDisplay");
			val.transform.SetParent(points[pointIndex].transform, false);
			RectTransform val2 = val.AddComponent<RectTransform>();
			val2.anchorMin = Vector2.zero;
			val2.anchorMax = Vector2.one;
			val2.offsetMin = Vector2.zero;
			val2.offsetMax = Vector2.zero;
			((Transform)val2).localPosition = ((Transform)val2).localPosition + new Vector3(0f, 25f, 0f);
			TextMeshProUGUI val3 = val.gameObject.AddComponent<TextMeshProUGUI>();
			if (currentPlotIsLog)
			{
				((TMP_Text)val3).text = $"{Math.Round(values[pointIndex].x, 0)}, {trueYvalues[pointIndex]}";
			}
			else
			{
				((TMP_Text)val3).text = $"{Math.Round(values[pointIndex].x, 0)}, {trueYvalues[pointIndex]}";
			}
			((Graphic)val3).color = Color.white;
			((TMP_Text)val3).fontSize = 30f;
			((TMP_Text)val3).alignment = (TextAlignmentOptions)514;
			((TMP_Text)val3).enableWordWrapping = false;
			((Graphic)val3).raycastTarget = false;
		}

		private void PointClicked(int pointIndex)
		{
			//IL_002b: 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_0083: Unknown result type (might be due to invalid IL or missing references)
			if (pointSelectionType == PointSelectionType.FixZoomPoint)
			{
				if (fixedPointIndex != -1)
				{
					ChangeZoomPoint(values[pointIndex]);
					fixedHoveredPoints.Add(fixedPointIndex);
				}
				fixedHoveredPoints = fixedHoveredPoints.Distinct().ToList();
				fixedPointIndex = ((fixedPointIndex == pointIndex) ? (-1) : pointIndex);
				ChangeZoomPoint((fixedPointIndex == -1) ? center : values[pointIndex]);
			}
			else if (lockedPoints.Contains(pointIndex))
			{
				lockedPoints.Remove(pointIndex);
			}
			else
			{
				lockedPoints.Add(pointIndex);
			}
		}

		private void UpdatePointVisuals()
		{
			if (((Vector2Int)(ref xAxisRange)).x == -1 || ((Vector2Int)(ref xAxisRange)).y == -1)
			{
				return;
			}
			for (int i = ((Vector2Int)(ref xAxisRange)).x; i <= ((Vector2Int)(ref xAxisRange)).y; i++)
			{
				if (activePointIndex != sortedIndices[i])
				{
					lockedHoveredPoints.Add(sortedIndices[i]);
					fixedHoveredPoints.Add(sortedIndices[i]);
				}
			}
		}

		private void UpdatePoints()
		{
			//IL_0040: 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_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_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_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: 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_00ba: 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_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: 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_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: 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_0156: Unknown result type (might be due to invalid IL or missing references)
			//IL_017e: 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_01e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0203: Unknown result type (might be due to invalid IL or missing references)
			for (int i = 0; i < lockedHoveredPoints.Count; i++)
			{
				int num = lockedHoveredPoints[i];
				bool flag = activePointIndex == num && pointIsActive;
				Vector2 val;
				Color val2;
				float num2;
				if (lockedPoints.Contains(num))
				{
					val = Vector2.one * GS.PointLockedRadius;
					val2 = GS.PointLockedColor;
					num2 = GS.PointLockedSpeed;
				}
				else if (flag && pointSelectionType == PointSelectionType.Select)
				{
					val = Vector2.one * GS.PointHoverRadius;
					val2 = GS.PointHoverColor;
					num2 = GS.PointHoverSpeed;
				}
				else
				{
					val = Vector2.one * GS.PointRadius;
					val2 = GS.PointColor;
					num2 = GS.PointHoverSpeed;
				}
				pointRects[num].sizeDelta = Vector2.Lerp(pointRects[num].sizeDelta, val, Time.deltaTime * num2);
				if (!flag && Vector2.Distance(pointRects[num].sizeDelta, val) < 0.5f && Vector4.Distance(Color.op_Implicit(((Graphic)pointImages[num]).color), Color.op_Implicit(val2)) < 0.5f)
				{
					((Graphic)pointImages[num]).color = val2;
					pointRects[num].sizeDelta = val;
					lockedHoveredPoints.RemoveAt(i);
				}
				else if (!fixedHoveredPoints.Contains(num) && num != fixedPointIndex)
				{
					pointOutlineRects[num].sizeDelta = pointRects[num].sizeDelta + Vector2.one * GS.UnfixedPointOutlineWidth;
				}
			}
			UpdatePointOutlines();
		}

		private void UpdatePointOutlines()
		{
			//IL_0060: 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_00fe: 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_0111: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: 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_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_013e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f0: 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_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: 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_017a: Unknown result type (might be due to invalid IL or missing references)
			//IL_017f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_018f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0194: Unknown result type (might be due to invalid IL or missing references)
			Vector2 val = default(Vector2);
			for (int i = 0; i < fixedHoveredPoints.Count; i++)
			{
				int num = fixedHoveredPoints[i];
				bool flag = activePointIndex == num && pointIsActive;
				float num2;
				Color val2;
				if (fixedPointIndex == num)
				{
					((Vector2)(ref val))..ctor(GS.FixedPointOutlineWidth, GS.FixedPointOutlineWidth);
					val2 = GS.FixedPointOutlineColor;
					num2 = GS.FixedPointOutlineSpeed;
				}
				else if (flag && pointSelectionType == PointSelectionType.FixZoomPoint)
				{
					((Vector2)(ref val))..ctor(GS.UnfixedPointOutlineHoverWidth, GS.UnfixedPointOutlineHoverWidth);
					val2 = GS.UnfixedPointOutlineHoverColor;
					num2 = GS.UnfixedPointOutlineHoverSpeed;
				}
				else
				{
					((Vector2)(ref val))..ctor(GS.UnfixedPointOutlineWidth, GS.UnfixedPointOutlineWidth);
					val2 = GS.UnfixedPointOutlineColor;
					num2 = GS.UnfixedPointOutlineHoverSpeed;
				}
				val += pointRects[num].sizeDelta;
				RectTransform val3 = pointOutlineRects[num];
				if (pointSelectionType == PointSelectionType.FixZoomPoint)
				{
					val3.sizeDelta = Vector2.Lerp(val3.sizeDelta, val, Time.deltaTime * num2);
				}
				else
				{
					val3.sizeDelta = val;
				}
				Image val4 = pointOutlineImages[num];
				val2 = Color.Lerp(((Graphic)val4).color, val2, Time.deltaTime * num2);
				((Graphic)val4).color = val2;
				if (!flag && Vector2.Distance(val3.sizeDelta, val) < 0.5f)
				{
					fixedHoveredPoints.RemoveAt(i);
				}
			}
		}

		private void UpdateGridLines()
		{
			//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_0013: 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_0031: 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)
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0054: 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_00a3: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f5: 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_0218: Unknown result type (might be due to invalid IL or missing references)
			//IL_0223: Unknown result type (might be due to invalid IL or missing references)
			//IL_022c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0233: Unknown result type (might be due to invalid IL or missing references)
			//IL_0182: 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_01a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_0268: Unknown result type (might be due to invalid IL or missing references)
			//IL_0271: Unknown result type (might be due to invalid IL or missing references)
			//IL_0278: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a3: 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_02e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0325: 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_038b: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_0357: Unknown result type (might be due to invalid IL or missing references)
			//IL_036c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0373: Unknown result type (might be due to invalid IL or missing references)
			//IL_058c: Unknown result type (might be due to invalid IL or missing references)
			//IL_05a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_05c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_05ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_0519: Unknown result type (might be due to invalid IL or missing references)
			//IL_0534: Unknown result type (might be due to invalid IL or missing references)
			//IL_0547: Unknown result type (might be due to invalid IL or missing references)
			//IL_0571: Unknown result type (might be due to invalid IL or missing references)
			//IL_0621: Unknown result type (might be due to invalid IL or missing references)
			//IL_062a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0631: Unknown result type (might be due to invalid IL or missing references)
			//IL_0645: Unknown result type (might be due to invalid IL or missing references)
			//IL_0665: Unknown result type (might be due to invalid IL or missing references)
			//IL_0683: Unknown result type (might be due to invalid IL or missing references)
			//IL_06c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_072d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0742: Unknown result type (might be due to invalid IL or missing references)
			//IL_0749: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_070e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0715: Unknown result type (might be due to invalid IL or missing references)
			Vector2 val = CalculateGridSpacing();
			Vector2 val2 = new Vector2(Mathf.Ceil(bottomLeft.x * val.x) / val.x, Mathf.Ceil(bottomLeft.y * val.y) / val.y) * contentScale;
			Vector2 val3 = default(Vector2);
			((Vector2)(ref val3))..ctor(-1f, -1f);
			int num = Mathf.CeilToInt((topRight.y - bottomLeft.y) * val.y) + 1;
			int num2 = Mathf.CeilToInt((topRight.x - bottomLeft.x) * val.x) + 1;
			if (num2 < 0)
			{
				num2 = 7;
			}
			if (num < 0)
			{
				num = 7;
			}
			while (xGridRects.Count <= num2)
			{
				CreateGridLines(createX: true);
			}
			while (yGridRects.Count <= num)
			{
				CreateGridLines(createX: false);
			}
			for (int i = 0; i < num2; i++)
			{
				RectTransform val4 = xGridRects[i];
				Image val5 = xGridImages[i];
				if (!((Component)val4).gameObject.activeSelf)
				{
					((Component)val4).gameObject.SetActive(true);
				}
				if (i == 0)
				{
					UpdateSizeDelta(val4, new Vector2(GS.XAxisWidth, GS.GraphSize.y * 2f));
					((Graphic)val5).color = GS.XAxisColor;
					UpdateAnchoredPosition(val4, new Vector2(0f, center.y * contentScale.y));
					continue;
				}
				UpdateSizeDelta(val4, new Vector2(GS.XGridWidth, GS.GraphSize.y * 2f));
				((Graphic)val5).color = GS.XGridColor;
				if (Mathf.Round(val2.x + ((float)i + val3.x) / val.x * contentScale.x) == 0f)
				{
					val3.x = 0f;
				}
				UpdateAnchoredPosition(val4, new Vector2(val2.x + ((float)i + val3.x) / val.x * contentScale.x, center.y * contentScale.y));
				UpdateSizeDelta(xAxisTextRects[i - 1], new Vector2(1f / val.x * contentScale.x, GS.XAxisTextSize));
				UpdateAnchoredPosition(xAxisTextRects[i - 1], new Vector2(0f, (0f - center.y) * contentScale.y + GS.XAxisTextOffset));
				((TMP_Text)xAxisTexts[i - 1]).text = ((Mathf.Floor(1f / val.x) > 0f) ? Mathf.Round(val2.x / contentScale.x + ((float)i + val3.x) / val.x).ToString() : (val2.x / contentScale.x + ((float)i + val3.x) / val.x).ToString("R"));
				if (((TMP_Text)xAxisTexts[i - 1]).text[0] == '-')
				{
					((TMP_Text)xAxisTexts[i - 1]).text = "";
				}
			}
			if (xAxisTexts.Count >= 2)
			{
				for (int j = 1; j < xAxisTexts.Count; j++)
				{
					if (((TMP_Text)xAxisTexts[j - 1]).text == "" && ((TMP_Text)xAxisTexts[j]).text != "")
					{
						((TMP_Text)xAxisTexts[j - 1]).text = "seconds";
						break;
					}
				}
			}
			for (int k = 0; k < num; k++)
			{
				RectTransform val6 = yGridRects[k];
				Image val7 = yGridImages[k];
				if (!((Component)val6).gameObject.activeSelf)
				{
					((Component)val6).gameObject.SetActive(true);
				}
				if (k == 0)
				{
					UpdateSizeDelta(val6, new Vector2(GS.GraphSize.x * 2f, GS.YAxisWidth));
					((Graphic)val7).color = GS.YAxisColor;
					UpdateAnchoredPosition(val6, new Vector2(center.x * contentScale.x, 0f));
					continue;
				}
				UpdateSizeDelta(val6, new Vector2(GS.GraphSize.x * 2f, GS.YGridWidth));
				((Graphic)val7).color = GS.YGridColor;
				if (Mathf.Round(val2.y + ((float)k + val3.y) / val.y * contentScale.y) == 0f)
				{
					val3.y = 0f;
				}
				UpdateAnchoredPosition(val6, new Vector2(center.x * contentScale.x, val2.y + ((float)k + val3.y) / val.y * contentScale.y));
				UpdateSizeDelta(yAxisTextRects[k - 1], new Vector2(1f / val.x * contentScale.x, GS.XAxisTextSize));
				UpdateAnchoredPosition(yAxisTextRects[k - 1], new Vector2((0f - center.x) * contentScale.x + GS.YAxisTextOffset, 0f));
				((TMP_Text)yAxisTexts[k - 1]).text = ((Mathf.Floor(1f / val.y) > 0f) ? Mathf.Round(val2.y / contentScale.y + ((float)k + val3.y) / val.y).ToString() : (val2.y / contentScale.y + ((float)k + val3.y) / val.y).ToString("R"));
				if (currentPlotIsLog)
				{
					((TMP_Text)yAxisTexts[k - 1]).text = $"{logBase}<sup>{((TMP_Text)yAxisTexts[k - 1]).text}</sup>";
				}
			}
			for (int l = num2; l < xGridRects.Count; l++)
			{
				if (((Component)xGridRects[l]).gameObject.activeSelf)
				{
					((Component)xGridRects[l]).gameObject.SetActive(false);
				}
			}
			for (int m = num; m < yGridRects.Count; m++)
			{
				if (((Component)yGridRects[m]).gameObject.activeSelf)
				{
					((Component)yGridRects[m]).gameObject.SetActive(false);
				}
			}
		}

		private Vector2 CalculateGridSpacing()
		{
			//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_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)
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			int num = Mathf.FloorToInt(Mathf.Log(zoom.x, 2f));
			int num2 = Mathf.FloorToInt(Mathf.Log(zoom.y, 2f));
			float num3 = Mathf.Pow(2f, (float)num);
			float num4 = Mathf.Pow(2f, (float)num2);
			return new Vector2(num3, num4) * GS.GridSpacing;
		}

		private void SetCornerValuesInternal(Vector2 newBottomLeft, Vector2 newTopRight)
		{
			//IL_0001: 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_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_003b: 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_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: 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_00b7: 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_00b9: 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_00c8: 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_00d0: 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_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e8: 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_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: 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_011c: 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_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Unknown result type (might be due to invalid IL or missing references)
			if (newBottomLeft.x < -2.5E+38f || float.IsNaN(newBottomLeft.x))
			{
				newBottomLeft.x = -2.5E+38f;
			}
			if (newBottomLeft.y < -2.5E+38f || float.IsNaN(newBottomLeft.y))
			{
				newBottomLeft.y = -2.5E+38f;
			}
			if (newTopRight.x > 2.5E+38f || float.IsNaN(newTopRight.x))
			{
				newTopRight.x = 2.5E+38f;
			}
			if (newTopRight.y > 2.5E+38f || float.IsNaN(newTopRight.y))
			{
				newTopRight.y = 2.5E+38f;
			}
			Vector2 val = (newTopRight - newBottomLeft) / 2f + newBottomLeft;
			targetMoveOffset = (val - center) * contentScale + moveOffset;
			ChangeZoomPoint(val);
			targetZoom = GS.GraphSize / GS.GraphScale / (newTopRight - newBottomLeft);
		}

		private void CalculateMousePosition()
		{
			//IL_0002: 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_0016: 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_003b: 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_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_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: 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)
			mousePos = (new Vector2(Input.mousePosition.x, Input.mousePosition.y) - new Vector2(((Component)graphContent).transform.position.x, ((Component)graphContent).transform.position.y)) / contentScale;
			mouseInsideBounds = mousePos.x > bottomLeft.x && mousePos.y > bottomLeft.y && mousePos.x < topRight.x && mousePos.y < topRight.y;
			mousePos = new Vector2(Mathf.Clamp(mousePos.x, bottomLeft.x, topRight.x), Mathf.Clamp(mousePos.y, bottomLeft.y, topRight.y));
		}

		private void MouseZoom()
		{
			//IL_0010: 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_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_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_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			if (mouseInsideBounds && Input.mouseScrollDelta.y != 0f)
			{
				if (fixedPointIndex == -1)
				{
					ChangeZoomPoint(mousePos);
				}
				targetZoom = zoom + Input.mouseScrollDelta.y * zoom * GS.ZoomSpeed / 100f;
			}
		}

		private void ChangeZoomPoint(Vector2 newZoomPoint)
		{
			//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_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_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_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_002c: 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_003e: 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_0049: 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_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_0059: 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)
			if (IsWithinBounds(zoom, (newZoomPoint - zoomPoint) * contentScale + absoluteZoomPoint, newZoomPoint, moveOffset))
			{
				absoluteZoomPoint = (newZoomPoint - zoomPoint) * contentScale + absoluteZoomPoint;
				zoomPoint = newZoomPoint;
			}
		}

		private void MouseAction()
		{
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0033: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: 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_0106: 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_01ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0120: 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_012a: Unknown result type (might be due to invalid IL or missing references)
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0142: Unknown result type (might be due to invalid IL or missing references)
			//IL_0144: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Unknown result type (might be due to invalid IL or missing references)
			//IL_014f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0261: Unknown result type (might be due to invalid IL or missing references)
			//IL_0266: Unknown result type (might be due to invalid IL or missing references)
			//IL_026a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0270: Invalid comparison between Unknown and I4
			//IL_03cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d5: Invalid comparison between Unknown and I4
			//IL_027f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0284: Unknown result type (might be due to invalid IL or missing references)
			//IL_028c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0298: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b2: 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_02d1: 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_02dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bd: Invalid comparison between Unknown and I4
			//IL_0365: Unknown result type (might be due to invalid IL or missing references)
			//IL_036a: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0401: Unknown result type (might be due to invalid IL or missing references)
			//IL_0405: Unknown result type (might be due to invalid IL or missing references)
			//IL_040a: Unknown result type (might be due to invalid IL or missing references)
			//IL_040c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0412: Unknown result type (might be due to invalid IL or missing references)
			//IL_0417: Unknown result type (might be due to invalid IL or missing references)
			if (Input.GetMouseButtonDown(0))
			{
				initialMouseInsideBounds = mouseInsideBounds;
				if (!mouseInsideBounds)
				{
					return;
				}
				initialMousePos = Vector2.op_Implicit(Input.mousePosition);
				if (mouseActionType == MouseActionType.Move)
				{
					initialMoveOffset = moveOffset;
				}
				else if (mouseActionType == MouseActionType.SelectPoints)
				{
					initialLockedPoints.Clear();
					for (int i = 0; i < lockedPoints.Count; i++)
					{
						initialLockedPoints.Add(lockedPoints[i]);
					}
				}
				return;
			}
			if (Input.GetMouseButton(0) && initialMouseInsideBounds)
			{
				if (Input.GetMouseButtonDown(1))
				{
					initialMouseInsideBounds = false;
					((Component)zoomSelectionRectTransform).gameObject.SetActive(false);
					((Component)pointSelectionRectTransform).gameObject.SetActive(false);
				}
				if (previousMousePos != mousePos)
				{
					Vector2 val = Vector2.op_Implicit(Input.mousePosition);
					if (mouseActionType == MouseActionType.Move)
					{
						targetMoveOffset = initialMousePos - val + initialMoveOffset;
					}
					else if (mouseActionType == MouseActionType.SelectAreaToZoom)
					{
						if (!((Component)zoomSelectionRectTransform).gameObject.activeSelf)
						{
							((Component)zoomSelectionRectTransform).gameObject.SetActive(true);
						}
						SelectAreaToZoom(release: false);
					}
					else if (mouseActionType == MouseActionType.SelectPoints)
					{
						if (!((Component)pointSelectionRectTransform).gameObject.activeSelf)
						{
							((Component)pointSelectionRectTransform).gameObject.SetActive(true);
						}
						SelectPoints(release: false);
					}
				}
				previousMousePos = mousePos;
			}
			else if (Input.GetMouseButtonUp(0) && initialMouseInsideBounds)
			{
				if (mouseActionType == MouseActionType.SelectAreaToZoom)
				{
					SelectAreaToZoom(release: true);
				}
				else if (mouseActionType == MouseActionType.SelectPoints)
				{
					SelectPoints(release: true);
				}
				recentlyLockedPoints.Clear();
			}
			if (Input.touchCount != 1)
			{
				return;
			}
			Touch touch = Input.GetTouch(0);
			if ((int)((Touch)(ref touch)).phase == 0)
			{
				initialMousePos = ((Touch)(ref touch)).position;
				mousePos = (new Vector2(((Touch)(ref touch)).position.x, ((Touch)(ref touch)).position.y) - new Vector2(((Component)graphContent).transform.position.x, ((Component)graphContent).transform.position.y)) / contentScale;
				initialMouseInsideBounds = mousePos.x > bottomLeft.x && mousePos.y > bottomLeft.y && mousePos.x < topRight.x && mousePos.y < topRight.y;
				if (mouseActionType == MouseActionType.Move)
				{
					initialMoveOffset = moveOffset;
				}
				else if (mouseActionType == MouseActionType.SelectPoints)
				{
					initialLockedPoints.Clear();
					for (int j = 0; j < lockedPoints.Count; j++)
					{
						initialLockedPoints.Add(lockedPoints[j]);
					}
				}
			}
			else if ((int)((Touch)(ref touch)).phase == 1 && initialMouseInsideBounds)
			{
				if (mouseActionType == MouseActionType.Move)
				{
					Vector2 position = ((Touch)(ref touch)).position;
					targetMoveOffset = initialMousePos - position + initialMoveOffset;
				}
				else if (mouseActionType == MouseActionType.SelectAreaToZoom)
				{
					if (!((Component)zoomSelectionRectTransform).gameObject.activeSelf)
					{
						((Component)zoomSelectionRectTransform).gameObject.SetActive(true);
					}
					SelectAreaToZoom(release: false);
				}
				else if (mouseActionType == MouseActionType.SelectPoints)
				{
					if (!((Component)pointSelectionRectTransform).gameObject.activeSelf)
					{
						((Component)pointSelectionRectTransform).gameObject.SetActive(true);
					}
					SelectPoints(release: false);
				}
			}
			else if ((int)((Touch)(ref touch)).phase == 3 && initialMouseInsideBounds)
			{
				if (mouseActionType == MouseActionType.SelectAreaToZoom)
				{
					SelectAreaToZoom(release: true);
				}
				else if (mouseActionType == MouseActionType.SelectPoints)
				{
					SelectPoints(release: true);
				}
				recentlyLockedPoints.Clear();
			}
		}

		private void SelectAreaToZoom(bool release)
		{
			//IL_0017: 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)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: 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_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_0069: 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)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: 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_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: 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_0100: 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_0311: Unknown result type (might be due to invalid IL or missing references)
			//IL_0317: Unknown result type (might be due to invalid IL or missing references)
			//IL_0322: Unknown result type (might be due to invalid IL or missing references)
			//IL_0328: Unknown result type (might be due to invalid IL or missing references)
			//IL_033a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0340: Unknown result type (might be due to invalid IL or missing references)
			//IL_034b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0351: 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_0363: Unknown result type (might be due to invalid IL or missing references)
			//IL_0365: Unknown result type (might be due to invalid IL or missing references)
			//IL_036a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0374: 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_037f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0384: 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)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0120: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_012b: 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_0136: 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_0146: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: 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_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_016a: 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_017a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_0196: Unknown result type (might be due to invalid IL or missing references)
			//IL_039c: Unknown result type (might be due to invalid IL or missing references)
			//IL_039e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0248: Unknown result type (might be due to invalid IL or missing references)
			//IL_026c: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d3: 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_0293: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_020d: Unknown result type (might be due to invalid IL or missing references)
			//IL_022c: 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)
			Vector2 val = (new Vector2(initialMousePos.x, initialMousePos.y) - new Vector2(((Component)graphContent).transform.position.x, ((Component)graphContent).transform.position.y)) / contentScale;
			Vector2 val2 = default(Vector2);
			((Vector2)(ref val2))..ctor(mousePos.x, val.y + (mousePos.x - val.x) / GS.GraphSize.x * GS.GraphSize.y * contentScale.x / contentScale.y);
			Vector2 val3 = default(Vector2);
			((Vector2)(ref val3))..ctor(mousePos.x, val.y + (mousePos.x - val.x));
			Vector2 val4 = ((rectangleType == RectangleType.Free) ? mousePos : ((rectangleType == RectangleType.PreserveAspectRatio) ? val2 : val3));
			if (!release)
			{
				zoomSelectionRectTransform.anchoredPosition = (val + (val4 - val) / 2f) * contentScale;
				Vector2 val5 = new Vector2(Mathf.Abs(val4.x - val.x), Mathf.Abs(val4.y - val.y)) * contentScale;
				zoomSelectionRectTransform.sizeDelta = val5;
				((Graphic)zoomSelectionImage).color = GS.ZoomSelectionColor;
				for (int i = 0; i < zoomSelectionOutlines.Count; i++)
				{
					if (i % 2 == 0)
					{
						zoomSelectionOutlines[i].sizeDelta = new Vector2(GS.ZoomSelectionOutlineWidth, val5.y + GS.ZoomSelectionOutlineWidth * 2f);
						zoomSelectionOutlines[i].anchoredPosition = new Vector2((float)((i != 0) ? 1 : (-1)) * (val5.x + GS.ZoomSelectionOutlineWidth) / 2f, 0f);
					}
					else
					{
						zoomSelectionOutlines[i].sizeDelta = new Vector2(val5.x + GS.ZoomSelectionOutlineWidth * 2f, GS.ZoomSelectionOutlineWidth);
						zoomSelectionOutlines[i].anchoredPosition = new Vector2(0f, (float)((i != 1) ? 1 : (-1)) * (val5.y + GS.ZoomSelectionOutlineWidth) / 2f);
					}
					((Graphic)zoomSelectionOutlineImages[i]).color = GS.ZoomSelectionOutlineColor;
				}
			}
			else
			{
				((Component)zoomSelectionRectTransform).gameObject.SetActive(false);
				Vector2 val6 = default(Vector2);
				((Vector2)(ref val6))..ctor(Mathf.Min(val.x, val4.x), Mathf.Min(val.y, val4.y));
				Vector2 val7 = default(Vector2);
				((Vector2)(ref val7))..ctor(Mathf.Max(val.x, val4.x), Mathf.Max(val.y, val4.y));
				Vector2 val8 = val7 - val6;
				float magnitude = ((Vector2)(ref val8)).magnitude;
				val8 = topRight - bottomLeft;
				if (magnitude > ((Vector2)(ref val8)).magnitude / 16f)
				{
					SetCornerValues(val6, val7);
				}
			}
		}

		private void SelectPoints(bool release)
		{
			//IL_0017: 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)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_004b: 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_0056: Unknown result type (might be due to inva