Decompiled source of EnemySkinKitTestBranch v1.2.0

plugins/EnemySkinKit/EnemySkinKit.dll

Decompiled 2 years ago
using System;
using System.CodeDom.Compiler;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Text.RegularExpressions;
using AntlerShed.EnemySkinKit.ArmatureReflection;
using AntlerShed.EnemySkinKit.SkinAction;
using AntlerShed.EnemySkinKit.Vanilla;
using AntlerShed.SkinRegistry;
using AntlerShed.SkinRegistry.Events;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using GameNetcodeStuff;
using Unity.Netcode;
using UnityEditor;
using UnityEditor.Compilation;
using UnityEditor.UIElements;
using UnityEngine;
using UnityEngine.UIElements;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyVersion("0.0.0.0")]
[CustomPropertyDrawer(typeof(SkinnedMeshAction))]
internal class StaticMeshDrawer : PropertyDrawer
{
	public override VisualElement CreatePropertyGUI(SerializedProperty property)
	{
		//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_0033: Unknown result type (might be due to invalid IL or missing references)
		//IL_0039: Expected O, but got Unknown
		//IL_004a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Expected O, but got Unknown
		//IL_0065: Unknown result type (might be due to invalid IL or missing references)
		//IL_006f: Expected O, but got Unknown
		//IL_006f: 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_008c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0113: Expected O, but got Unknown
		//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
		Foldout val = new Foldout
		{
			text = property.displayName
		};
		PropertyField val2 = new PropertyField(property.FindPropertyRelative("actionType"));
		PropertyField replacementField = new PropertyField(property.FindPropertyRelative("replacementObject"));
		PropertyField mapField = new PropertyField(property.FindPropertyRelative("armatureMap"));
		((VisualElement)val).contentContainer.Add((VisualElement)(object)val2);
		((VisualElement)val).contentContainer.Add((VisualElement)(object)replacementField);
		((VisualElement)val).contentContainer.Add((VisualElement)(object)mapField);
		if (!property.FindPropertyRelative("actionType").enumNames[property.FindPropertyRelative("actionType").enumValueIndex].Equals("REPLACE"))
		{
			((VisualElement)replacementField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1);
			((VisualElement)mapField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1);
		}
		val2.RegisterValueChangeCallback((EventCallback<SerializedPropertyChangeEvent>)delegate
		{
			//IL_0070: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: 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)
			if (property.FindPropertyRelative("actionType").enumNames[property.FindPropertyRelative("actionType").enumValueIndex].Equals("REPLACE"))
			{
				((VisualElement)replacementField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)0);
				((VisualElement)mapField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)0);
			}
			else
			{
				((VisualElement)replacementField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1);
				((VisualElement)mapField).style.display = StyleEnum<DisplayStyle>.op_Implicit((DisplayStyle)1);
			}
		});
		return (VisualElement)val;
	}
}
[CompilerGenerated]
[EditorBrowsable(EditorBrowsableState.Never)]
[GeneratedCode("Unity.MonoScriptGenerator.MonoScriptInfoGenerator", null)]
internal class UnitySourceGeneratedAssemblyMonoScriptTypes_v1
{
	private struct MonoScriptData
	{
		public byte[] FilePathsData;

		public byte[] TypesData;

		public int TotalTypes;

		public int TotalFiles;

		public bool IsEditorOnly;
	}

	[MethodImpl(MethodImplOptions.AggressiveInlining)]
	private static MonoScriptData Get()
	{
		MonoScriptData result = default(MonoScriptData);
		result.FilePathsData = new byte[4024]
		{
			0, 0, 0, 1, 0, 0, 0, 71, 92, 65,
			115, 115, 101, 116, 115, 92, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 92, 83,
			99, 114, 105, 112, 116, 115, 92, 65, 114, 109,
			97, 116, 117, 114, 101, 82, 101, 102, 108, 101,
			99, 116, 105, 111, 110, 92, 65, 114, 109, 97,
			116, 117, 114, 101, 77, 97, 112, 71, 101, 110,
			101, 114, 97, 116, 111, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 68, 92, 65, 115,
			115, 101, 116, 115, 92, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 92, 83, 99,
			114, 105, 112, 116, 115, 92, 65, 114, 109, 97,
			116, 117, 114, 101, 82, 101, 102, 108, 101, 99,
			116, 105, 111, 110, 92, 65, 114, 109, 97, 116,
			117, 114, 101, 82, 101, 102, 108, 101, 99, 116,
			111, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 56, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 69, 100, 105, 116, 111, 114, 92, 65,
			114, 109, 97, 116, 117, 114, 101, 77, 97, 112,
			69, 100, 105, 116, 111, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 56, 92, 65, 115,
			115, 101, 116, 115, 92, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 92, 83, 99,
			114, 105, 112, 116, 115, 92, 69, 100, 105, 116,
			111, 114, 92, 65, 117, 100, 105, 111, 65, 99,
			116, 105, 111, 110, 68, 114, 97, 119, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			60, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			69, 100, 105, 116, 111, 114, 92, 65, 117, 100,
			105, 111, 76, 105, 115, 116, 65, 99, 116, 105,
			111, 110, 68, 114, 97, 119, 101, 114, 46, 99,
			115, 0, 0, 0, 2, 0, 0, 0, 49, 92,
			65, 115, 115, 101, 116, 115, 92, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 69, 100,
			105, 116, 111, 114, 92, 67, 111, 110, 102, 105,
			103, 86, 105, 101, 119, 46, 99, 115, 0, 0,
			0, 7, 0, 0, 0, 66, 92, 65, 115, 115,
			101, 116, 115, 92, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 92, 83, 99, 114,
			105, 112, 116, 115, 92, 69, 100, 105, 116, 111,
			114, 92, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 69, 100, 105, 116, 111, 114,
			69, 120, 99, 101, 112, 116, 105, 111, 110, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 59,
			92, 65, 115, 115, 101, 116, 115, 92, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			92, 83, 99, 114, 105, 112, 116, 115, 92, 69,
			100, 105, 116, 111, 114, 92, 77, 97, 116, 101,
			114, 105, 97, 108, 65, 99, 116, 105, 111, 110,
			68, 114, 97, 119, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 49, 92, 65, 115,
			115, 101, 116, 115, 92, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 92, 83, 99,
			114, 105, 112, 116, 115, 92, 69, 100, 105, 116,
			111, 114, 92, 77, 111, 100, 66, 117, 105, 108,
			100, 101, 114, 46, 99, 115, 0, 0, 0, 1,
			0, 0, 0, 59, 92, 65, 115, 115, 101, 116,
			115, 92, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 92, 83, 99, 114, 105, 112,
			116, 115, 92, 69, 100, 105, 116, 111, 114, 92,
			83, 107, 105, 110, 77, 111, 100, 66, 117, 105,
			108, 100, 101, 114, 69, 100, 105, 116, 111, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			62, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			69, 100, 105, 116, 111, 114, 92, 83, 107, 105,
			110, 110, 101, 100, 77, 101, 115, 104, 65, 99,
			116, 105, 111, 110, 68, 114, 97, 119, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			61, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			69, 100, 105, 116, 111, 114, 92, 83, 116, 97,
			116, 105, 99, 77, 101, 115, 104, 65, 99, 116,
			105, 111, 110, 68, 114, 97, 119, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 44,
			92, 65, 115, 115, 101, 116, 115, 92, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			92, 83, 99, 114, 105, 112, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 99, 115, 0, 0, 0, 5, 0, 0,
			0, 42, 92, 65, 115, 115, 101, 116, 115, 92,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 92, 83, 99, 114, 105, 112, 116, 115,
			92, 83, 107, 105, 110, 65, 99, 116, 105, 111,
			110, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 46, 92, 65, 115, 115, 101, 116, 115, 92,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 92, 83, 99, 114, 105, 112, 116, 115,
			92, 83, 107, 105, 110, 65, 116, 116, 97, 99,
			104, 109, 101, 110, 116, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 65, 92, 65, 115, 115,
			101, 116, 115, 92, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 92, 83, 99, 114,
			105, 112, 116, 115, 92, 86, 97, 110, 105, 108,
			108, 97, 83, 107, 105, 110, 110, 101, 114, 115,
			92, 66, 97, 98, 111, 111, 110, 72, 97, 119,
			107, 83, 107, 105, 110, 110, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 61, 92,
			65, 115, 115, 101, 116, 115, 92, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 86, 97,
			110, 105, 108, 108, 97, 83, 107, 105, 110, 110,
			101, 114, 115, 92, 66, 97, 114, 98, 101, 114,
			83, 107, 105, 110, 110, 101, 114, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 59, 92, 65,
			115, 115, 101, 116, 115, 92, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 92, 83,
			99, 114, 105, 112, 116, 115, 92, 86, 97, 110,
			105, 108, 108, 97, 83, 107, 105, 110, 110, 101,
			114, 115, 92, 66, 97, 115, 101, 83, 107, 105,
			110, 110, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 62, 92, 65, 115, 115, 101,
			116, 115, 92, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 92, 83, 99, 114, 105,
			112, 116, 115, 92, 86, 97, 110, 105, 108, 108,
			97, 83, 107, 105, 110, 110, 101, 114, 115, 92,
			66, 114, 97, 99, 107, 101, 110, 83, 107, 105,
			110, 110, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 67, 92, 65, 115, 115, 101,
			116, 115, 92, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 92, 83, 99, 114, 105,
			112, 116, 115, 92, 86, 97, 110, 105, 108, 108,
			97, 83, 107, 105, 110, 110, 101, 114, 115, 92,
			66, 117, 110, 107, 101, 114, 83, 112, 105, 100,
			101, 114, 83, 107, 105, 110, 110, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 61,
			92, 65, 115, 115, 101, 116, 115, 92, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			92, 83, 99, 114, 105, 112, 116, 115, 92, 86,
			97, 110, 105, 108, 108, 97, 83, 107, 105, 110,
			110, 101, 114, 115, 92, 66, 117, 116, 108, 101,
			114, 83, 107, 105, 110, 110, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 63, 92,
			65, 115, 115, 101, 116, 115, 92, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 86, 97,
			110, 105, 108, 108, 97, 83, 107, 105, 110, 110,
			101, 114, 115, 92, 67, 111, 105, 108, 104, 101,
			97, 100, 83, 107, 105, 110, 110, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 69,
			92, 65, 115, 115, 101, 116, 115, 92, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			92, 83, 99, 114, 105, 112, 116, 115, 92, 86,
			97, 110, 105, 108, 108, 97, 83, 107, 105, 110,
			110, 101, 114, 115, 92, 69, 97, 114, 116, 104,
			76, 101, 118, 105, 97, 116, 104, 97, 110, 83,
			107, 105, 110, 110, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 65, 92, 65, 115,
			115, 101, 116, 115, 92, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 92, 83, 99,
			114, 105, 112, 116, 115, 92, 86, 97, 110, 105,
			108, 108, 97, 83, 107, 105, 110, 110, 101, 114,
			115, 92, 69, 121, 101, 108, 101, 115, 115, 68,
			111, 103, 83, 107, 105, 110, 110, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 67,
			92, 65, 115, 115, 101, 116, 115, 92, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			92, 83, 99, 114, 105, 112, 116, 115, 92, 86,
			97, 110, 105, 108, 108, 97, 83, 107, 105, 110,
			110, 101, 114, 115, 92, 70, 111, 114, 101, 115,
			116, 75, 101, 101, 112, 101, 114, 83, 107, 105,
			110, 110, 101, 114, 46, 99, 115, 0, 0, 0,
			2, 0, 0, 0, 64, 92, 65, 115, 115, 101,
			116, 115, 92, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 92, 83, 99, 114, 105,
			112, 116, 115, 92, 86, 97, 110, 105, 108, 108,
			97, 83, 107, 105, 110, 110, 101, 114, 115, 92,
			71, 104, 111, 115, 116, 71, 105, 114, 108, 83,
			107, 105, 110, 110, 101, 114, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 65, 92, 65, 115,
			115, 101, 116, 115, 92, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 92, 83, 99,
			114, 105, 112, 116, 115, 92, 86, 97, 110, 105,
			108, 108, 97, 83, 107, 105, 110, 110, 101, 114,
			115, 92, 72, 111, 97, 114, 100, 101, 114, 66,
			117, 103, 83, 107, 105, 110, 110, 101, 114, 46,
			99, 115, 0, 0, 0, 1, 0, 0, 0, 64,
			92, 65, 115, 115, 101, 116, 115, 92, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			92, 83, 99, 114, 105, 112, 116, 115, 92, 86,
			97, 110, 105, 108, 108, 97, 83, 107, 105, 110,
			110, 101, 114, 115, 92, 72, 121, 103, 114, 111,
			100, 101, 114, 101, 83, 107, 105, 110, 110, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 61, 92, 65, 115, 115, 101, 116, 115, 92,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 92, 83, 99, 114, 105, 112, 116, 115,
			92, 86, 97, 110, 105, 108, 108, 97, 83, 107,
			105, 110, 110, 101, 114, 115, 92, 74, 101, 115,
			116, 101, 114, 83, 107, 105, 110, 110, 101, 114,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			67, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 83, 107, 105,
			110, 110, 101, 114, 115, 92, 75, 105, 100, 110,
			97, 112, 112, 101, 114, 70, 111, 120, 83, 107,
			105, 110, 110, 101, 114, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 65, 92, 65, 115, 115,
			101, 116, 115, 92, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 92, 83, 99, 114,
			105, 112, 116, 115, 92, 86, 97, 110, 105, 108,
			108, 97, 83, 107, 105, 110, 110, 101, 114, 115,
			92, 78, 117, 116, 99, 114, 97, 99, 107, 101,
			114, 83, 107, 105, 110, 110, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 66, 92,
			65, 115, 115, 101, 116, 115, 92, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 86, 97,
			110, 105, 108, 108, 97, 83, 107, 105, 110, 110,
			101, 114, 115, 92, 79, 108, 100, 66, 105, 114,
			100, 78, 101, 115, 116, 83, 107, 105, 110, 110,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 62, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 86, 97, 110, 105, 108, 108, 97, 83,
			107, 105, 110, 110, 101, 114, 115, 92, 79, 108,
			100, 66, 105, 114, 100, 83, 107, 105, 110, 110,
			101, 114, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 64, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 86, 97, 110, 105, 108, 108, 97, 83,
			107, 105, 110, 110, 101, 114, 115, 92, 83, 110,
			97, 114, 101, 70, 108, 101, 97, 83, 107, 105,
			110, 110, 101, 114, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 66, 92, 65, 115, 115, 101,
			116, 115, 92, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 92, 83, 99, 114, 105,
			112, 116, 115, 92, 86, 97, 110, 105, 108, 108,
			97, 83, 107, 105, 110, 110, 101, 114, 115, 92,
			83, 112, 111, 114, 101, 76, 105, 122, 97, 114,
			100, 83, 107, 105, 110, 110, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 62, 92,
			65, 115, 115, 101, 116, 115, 92, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 86, 97,
			110, 105, 108, 108, 97, 83, 107, 105, 110, 110,
			101, 114, 115, 92, 84, 104, 117, 109, 112, 101,
			114, 83, 107, 105, 110, 110, 101, 114, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 65, 92,
			65, 115, 115, 101, 116, 115, 92, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 86, 97,
			110, 105, 108, 108, 97, 83, 107, 105, 110, 110,
			101, 114, 115, 92, 84, 117, 108, 105, 112, 83,
			110, 97, 107, 101, 83, 107, 105, 110, 110, 101,
			114, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 63, 92, 65, 115, 115, 101, 116, 115, 92,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 92, 83, 99, 114, 105, 112, 116, 115,
			92, 86, 97, 110, 105, 108, 108, 97, 84, 101,
			109, 112, 108, 97, 116, 101, 115, 92, 66, 97,
			98, 111, 111, 110, 72, 97, 119, 107, 83, 107,
			105, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 59, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 86, 97, 110, 105, 108, 108, 97, 84,
			101, 109, 112, 108, 97, 116, 101, 115, 92, 66,
			97, 114, 98, 101, 114, 83, 107, 105, 110, 46,
			99, 115, 0, 0, 0, 2, 0, 0, 0, 57,
			92, 65, 115, 115, 101, 116, 115, 92, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			92, 83, 99, 114, 105, 112, 116, 115, 92, 86,
			97, 110, 105, 108, 108, 97, 84, 101, 109, 112,
			108, 97, 116, 101, 115, 92, 66, 97, 115, 101,
			83, 107, 105, 110, 46, 99, 115, 0, 0, 0,
			1, 0, 0, 0, 60, 92, 65, 115, 115, 101,
			116, 115, 92, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 92, 83, 99, 114, 105,
			112, 116, 115, 92, 86, 97, 110, 105, 108, 108,
			97, 84, 101, 109, 112, 108, 97, 116, 101, 115,
			92, 66, 114, 97, 99, 107, 101, 110, 83, 107,
			105, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 65, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 86, 97, 110, 105, 108, 108, 97, 84,
			101, 109, 112, 108, 97, 116, 101, 115, 92, 66,
			117, 110, 107, 101, 114, 83, 112, 105, 100, 101,
			114, 83, 107, 105, 110, 46, 99, 115, 0, 0,
			0, 1, 0, 0, 0, 59, 92, 65, 115, 115,
			101, 116, 115, 92, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 92, 83, 99, 114,
			105, 112, 116, 115, 92, 86, 97, 110, 105, 108,
			108, 97, 84, 101, 109, 112, 108, 97, 116, 101,
			115, 92, 66, 117, 116, 108, 101, 114, 83, 107,
			105, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 61, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 86, 97, 110, 105, 108, 108, 97, 84,
			101, 109, 112, 108, 97, 116, 101, 115, 92, 67,
			111, 105, 108, 104, 101, 97, 100, 83, 107, 105,
			110, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 67, 92, 65, 115, 115, 101, 116, 115, 92,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 92, 83, 99, 114, 105, 112, 116, 115,
			92, 86, 97, 110, 105, 108, 108, 97, 84, 101,
			109, 112, 108, 97, 116, 101, 115, 92, 69, 97,
			114, 116, 104, 76, 101, 118, 105, 97, 116, 104,
			97, 110, 83, 107, 105, 110, 46, 99, 115, 0,
			0, 0, 1, 0, 0, 0, 63, 92, 65, 115,
			115, 101, 116, 115, 92, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 92, 83, 99,
			114, 105, 112, 116, 115, 92, 86, 97, 110, 105,
			108, 108, 97, 84, 101, 109, 112, 108, 97, 116,
			101, 115, 92, 69, 121, 101, 108, 101, 115, 115,
			68, 111, 103, 83, 107, 105, 110, 46, 99, 115,
			0, 0, 0, 1, 0, 0, 0, 65, 92, 65,
			115, 115, 101, 116, 115, 92, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 92, 83,
			99, 114, 105, 112, 116, 115, 92, 86, 97, 110,
			105, 108, 108, 97, 84, 101, 109, 112, 108, 97,
			116, 101, 115, 92, 70, 111, 114, 101, 115, 116,
			75, 101, 101, 112, 101, 114, 83, 107, 105, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			62, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 84, 101, 109,
			112, 108, 97, 116, 101, 115, 92, 71, 104, 111,
			115, 116, 71, 105, 114, 108, 83, 107, 105, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			63, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 84, 101, 109,
			112, 108, 97, 116, 101, 115, 92, 72, 111, 97,
			114, 100, 101, 114, 66, 117, 103, 83, 107, 105,
			110, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 62, 92, 65, 115, 115, 101, 116, 115, 92,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 92, 83, 99, 114, 105, 112, 116, 115,
			92, 86, 97, 110, 105, 108, 108, 97, 84, 101,
			109, 112, 108, 97, 116, 101, 115, 92, 72, 121,
			103, 114, 111, 100, 101, 114, 101, 83, 107, 105,
			110, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 59, 92, 65, 115, 115, 101, 116, 115, 92,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 92, 83, 99, 114, 105, 112, 116, 115,
			92, 86, 97, 110, 105, 108, 108, 97, 84, 101,
			109, 112, 108, 97, 116, 101, 115, 92, 74, 101,
			115, 116, 101, 114, 83, 107, 105, 110, 46, 99,
			115, 0, 0, 0, 1, 0, 0, 0, 65, 92,
			65, 115, 115, 101, 116, 115, 92, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 92,
			83, 99, 114, 105, 112, 116, 115, 92, 86, 97,
			110, 105, 108, 108, 97, 84, 101, 109, 112, 108,
			97, 116, 101, 115, 92, 75, 105, 100, 110, 97,
			112, 112, 101, 114, 70, 111, 120, 83, 107, 105,
			110, 46, 99, 115, 0, 0, 0, 1, 0, 0,
			0, 63, 92, 65, 115, 115, 101, 116, 115, 92,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 92, 83, 99, 114, 105, 112, 116, 115,
			92, 86, 97, 110, 105, 108, 108, 97, 84, 101,
			109, 112, 108, 97, 116, 101, 115, 92, 78, 117,
			116, 99, 114, 97, 99, 107, 101, 114, 83, 107,
			105, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 60, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 86, 97, 110, 105, 108, 108, 97, 84,
			101, 109, 112, 108, 97, 116, 101, 115, 92, 79,
			108, 100, 66, 105, 114, 100, 83, 107, 105, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			62, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 84, 101, 109,
			112, 108, 97, 116, 101, 115, 92, 83, 110, 97,
			114, 101, 70, 108, 101, 97, 83, 107, 105, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			64, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 84, 101, 109,
			112, 108, 97, 116, 101, 115, 92, 83, 112, 111,
			114, 101, 76, 105, 122, 97, 114, 100, 83, 107,
			105, 110, 46, 99, 115, 0, 0, 0, 1, 0,
			0, 0, 60, 92, 65, 115, 115, 101, 116, 115,
			92, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 92, 83, 99, 114, 105, 112, 116,
			115, 92, 86, 97, 110, 105, 108, 108, 97, 84,
			101, 109, 112, 108, 97, 116, 101, 115, 92, 84,
			104, 117, 109, 112, 101, 114, 83, 107, 105, 110,
			46, 99, 115, 0, 0, 0, 1, 0, 0, 0,
			63, 92, 65, 115, 115, 101, 116, 115, 92, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 92, 83, 99, 114, 105, 112, 116, 115, 92,
			86, 97, 110, 105, 108, 108, 97, 84, 101, 109,
			112, 108, 97, 116, 101, 115, 92, 84, 117, 108,
			105, 112, 83, 110, 97, 107, 101, 83, 107, 105,
			110, 46, 99, 115
		};
		result.TypesData = new byte[3724]
		{
			0, 0, 0, 0, 63, 65, 110, 116, 108, 101,
			114, 83, 104, 101, 100, 46, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 46, 65,
			114, 109, 97, 116, 117, 114, 101, 82, 101, 102,
			108, 101, 99, 116, 105, 111, 110, 124, 65, 114,
			109, 97, 116, 117, 114, 101, 77, 97, 112, 71,
			101, 110, 101, 114, 97, 116, 111, 114, 0, 0,
			0, 0, 60, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 46, 65, 114, 109,
			97, 116, 117, 114, 101, 82, 101, 102, 108, 101,
			99, 116, 105, 111, 110, 124, 65, 114, 109, 97,
			116, 117, 114, 101, 82, 101, 102, 108, 101, 99,
			116, 111, 114, 0, 0, 0, 0, 63, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 65, 114, 109, 97, 116, 117, 114, 101,
			82, 101, 102, 108, 101, 99, 116, 105, 111, 110,
			124, 65, 114, 109, 97, 116, 117, 114, 101, 77,
			97, 112, 73, 110, 115, 112, 101, 99, 116, 111,
			114, 0, 0, 0, 0, 52, 65, 110, 116, 108,
			101, 114, 83, 104, 101, 100, 46, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 46,
			83, 107, 105, 110, 65, 99, 116, 105, 111, 110,
			124, 65, 117, 100, 105, 111, 65, 99, 116, 105,
			111, 110, 68, 114, 97, 119, 101, 114, 0, 0,
			0, 0, 56, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 46, 83, 107, 105,
			110, 65, 99, 116, 105, 111, 110, 124, 65, 117,
			100, 105, 111, 76, 105, 115, 116, 65, 99, 116,
			105, 111, 110, 68, 114, 97, 119, 101, 114, 0,
			0, 0, 0, 52, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 124, 68, 101,
			102, 97, 117, 108, 116, 83, 107, 105, 110, 67,
			111, 110, 102, 105, 103, 117, 114, 97, 116, 105,
			111, 110, 86, 105, 101, 119, 0, 0, 0, 0,
			48, 65, 110, 116, 108, 101, 114, 83, 104, 101,
			100, 46, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 124, 68, 101, 102, 97, 117,
			108, 116, 77, 111, 111, 110, 70, 114, 101, 113,
			117, 101, 110, 99, 121, 86, 105, 101, 119, 0,
			0, 0, 0, 50, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 124, 73, 110,
			118, 97, 108, 105, 100, 80, 108, 117, 103, 105,
			110, 78, 97, 109, 101, 69, 120, 99, 101, 112,
			116, 105, 111, 110, 0, 0, 0, 0, 52, 65,
			110, 116, 108, 101, 114, 83, 104, 101, 100, 46,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 124, 73, 110, 118, 97, 108, 105, 100,
			65, 115, 115, 101, 109, 98, 108, 121, 78, 97,
			109, 101, 69, 120, 99, 101, 112, 116, 105, 111,
			110, 0, 0, 0, 0, 49, 65, 110, 116, 108,
			101, 114, 83, 104, 101, 100, 46, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 124,
			73, 110, 118, 97, 108, 105, 100, 78, 97, 109,
			101, 115, 112, 97, 99, 101, 69, 120, 99, 101,
			112, 116, 105, 111, 110, 0, 0, 0, 0, 47,
			65, 110, 116, 108, 101, 114, 83, 104, 101, 100,
			46, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 124, 73, 110, 118, 97, 108, 105,
			100, 77, 111, 100, 78, 97, 109, 101, 69, 120,
			99, 101, 112, 116, 105, 111, 110, 0, 0, 0,
			0, 46, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 124, 73, 110, 118, 97,
			108, 105, 100, 65, 117, 116, 104, 111, 114, 69,
			120, 99, 101, 112, 116, 105, 111, 110, 0, 0,
			0, 0, 47, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 124, 73, 110, 118,
			97, 108, 105, 100, 77, 111, 100, 71, 85, 73,
			68, 69, 120, 99, 101, 112, 116, 105, 111, 110,
			0, 0, 0, 0, 44, 65, 110, 116, 108, 101,
			114, 83, 104, 101, 100, 46, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 124, 73,
			110, 118, 97, 108, 105, 100, 73, 99, 111, 110,
			69, 120, 99, 101, 112, 116, 105, 111, 110, 0,
			0, 0, 0, 55, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 83, 107,
			105, 110, 65, 99, 116, 105, 111, 110, 124, 77,
			97, 116, 101, 114, 105, 97, 108, 65, 99, 116,
			105, 111, 110, 68, 114, 97, 119, 101, 114, 0,
			0, 0, 0, 38, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 124, 83, 107,
			105, 110, 77, 111, 100, 66, 117, 105, 108, 100,
			101, 114, 0, 0, 0, 0, 44, 65, 110, 116,
			108, 101, 114, 83, 104, 101, 100, 46, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			124, 83, 107, 105, 110, 77, 111, 100, 66, 117,
			105, 108, 100, 101, 114, 69, 100, 105, 116, 111,
			114, 0, 0, 0, 0, 17, 124, 83, 116, 97,
			116, 105, 99, 77, 101, 115, 104, 68, 114, 97,
			119, 101, 114, 0, 0, 0, 0, 51, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 83, 107, 105, 110, 65, 99, 116, 105,
			111, 110, 124, 83, 116, 97, 116, 105, 99, 77,
			101, 115, 104, 68, 114, 97, 119, 101, 114, 0,
			0, 0, 0, 36, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 124, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			0, 0, 0, 0, 52, 65, 110, 116, 108, 101,
			114, 83, 104, 101, 100, 46, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 46, 83,
			107, 105, 110, 65, 99, 116, 105, 111, 110, 124,
			83, 107, 105, 110, 110, 101, 100, 77, 101, 115,
			104, 65, 99, 116, 105, 111, 110, 0, 0, 0,
			0, 51, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 46, 83, 107, 105, 110,
			65, 99, 116, 105, 111, 110, 124, 83, 116, 97,
			116, 105, 99, 77, 101, 115, 104, 65, 99, 116,
			105, 111, 110, 0, 0, 0, 0, 49, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 83, 107, 105, 110, 65, 99, 116, 105,
			111, 110, 124, 77, 97, 116, 101, 114, 105, 97,
			108, 65, 99, 116, 105, 111, 110, 0, 0, 0,
			0, 46, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 46, 83, 107, 105, 110,
			65, 99, 116, 105, 111, 110, 124, 65, 117, 100,
			105, 111, 65, 99, 116, 105, 111, 110, 0, 0,
			0, 0, 50, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 46, 83, 107, 105,
			110, 65, 99, 116, 105, 111, 110, 124, 65, 117,
			100, 105, 111, 76, 105, 115, 116, 65, 99, 116,
			105, 111, 110, 0, 0, 0, 0, 42, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 124, 65, 114, 109, 97, 116, 117, 114, 101,
			65, 116, 116, 97, 99, 104, 109, 101, 110, 116,
			0, 0, 0, 0, 49, 65, 110, 116, 108, 101,
			114, 83, 104, 101, 100, 46, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 46, 86,
			97, 110, 105, 108, 108, 97, 124, 66, 97, 98,
			111, 111, 110, 72, 97, 119, 107, 83, 107, 105,
			110, 110, 101, 114, 0, 0, 0, 0, 45, 65,
			110, 116, 108, 101, 114, 83, 104, 101, 100, 46,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 46, 86, 97, 110, 105, 108, 108, 97,
			124, 66, 97, 114, 98, 101, 114, 83, 107, 105,
			110, 110, 101, 114, 0, 0, 0, 0, 43, 65,
			110, 116, 108, 101, 114, 83, 104, 101, 100, 46,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 46, 86, 97, 110, 105, 108, 108, 97,
			124, 66, 97, 115, 101, 83, 107, 105, 110, 110,
			101, 114, 0, 0, 0, 0, 46, 65, 110, 116,
			108, 101, 114, 83, 104, 101, 100, 46, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			46, 86, 97, 110, 105, 108, 108, 97, 124, 66,
			114, 97, 99, 107, 101, 110, 83, 107, 105, 110,
			110, 101, 114, 0, 0, 0, 0, 51, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 86, 97, 110, 105, 108, 108, 97, 124,
			66, 117, 110, 107, 101, 114, 83, 112, 105, 100,
			101, 114, 83, 107, 105, 110, 110, 101, 114, 0,
			0, 0, 0, 45, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 86, 97,
			110, 105, 108, 108, 97, 124, 66, 117, 116, 108,
			101, 114, 83, 107, 105, 110, 110, 101, 114, 0,
			0, 0, 0, 47, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 86, 97,
			110, 105, 108, 108, 97, 124, 67, 111, 105, 108,
			72, 101, 97, 100, 83, 107, 105, 110, 110, 101,
			114, 0, 0, 0, 0, 53, 65, 110, 116, 108,
			101, 114, 83, 104, 101, 100, 46, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 46,
			86, 97, 110, 105, 108, 108, 97, 124, 69, 97,
			114, 116, 104, 76, 101, 118, 105, 97, 116, 104,
			97, 110, 83, 107, 105, 110, 110, 101, 114, 0,
			0, 0, 0, 49, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 86, 97,
			110, 105, 108, 108, 97, 124, 69, 121, 101, 108,
			101, 115, 115, 68, 111, 103, 83, 107, 105, 110,
			110, 101, 114, 0, 0, 0, 0, 51, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 86, 97, 110, 105, 108, 108, 97, 124,
			70, 111, 114, 101, 115, 116, 75, 101, 101, 112,
			101, 114, 83, 107, 105, 110, 110, 101, 114, 0,
			0, 0, 0, 48, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 86, 97,
			110, 105, 108, 108, 97, 124, 71, 104, 111, 115,
			116, 71, 105, 114, 108, 83, 107, 105, 110, 110,
			101, 114, 0, 0, 0, 0, 62, 65, 110, 116,
			108, 101, 114, 83, 104, 101, 100, 46, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			46, 86, 97, 110, 105, 108, 108, 97, 124, 71,
			104, 111, 115, 116, 71, 105, 114, 108, 68, 105,
			115, 97, 112, 112, 101, 97, 114, 69, 118, 101,
			110, 116, 72, 97, 110, 100, 108, 101, 114, 0,
			0, 0, 0, 49, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 86, 97,
			110, 105, 108, 108, 97, 124, 72, 111, 97, 114,
			100, 101, 114, 66, 117, 103, 83, 107, 105, 110,
			110, 101, 114, 0, 0, 0, 0, 48, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 86, 97, 110, 105, 108, 108, 97, 124,
			72, 121, 103, 114, 111, 100, 101, 114, 101, 83,
			107, 105, 110, 110, 101, 114, 0, 0, 0, 0,
			45, 65, 110, 116, 108, 101, 114, 83, 104, 101,
			100, 46, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 46, 86, 97, 110, 105, 108,
			108, 97, 124, 74, 101, 115, 116, 101, 114, 83,
			107, 105, 110, 110, 101, 114, 0, 0, 0, 0,
			51, 65, 110, 116, 108, 101, 114, 83, 104, 101,
			100, 46, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 46, 86, 97, 110, 105, 108,
			108, 97, 124, 75, 105, 100, 110, 97, 112, 112,
			101, 114, 70, 111, 120, 83, 107, 105, 110, 110,
			101, 114, 0, 0, 0, 0, 49, 65, 110, 116,
			108, 101, 114, 83, 104, 101, 100, 46, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			46, 86, 97, 110, 105, 108, 108, 97, 124, 78,
			117, 116, 99, 114, 97, 99, 107, 101, 114, 83,
			107, 105, 110, 110, 101, 114, 0, 0, 0, 0,
			50, 65, 110, 116, 108, 101, 114, 83, 104, 101,
			100, 46, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 46, 86, 97, 110, 105, 108,
			108, 97, 124, 79, 108, 100, 66, 105, 114, 100,
			78, 101, 115, 116, 83, 107, 105, 110, 110, 101,
			114, 0, 0, 0, 0, 46, 65, 110, 116, 108,
			101, 114, 83, 104, 101, 100, 46, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 46,
			86, 97, 110, 105, 108, 108, 97, 124, 79, 108,
			100, 66, 105, 114, 100, 83, 107, 105, 110, 110,
			101, 114, 0, 0, 0, 0, 48, 65, 110, 116,
			108, 101, 114, 83, 104, 101, 100, 46, 69, 110,
			101, 109, 121, 83, 107, 105, 110, 75, 105, 116,
			46, 86, 97, 110, 105, 108, 108, 97, 124, 83,
			110, 97, 114, 101, 70, 108, 101, 97, 83, 107,
			105, 110, 110, 101, 114, 0, 0, 0, 0, 50,
			65, 110, 116, 108, 101, 114, 83, 104, 101, 100,
			46, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 46, 86, 97, 110, 105, 108, 108,
			97, 124, 83, 112, 111, 114, 101, 76, 105, 122,
			97, 114, 100, 83, 107, 105, 110, 110, 101, 114,
			0, 0, 0, 0, 46, 65, 110, 116, 108, 101,
			114, 83, 104, 101, 100, 46, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 46, 86,
			97, 110, 105, 108, 108, 97, 124, 84, 104, 117,
			109, 112, 101, 114, 83, 107, 105, 110, 110, 101,
			114, 0, 0, 0, 0, 49, 65, 110, 116, 108,
			101, 114, 83, 104, 101, 100, 46, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 46,
			86, 97, 110, 105, 108, 108, 97, 124, 84, 117,
			108, 105, 112, 83, 110, 97, 107, 101, 83, 107,
			105, 110, 110, 101, 114, 0, 0, 0, 0, 46,
			65, 110, 116, 108, 101, 114, 83, 104, 101, 100,
			46, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 46, 86, 97, 110, 105, 108, 108,
			97, 124, 66, 97, 98, 111, 111, 110, 72, 97,
			119, 107, 83, 107, 105, 110, 0, 0, 0, 0,
			42, 65, 110, 116, 108, 101, 114, 83, 104, 101,
			100, 46, 69, 110, 101, 109, 121, 83, 107, 105,
			110, 75, 105, 116, 46, 86, 97, 110, 105, 108,
			108, 97, 124, 66, 97, 114, 98, 101, 114, 83,
			107, 105, 110, 0, 0, 0, 0, 40, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 86, 97, 110, 105, 108, 108, 97, 124,
			66, 97, 115, 101, 83, 107, 105, 110, 0, 0,
			0, 0, 44, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 46, 86, 97, 110,
			105, 108, 108, 97, 124, 66, 97, 115, 101, 78,
			101, 115, 116, 83, 107, 105, 110, 0, 0, 0,
			0, 43, 65, 110, 116, 108, 101, 114, 83, 104,
			101, 100, 46, 69, 110, 101, 109, 121, 83, 107,
			105, 110, 75, 105, 116, 46, 86, 97, 110, 105,
			108, 108, 97, 124, 66, 114, 97, 99, 107, 101,
			110, 83, 107, 105, 110, 0, 0, 0, 0, 48,
			65, 110, 116, 108, 101, 114, 83, 104, 101, 100,
			46, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 46, 86, 97, 110, 105, 108, 108,
			97, 124, 66, 117, 110, 107, 101, 114, 83, 112,
			105, 100, 101, 114, 83, 107, 105, 110, 0, 0,
			0, 0, 42, 65, 110, 116, 108, 101, 114, 83,
			104, 101, 100, 46, 69, 110, 101, 109, 121, 83,
			107, 105, 110, 75, 105, 116, 46, 86, 97, 110,
			105, 108, 108, 97, 124, 66, 117, 116, 108, 101,
			114, 83, 107, 105, 110, 0, 0, 0, 0, 44,
			65, 110, 116, 108, 101, 114, 83, 104, 101, 100,
			46, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 46, 86, 97, 110, 105, 108, 108,
			97, 124, 67, 111, 105, 108, 104, 101, 97, 100,
			83, 107, 105, 110, 0, 0, 0, 0, 50, 65,
			110, 116, 108, 101, 114, 83, 104, 101, 100, 46,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 46, 86, 97, 110, 105, 108, 108, 97,
			124, 69, 97, 114, 116, 104, 76, 101, 118, 105,
			97, 116, 104, 97, 110, 83, 107, 105, 110, 0,
			0, 0, 0, 46, 65, 110, 116, 108, 101, 114,
			83, 104, 101, 100, 46, 69, 110, 101, 109, 121,
			83, 107, 105, 110, 75, 105, 116, 46, 86, 97,
			110, 105, 108, 108, 97, 124, 69, 121, 101, 108,
			101, 115, 115, 68, 111, 103, 83, 107, 105, 110,
			0, 0, 0, 0, 48, 65, 110, 116, 108, 101,
			114, 83, 104, 101, 100, 46, 69, 110, 101, 109,
			121, 83, 107, 105, 110, 75, 105, 116, 46, 86,
			97, 110, 105, 108, 108, 97, 124, 70, 111, 114,
			101, 115, 116, 75, 101, 101, 112, 101, 114, 83,
			107, 105, 110, 0, 0, 0, 0, 45, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 86, 97, 110, 105, 108, 108, 97, 124,
			71, 104, 111, 115, 116, 71, 105, 114, 108, 83,
			107, 105, 110, 0, 0, 0, 0, 46, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 86, 97, 110, 105, 108, 108, 97, 124,
			72, 111, 97, 114, 100, 101, 114, 66, 117, 103,
			83, 107, 105, 110, 0, 0, 0, 0, 45, 65,
			110, 116, 108, 101, 114, 83, 104, 101, 100, 46,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 46, 86, 97, 110, 105, 108, 108, 97,
			124, 72, 121, 103, 114, 111, 100, 101, 114, 101,
			83, 107, 105, 110, 0, 0, 0, 0, 42, 65,
			110, 116, 108, 101, 114, 83, 104, 101, 100, 46,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 46, 86, 97, 110, 105, 108, 108, 97,
			124, 74, 101, 115, 116, 101, 114, 83, 107, 105,
			110, 0, 0, 0, 0, 48, 65, 110, 116, 108,
			101, 114, 83, 104, 101, 100, 46, 69, 110, 101,
			109, 121, 83, 107, 105, 110, 75, 105, 116, 46,
			86, 97, 110, 105, 108, 108, 97, 124, 75, 105,
			100, 110, 97, 112, 112, 101, 114, 70, 111, 120,
			83, 107, 105, 110, 0, 0, 0, 0, 46, 65,
			110, 116, 108, 101, 114, 83, 104, 101, 100, 46,
			69, 110, 101, 109, 121, 83, 107, 105, 110, 75,
			105, 116, 46, 86, 97, 110, 105, 108, 108, 97,
			124, 78, 117, 116, 99, 114, 97, 99, 107, 101,
			114, 83, 107, 105, 110, 0, 0, 0, 0, 43,
			65, 110, 116, 108, 101, 114, 83, 104, 101, 100,
			46, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 46, 86, 97, 110, 105, 108, 108,
			97, 124, 79, 108, 100, 66, 105, 114, 100, 83,
			107, 105, 110, 0, 0, 0, 0, 45, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 86, 97, 110, 105, 108, 108, 97, 124,
			83, 110, 97, 114, 101, 70, 108, 101, 97, 83,
			107, 105, 110, 0, 0, 0, 0, 47, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 86, 97, 110, 105, 108, 108, 97, 124,
			83, 112, 111, 114, 101, 76, 105, 122, 97, 114,
			100, 83, 107, 105, 110, 0, 0, 0, 0, 43,
			65, 110, 116, 108, 101, 114, 83, 104, 101, 100,
			46, 69, 110, 101, 109, 121, 83, 107, 105, 110,
			75, 105, 116, 46, 86, 97, 110, 105, 108, 108,
			97, 124, 84, 104, 117, 109, 112, 101, 114, 83,
			107, 105, 110, 0, 0, 0, 0, 46, 65, 110,
			116, 108, 101, 114, 83, 104, 101, 100, 46, 69,
			110, 101, 109, 121, 83, 107, 105, 110, 75, 105,
			116, 46, 86, 97, 110, 105, 108, 108, 97, 124,
			84, 117, 108, 105, 112, 83, 110, 97, 107, 101,
			83, 107, 105, 110
		};
		result.TotalFiles = 58;
		result.TotalTypes = 71;
		result.IsEditorOnly = false;
		return result;
	}
}
namespace AntlerShed.EnemySkinKit
{
	[Serializable]
	internal struct DefaultSkinConfigurationView
	{
		public string skinId;

		public DefaultMoonFrequencyView[] defaultEntries;

		public float defaultFrequency;

		public float vanillaFallbackFrequency;
	}
	[Serializable]
	internal struct DefaultMoonFrequencyView
	{
		public string moonId;

		public float frequency;
	}
	internal class InvalidPluginNameException : Exception
	{
		internal InvalidPluginNameException()
			: base("The given mod name created an invalid plugin name. The mod name must contain at least one alphabetical character.")
		{
		}
	}
	internal class InvalidAssemblyNameException : Exception
	{
		internal InvalidAssemblyNameException()
			: base("The given mod name is an invalid assembly name. The mod name must have at least one alphabetical character.")
		{
		}
	}
	internal class InvalidNamespaceException : Exception
	{
		internal InvalidNamespaceException()
			: base("The given mod name and author created an invalid namespace. The mod name and author must each contain at least one aphabetical character in order to generate a valid namespace identifier.")
		{
		}
	}
	internal class InvalidModNameException : Exception
	{
		internal InvalidModNameException()
			: base("Given mod name was empty or only contained whitespace.")
		{
		}
	}
	internal class InvalidAuthorException : Exception
	{
		internal InvalidAuthorException()
			: base("Given author was empty or only contained whitespace.")
		{
		}
	}
	internal class InvalidModGUIDException : Exception
	{
		internal InvalidModGUIDException()
			: base("Mod GUID and either the author or the mod name were not specified or only contain whitespace.")
		{
		}
	}
	internal class InvalidIconException : Exception
	{
		internal InvalidIconException()
			: base("Icon must be a png file of size 256 x 256.")
		{
		}
	}
	[CreateAssetMenu(fileName = "SkinMod", menuName = "EnemySkinKit/Mod", order = 1)]
	public class SkinModBuilder : ScriptableObject
	{
		[SerializeField]
		[Tooltip("The name of the mod")]
		private string modName;

		[SerializeField]
		[Tooltip("The name of the mod's author")]
		private string author;

		[SerializeField]
		[Tooltip("Optional place to specify an explicit mod GUID. If not speficied, the GUID will be \"<ModName>.<ModAuthor>\"")]
		private string modGUID;

		[SerializeField]
		[Tooltip("ReadMe file. This will be the text content of your mod's ThunderStore page. Talk about your mod in detail here.")]
		private TextAsset readMe;

		[SerializeField]
		[Tooltip("The icon of your mod that will appear on your mod's Thunderstore page and in the Thunderstore mod manager.")]
		private Texture2D icon;

		[SerializeField]
		[Tooltip("The major version of your mod. Start at one and add one every time you make a change that will break something if someone else depends on your mod (probably never, so this should be 1 in most cases).")]
		private uint major;

		[SerializeField]
		[Tooltip("The minor version of your mod. Start at zero and add one every time you add a new feature, like a new skin. Go back to zero if you update the major version.")]
		private uint minor;

		[SerializeField]
		[Tooltip("The patch part of your mod version. Start at zero and add one every time you make a change that fixes a problem with your mod. Reset to zero when updating the minor or major version.")]
		private uint patch;

		[SerializeField]
		[Tooltip("A short description of your mod that just tells people what it is. Shouldn't be more than a sentence or two.")]
		private string description;

		[SerializeField]
		[Tooltip("The skins that will be packaged with your mod.")]
		private BaseSkin[] skins;

		[SerializeField]
		[Tooltip("Any default configurations to include with your mod")]
		private DefaultSkinConfigurationView[] configs;

		private const string ASSET_BUNDLE_NAME = "SkinAssets";

		private const string PLUGINS_FOLDER = "plugins";

		private const string ASSETS_FOLDER = "AssetBundles";

		private const string STAGING_FOLDER_SUFFIX = "Staging";

		private const string BUILD_FOLDER = "EnemySkinKit";

		private static readonly Regex whitespace = new Regex("\\s");

		private static readonly Regex wordDelim = new Regex("[\\s_-][\\w]");

		private static readonly Regex cSharpInvalid = new Regex("[^\\w\\d]");

		private static readonly Regex fileNameInvalid = new Regex("[^\\w\\d_-]");

		private static readonly Regex leadingDigits = new Regex("^\\d+");

		private static readonly Regex validClassName = new Regex("\\w+[\\w\\d]*");

		private string sanitizedAssemblyName;

		private string sanitizedModName;

		private string stagingPath;

		private string pluginPath;

		private string assetsPath;

		private string sourceCodeFilePath;

		private string assemblyFilePath;

		public void BuildMod(string author, string modName, string modGUID, string description, TextAsset readMe, Texture2D icon, uint major, uint minor, uint patch, BaseSkin[] skins)
		{
			//IL_026b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0300: Unknown result type (might be due to invalid IL or missing references)
			//IL_0310: Unknown result type (might be due to invalid IL or missing references)
			//IL_0312: Unknown result type (might be due to invalid IL or missing references)
			//IL_0335: Unknown result type (might be due to invalid IL or missing references)
			if (!Directory.Exists("EnemySkinKit"))
			{
				Directory.CreateDirectory("EnemySkinKit");
			}
			if ((Object)(object)icon == (Object)null || !AssetDatabase.GetAssetPath((Object)(object)icon).EndsWith(".png") || ((Texture)icon).width != 256 || ((Texture)icon).height != 256)
			{
				throw new InvalidIconException();
			}
			sanitizedModName = modName.Replace(" ", "_");
			sanitizedModName = fileNameInvalid.Replace(sanitizedModName, "");
			string input = author.Replace(" ", "_");
			input = fileNameInvalid.Replace(input, "");
			string value = (string.IsNullOrEmpty(modGUID) ? (input + "." + sanitizedModName) : whitespace.Replace(modGUID, ""));
			string text = convertToValidCSharpName(sanitizedModName + "Plugin");
			string text2 = convertToValidCSharpName(input) + ".LethalCompany." + convertToValidCSharpName(sanitizedModName);
			sanitizedAssemblyName = convertToValidCSharpName(sanitizedModName);
			if (string.IsNullOrEmpty(input))
			{
				throw new InvalidAuthorException();
			}
			if (string.IsNullOrEmpty(value))
			{
				throw new InvalidModGUIDException();
			}
			if (string.IsNullOrEmpty(text))
			{
				throw new InvalidPluginNameException();
			}
			if (text2.Split(".").Any((string section) => string.IsNullOrEmpty(section)))
			{
				throw new InvalidNamespaceException();
			}
			if (string.IsNullOrEmpty(sanitizedAssemblyName))
			{
				throw new InvalidAssemblyNameException();
			}
			if (string.IsNullOrEmpty(sanitizedModName))
			{
				throw new InvalidModNameException();
			}
			Debug.Log((object)createSkinModSource(value, sanitizedModName, "BundleName", major, minor, patch, text, text2, skins, configs));
			stagingPath = Path.Combine("Assets", sanitizedModName + "Staging");
			pluginPath = Path.Combine(new string[3] { stagingPath, "plugins", sanitizedModName });
			assetsPath = Path.Combine(pluginPath, "AssetBundles");
			if (Directory.Exists(stagingPath))
			{
				Directory.Delete(stagingPath, recursive: true);
			}
			Directory.CreateDirectory(assetsPath);
			string text3 = input + "_" + sanitizedModName + "_SkinAssets";
			AssetBundleBuild val = default(AssetBundleBuild);
			val.assetBundleName = text3;
			val.assetNames = (from path in skins.Select((BaseSkin skin) => AssetDatabase.GetDependencies(AssetDatabase.GetAssetPath((Object)(object)skin), true)).Aggregate(new List<string>(), (List<string> list, string[] paths) => list.Concat(paths).ToList())
				where !path.EndsWith(".cs") && !path.EndsWith(".asm") && !path.EndsWith(".dll")
				select path).ToHashSet().ToArray();
			BuildAssetBundlesParameters val2 = default(BuildAssetBundlesParameters);
			((BuildAssetBundlesParameters)(ref val2)).bundleDefinitions = (AssetBundleBuild[])(object)new AssetBundleBuild[1] { val };
			((BuildAssetBundlesParameters)(ref val2)).options = (BuildAssetBundleOptions)32768;
			((BuildAssetBundlesParameters)(ref val2)).outputPath = assetsPath;
			BuildPipeline.BuildAssetBundles(val2);
			using (StreamWriter streamWriter = new StreamWriter(Path.Combine(stagingPath, "README.md"), append: false))
			{
				streamWriter.WriteLine(((Object)(object)readMe == (Object)null) ? "" : readMe.text);
			}
			using (StreamWriter streamWriter2 = new StreamWriter(Path.Combine(stagingPath, "manifest.json"), append: false))
			{
				streamWriter2.WriteLine(createThunderstoreManifest(sanitizedModName, input, description, major, minor, patch));
			}
			File.Copy(AssetDatabase.GetAssetPath((Object)(object)icon), Path.Combine(stagingPath, "icon.png"));
			sourceCodeFilePath = Path.Combine(pluginPath, text + ".cs");
			using (StreamWriter streamWriter3 = new StreamWriter(sourceCodeFilePath, append: false))
			{
				streamWriter3.WriteLine(createSkinModSource(value, sanitizedModName, text3, major, minor, patch, text, text2, skins, configs));
			}
			assemblyFilePath = Path.Combine(pluginPath, sanitizedAssemblyName + ".asmdef");
			using (StreamWriter streamWriter4 = new StreamWriter(assemblyFilePath, append: false))
			{
				streamWriter4.WriteLine(createAssemblyDefinitionSource(sanitizedAssemblyName, text2));
			}
			AssetDatabase.ImportAsset(sourceCodeFilePath);
			AssetDatabase.ImportAsset(assemblyFilePath);
			CompilationPipeline.compilationFinished += onCompilationFinished;
			CompilationPipeline.assemblyCompilationFinished += onAssemblyCompilationFinished;
		}

		private void onAssemblyCompilationFinished(string assemblyPath, CompilerMessage[] messages)
		{
			if (assemblyPath.EndsWith(sanitizedAssemblyName + ".dll"))
			{
				AssetDatabase.DeleteAsset(sourceCodeFilePath);
				AssetDatabase.DeleteAsset(assemblyFilePath);
				File.Copy(assemblyPath, Path.Combine(pluginPath, Path.GetFileName(assemblyPath)));
				string text = Path.Combine("EnemySkinKit", sanitizedModName + ".zip");
				if (File.Exists(text))
				{
					File.Delete(text);
				}
				ZipFile.CreateFromDirectory(stagingPath, text);
				AssetDatabase.DeleteAsset(stagingPath);
			}
		}

		private void onCompilationFinished(object eventStore)
		{
			CompilationPipeline.assemblyCompilationFinished -= onAssemblyCompilationFinished;
			CompilationPipeline.compilationFinished -= onCompilationFinished;
		}

		public void BuildMod()
		{
			BuildMod(author, modName, modGUID, description, readMe, icon, major, minor, patch, skins);
		}

		private string createDefaultSkinConfigSource(DefaultSkinConfigurationView defaultConfig)
		{
			string text = "";
			for (int i = 0; i < defaultConfig.defaultEntries.Length - 1; i++)
			{
				text = text + createDefaultSkinConfigEntrySource(defaultConfig.defaultEntries[i]) + ", ";
			}
			if (defaultConfig.defaultEntries.Length != 0)
			{
				text += createDefaultSkinConfigEntrySource(defaultConfig.defaultEntries[defaultConfig.defaultEntries.Length - 1]);
			}
			return $"new DefaultSkinConfigData(new DefaultSkinConfigEntry[] {{ {text} }}, {Math.Clamp(defaultConfig.defaultFrequency, 0f, 1f)}f, {Math.Clamp(defaultConfig.vanillaFallbackFrequency, 0f, 1f)}f)";
		}

		private string createDefaultSkinConfigEntrySource(DefaultMoonFrequencyView defaultConfig)
		{
			return $"new DefaultSkinConfigEntry(\"{defaultConfig.moonId}\", {defaultConfig.frequency}f)";
		}

		private string createTemplateSkinEntrySource(BaseSkin skin, DefaultSkinConfigurationView? defaultConfig)
		{
			return "EnemySkinRegistry.RegisterSkin(bundle.LoadAsset<" + ((object)skin).GetType().Name + ">(\"" + AssetDatabase.GetAssetPath((Object)(object)skin) + "\")" + ((!defaultConfig.HasValue) ? "" : (", " + createDefaultSkinConfigSource(defaultConfig.Value))) + ");" + ((skin is BaseNestSkin) ? ("\nEnemySkinRegistry.RegisterNestSkin(bundle.LoadAsset<" + ((object)skin).GetType().Name + ">(\"" + AssetDatabase.GetAssetPath((Object)(object)skin) + "\"));") : "");
		}

		private string createSkinModSource(string modGUID, string modName, string bundleName, uint major, uint minor, uint patch, string pluginClassName, string namespaceText, BaseSkin[] skins, DefaultSkinConfigurationView[] configs)
		{
			return "//This is generated code and shouldn't be modified unless it's taken out of its original environment\nusing AntlerShed.EnemySkinKit;\nusing AntlerShed.EnemySkinKit.Vanilla;\nusing AntlerShed.SkinRegistry;\nusing BepInEx;\nusing System.Reflection;\nusing UnityEngine;\nnamespace " + namespaceText + "\n{\n" + $"\t[BepInPlugin(\"{modGUID}\", \"{modName}\", \"{major}.{minor}.{patch}\")]\n" + "\t[BepInDependency(\"AntlerShed.LethalCompany.EnemySkinKit\")]\n\t[BepInDependency(\"antlershed.lethalcompany.enemyskinregistry\")]\n\tpublic class " + pluginClassName + " : BaseUnityPlugin\n\t{\n\t\tpublic const string modGUID = \"" + modGUID + "\";\n\t\tpublic const string modName = \"" + modName + "\";\n" + $"\t\tpublic const string modVersion = \"{major}.{minor}.{patch}\";\n" + "\t\tvoid Awake()\n\t\t{\n\t\t\tAssetBundle bundle = AssetBundle.LoadFromFile\n\t\t\t(\n\t\t\t\tSystem.IO.Path.Combine\n\t\t\t\t(\n\t\t\t\t\tSystem.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),\n\t\t\t\t\t\"AssetBundles/" + bundleName + "\"\n\t\t\t\t)\n\t\t\t);\n" + skins.Select((BaseSkin skin) => "\t\t\t" + createTemplateSkinEntrySource(skin, configs.Any((DefaultSkinConfigurationView cfg) => cfg.skinId.Equals(skin.Id)) ? new DefaultSkinConfigurationView?(configs.First((DefaultSkinConfigurationView cfg) => cfg.skinId.Equals(skin.Id))) : null)).Aggregate("", (string str, string line) => str + line) + "\n\t\t}\n\t}\n}";
		}

		private string createAssemblyDefinitionSource(string assemblyName, string namespaceText)
		{
			return "{\n\"name\": \"" + assemblyName + "\",\n\t\"rootNamespace\": \"" + namespaceText + "\",\n\t\"references\": [],\n\t\"includePlatforms\": [],\n\t\"excludePlatforms\": [],\n\t\"allowUnsafeCode\": false,\n\t\"overrideReferences\": true,\n\t\"precompiledReferences\": \n\t[\n\t\t\"BepInEx.dll\",\n\t\t\"EnemySkinRegistry.dll\",\n\t\t\"EnemySkinKit.dll\"\n \t],\n\t\"autoReferenced\": true,\n\t\"defineConstraints\": [],\n\t\"versionDefines\": [],\n\t\"noEngineReferences\": false\n}";
		}

		private string createThunderstoreManifest(string modName, string author, string description, uint major, uint minor, uint patch)
		{
			return "{\n\t\"name\": \"" + modName + "\",\n\t\"author\": \"" + author + "\",\n" + $"\t\"version_number\": \"{major}.{minor}.{patch}\",\n" + "\t\"website_url\": \"\",\n\t\"description\": \"" + description + "\",\n\t\"dependencies\": [\"AntlerShed-EnemySkinKit-1.0.5\"]\n}";
		}

		private string convertToValidCSharpName(string name)
		{
			string text = leadingDigits.Replace(cSharpInvalid.Replace(wordDelim.Replace(name, (Match match) => match.ToString().ToUpper()), ""), "");
			if (!validClassName.IsMatch(text))
			{
				return null;
			}
			return text;
		}
	}
	[CustomEditor(typeof(SkinModBuilder))]
	internal class SkinModBuilderEditor : Editor
	{
		public override VisualElement CreateInspectorGUI()
		{
			//IL_0000: Unknown result type (might be due to invalid IL or missing references)
			//IL_0005: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Expected O, but got Unknown
			//IL_0027: Unknown result type (might be due to invalid IL or missing references)
			//IL_0031: Expected O, but got Unknown
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Expected O, but got Unknown
			//IL_005d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Expected O, but got Unknown
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Expected O, but got Unknown
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Expected O, but got Unknown
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b8: Expected O, but got Unknown
			//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: Expected O, but got Unknown
			//IL_00da: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Expected O, but got Unknown
			//IL_00f5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Expected O, but got Unknown
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Expected O, but got Unknown
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_0139: Unknown result type (might be due to invalid IL or missing references)
			//IL_0143: Expected O, but got Unknown
			//IL_0143: Unknown result type (might be due to invalid IL or missing references)
			//IL_0154: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Expected O, but got Unknown
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0164: Expected O, but got Unknown
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_0189: Expected O, but got Unknown
			VisualElement val = new VisualElement();
			Foldout val2 = new Foldout();
			val2.text = "Mod Info";
			((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("modName")));
			((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("author")));
			((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("modGUID")));
			((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("description")));
			((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("readMe")));
			((VisualElement)val2).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("icon")));
			Foldout val3 = new Foldout();
			val3.text = "Version";
			((VisualElement)val3).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("major")));
			((VisualElement)val3).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("minor")));
			((VisualElement)val3).Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("patch")));
			((VisualElement)val2).Add((VisualElement)(object)val3);
			val.Add((VisualElement)(object)val2);
			val.Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("skins")));
			val.Add((VisualElement)new PropertyField(((Editor)this).serializedObject.FindProperty("configs")));
			Button val4 = new Button();
			((TextElement)val4).text = "Generate Mod Files";
			val4.clicked += genModFiles;
			val.Add((VisualElement)(object)val4);
			return val;
		}

		private void genModFiles()
		{
			(((Editor)this).target as SkinModBuilder).BuildMod();
		}
	}
	[BepInPlugin("AntlerShed.LethalCompany.EnemySkinKit", "Vanilla Enemy Skin Kit", "1.0.5")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public sealed class EnemySkinKit : BaseUnityPlugin
	{
		public const string modGUID = "AntlerShed.LethalCompany.EnemySkinKit";

		public const string modName = "Vanilla Enemy Skin Kit";

		public const string modVersion = "1.0.5";

		private static ConfigEntry<LogLevel> logLevel;

		internal static ManualLogSource SkinKitLogger { get; private set; } = Logger.CreateLogSource("AntlerShed.LethalCompany.EnemySkinKit");


		internal static LogLevel LogLevelSetting => logLevel.Value;

		private void Awake()
		{
			logLevel = ((BaseUnityPlugin)this).Config.Bind<LogLevel>("LogLevel", "Logging", LogLevel.ERROR, "Verbosity setting of the logger.");
		}
	}
	internal enum LogLevel
	{
		NONE,
		ERROR,
		WARN,
		INFO
	}
	[Serializable]
	public struct ArmatureAttachment
	{
		public string boneId;

		public GameObject attachment;

		public Vector3 location;

		public Vector3 rotation;

		public Vector3 scale;

		public static List<GameObject> ApplyAttachments(ArmatureAttachment[] attachments, SkinnedMeshRenderer renderer)
		{
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			if ((Object)(object)renderer != (Object)null)
			{
				List<GameObject> list = new List<GameObject>();
				for (int i = 0; i < attachments.Length; i++)
				{
					ArmatureAttachment attachment = attachments[i];
					try
					{
						Transform val = renderer.bones.First((Transform tf) => ((Object)tf).name.Equals(attachment.boneId));
						GameObject val2 = Object.Instantiate<GameObject>(attachment.attachment, val);
						val2.transform.localPosition = attachment.location;
						val2.transform.localRotation = Quaternion.Euler(attachment.rotation);
						val2.transform.localScale = attachment.scale;
						list.Add(val2);
					}
					catch (Exception ex)
					{
						if (EnemySkinKit.LogLevelSetting >= LogLevel.ERROR)
						{
							EnemySkinKit.SkinKitLogger.LogError((object)ex.StackTrace);
						}
					}
				}
				return list;
			}
			return new List<GameObject>();
		}

		public static void RemoveAttachments(List<GameObject> attachments)
		{
			foreach (GameObject attachment in attachments)
			{
				Object.Destroy((Object)(object)attachment);
			}
		}
	}
}
namespace AntlerShed.EnemySkinKit.Vanilla
{
	public class BaboonHawkSkinner : BaseSkinner, BaboonHawkEventHandler, EnemyEventHandler
	{
		protected const string LOD0_PATH = "BaboonBirdModel/BodyLOD0";

		protected const string LOD1_PATH = "BaboonBirdModel/BodyLOD1";

		protected const string LOD2_PATH = "BaboonBirdModel/BodyLOD2";

		protected const string ANCHOR_PATH = "BaboonBirdModel/AnimContainer/metarig";

		protected const string ANIM_EFFECTS_PATH = "BaboonBirdModel/AnimContainer";

		protected Material vanillaBodyMaterial;

		protected AudioClip[] vanillaScreamAudio;

		protected AudioClip[] vanillaLaughAudio;

		protected AudioClip vanillaIntimidateAudio;

		protected AudioClip vanillaIntimidateVoice;

		protected AudioClip vanillaEnterFightAudio;

		protected AudioClip vanillaKillPlayerAudio;

		protected AudioClip vanillaStabAudio;

		protected AudioClip vanillaDeathAudio;

		protected AudioClip vanillaHitBodyAudio;

		protected AudioClip[] vanillaFootstepsAudio;

		protected List<GameObject> activeAttachments;

		protected AudioSource modCreatureEffects;

		protected AudioSource modCreatureVoice;

		protected AudioSource modAggressionAudio;

		protected MaterialAction BodyMaterialAction { get; }

		protected SkinnedMeshAction BodyMeshAction { get; }

		protected AudioListAction ScreamAudioAction { get; }

		protected AudioListAction LaughAudioAction { get; }

		protected AudioAction IntimidateAction { get; }

		protected AudioAction IntimidateVoiceAction { get; }

		protected AudioAction EnterFightAction { get; }

		protected AudioAction KillPlayerAudioAction { get; }

		protected AudioAction StabAudioAction { get; }

		protected AudioAction DeathAudioAction { get; }

		protected AudioAction HitBodyAudioAction { get; }

		protected AudioListAction FootstepsAudioAction { get; }

		protected ArmatureAttachment[] Attachments { get; }

		protected bool VoiceSilenced
		{
			get
			{
				if (IntimidateVoiceAction.actionType == AudioActionType.RETAIN)
				{
					return KillPlayerAudioAction.actionType != AudioActionType.RETAIN;
				}
				return true;
			}
		}

		protected bool EffectsSilenced
		{
			get
			{
				if (StabAudioAction.actionType == AudioActionType.RETAIN)
				{
					return HitBodyAudioAction.actionType != AudioActionType.RETAIN;
				}
				return true;
			}
		}

		protected bool AggressionSilenced
		{
			get
			{
				if (EnterFightAction.actionType == AudioActionType.RETAIN)
				{
					return IntimidateAction.actionType != AudioActionType.RETAIN;
				}
				return true;
			}
		}

		public BaboonHawkSkinner(ArmatureAttachment[] attachments, MaterialAction bodyMaterialAction, SkinnedMeshAction bodyMeshAction, AudioListAction screamAction, AudioListAction laughAction, AudioAction intimidateAudioAction, AudioAction intimidateVoiceAction, AudioAction enterFightAction, AudioAction killPlayerAudioAction, AudioAction stabAudioAction, AudioAction deathAudioAction, AudioAction hitBodyAudioAction, AudioListAction footstepsAudioAction)
		{
			BodyMaterialAction = bodyMaterialAction;
			BodyMeshAction = bodyMeshAction;
			ScreamAudioAction = screamAction;
			LaughAudioAction = laughAction;
			Attachments = attachments;
			IntimidateAction = intimidateAudioAction;
			IntimidateVoiceAction = intimidateVoiceAction;
			EnterFightAction = enterFightAction;
			KillPlayerAudioAction = killPlayerAudioAction;
			StabAudioAction = stabAudioAction;
			DeathAudioAction = deathAudioAction;
			HitBodyAudioAction = hitBodyAudioAction;
			FootstepsAudioAction = footstepsAudioAction;
		}

		public override void Apply(GameObject enemy)
		{
			BaboonBirdAI component = enemy.GetComponent<BaboonBirdAI>();
			Transform obj = enemy.transform.Find("BaboonBirdModel/AnimContainer");
			object obj2;
			if (obj == null)
			{
				obj2 = null;
			}
			else
			{
				GameObject gameObject = ((Component)obj).gameObject;
				obj2 = ((gameObject != null) ? gameObject.GetComponent<BaboonHawkAudioEvents>() : null);
			}
			BaboonHawkAudioEvents val = (BaboonHawkAudioEvents)obj2;
			if (VoiceSilenced)
			{
				modCreatureVoice = BaseSkinner.CreateModdedAudioSource(((EnemyAI)component).creatureVoice, "modVoice");
				((EnemyAI)component).creatureVoice.mute = true;
			}
			if (EffectsSilenced)
			{
				modCreatureEffects = BaseSkinner.CreateModdedAudioSource(((EnemyAI)component).creatureSFX, "modEffects");
				((EnemyAI)component).creatureSFX.mute = true;
				if ((Object)(object)val != (Object)null)
				{
					val.audioToPlay = modCreatureEffects;
				}
			}
			if (AggressionSilenced)
			{
				modAggressionAudio = BaseSkinner.CreateModdedAudioSource(component.aggressionAudio, "modAggressionAudio");
				component.aggressionAudio.mute = true;
			}
			ArmatureAttachment[] attachments = Attachments;
			Transform obj3 = enemy.transform.Find("BaboonBirdModel/BodyLOD0");
			object renderer;
			if (obj3 == null)
			{
				renderer = null;
			}
			else
			{
				GameObject gameObject2 = ((Component)obj3).gameObject;
				renderer = ((gameObject2 != null) ? gameObject2.GetComponent<SkinnedMeshRenderer>() : null);
			}
			activeAttachments = ArmatureAttachment.ApplyAttachments(attachments, (SkinnedMeshRenderer)renderer);
			MaterialAction bodyMaterialAction = BodyMaterialAction;
			Transform obj4 = enemy.transform.Find("BaboonBirdModel/BodyLOD0");
			vanillaBodyMaterial = bodyMaterialAction.Apply((obj4 != null) ? ((Component)obj4).gameObject.GetComponent<Renderer>() : null, 0);
			bodyMaterialAction = BodyMaterialAction;
			Transform obj5 = enemy.transform.Find("BaboonBirdModel/BodyLOD1");
			bodyMaterialAction.Apply((obj5 != null) ? ((Component)obj5).gameObject.GetComponent<Renderer>() : null, 0);
			bodyMaterialAction = BodyMaterialAction;
			Transform obj6 = enemy.transform.Find("BaboonBirdModel/BodyLOD2");
			bodyMaterialAction.Apply((obj6 != null) ? ((Component)obj6).gameObject.GetComponent<Renderer>() : null, 0);
			vanillaScreamAudio = ScreamAudioAction.Apply(ref component.cawScreamSFX);
			vanillaLaughAudio = LaughAudioAction.Apply(ref component.cawLaughSFX);
			if ((Object)(object)val != (Object)null)
			{
				vanillaFootstepsAudio = FootstepsAudioAction.Apply(ref val.randomClips);
			}
			vanillaIntimidateVoice = ((EnemyAI)component).enemyType.audioClips[1];
			vanillaIntimidateAudio = ((EnemyAI)component).enemyType.audioClips[2];
			vanillaEnterFightAudio = ((EnemyAI)component).enemyType.audioClips[3];
			vanillaKillPlayerAudio = ((EnemyAI)component).enemyType.audioClips[4];
			vanillaDeathAudio = ((EnemyAI)component).enemyType.audioClips[5];
			SkinnedMeshAction bodyMeshAction = BodyMeshAction;
			SkinnedMeshRenderer[] array = new SkinnedMeshRenderer[3];
			Transform obj7 = enemy.transform.Find("BaboonBirdModel/BodyLOD0");
			object obj8;
			if (obj7 == null)
			{
				obj8 = null;
			}
			else
			{
				GameObject gameObject3 = ((Component)obj7).gameObject;
				obj8 = ((gameObject3 != null) ? gameObject3.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[0] = (SkinnedMeshRenderer)obj8;
			Transform obj9 = enemy.transform.Find("BaboonBirdModel/BodyLOD1");
			object obj10;
			if (obj9 == null)
			{
				obj10 = null;
			}
			else
			{
				GameObject gameObject4 = ((Component)obj9).gameObject;
				obj10 = ((gameObject4 != null) ? gameObject4.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[1] = (SkinnedMeshRenderer)obj10;
			Transform obj11 = enemy.transform.Find("BaboonBirdModel/BodyLOD2");
			object obj12;
			if (obj11 == null)
			{
				obj12 = null;
			}
			else
			{
				GameObject gameObject5 = ((Component)obj11).gameObject;
				obj12 = ((gameObject5 != null) ? gameObject5.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[2] = (SkinnedMeshRenderer)obj12;
			bodyMeshAction.Apply((SkinnedMeshRenderer[])(object)array, enemy.transform.Find("BaboonBirdModel/AnimContainer/metarig"));
			EnemySkinRegistry.RegisterEnemyEventHandler((EnemyAI)(object)component, (EnemyEventHandler)(object)this);
		}

		public override void Remove(GameObject enemy)
		{
			BaboonBirdAI component = enemy.GetComponent<BaboonBirdAI>();
			Transform obj = enemy.transform.Find("BaboonBirdModel/AnimContainer");
			object obj2;
			if (obj == null)
			{
				obj2 = null;
			}
			else
			{
				GameObject gameObject = ((Component)obj).gameObject;
				obj2 = ((gameObject != null) ? gameObject.GetComponent<BaboonHawkAudioEvents>() : null);
			}
			BaboonHawkAudioEvents val = (BaboonHawkAudioEvents)obj2;
			EnemySkinRegistry.RemoveEnemyEventHandler((EnemyAI)(object)component, (EnemyEventHandler)(object)this);
			if (VoiceSilenced)
			{
				BaseSkinner.DestroyModdedAudioSource(modCreatureVoice);
				((EnemyAI)component).creatureVoice.mute = false;
			}
			if (EffectsSilenced)
			{
				BaseSkinner.DestroyModdedAudioSource(modCreatureEffects);
				((EnemyAI)component).creatureSFX.mute = false;
				if ((Object)(object)val != (Object)null)
				{
					val.audioToPlay = ((EnemyAI)component).creatureSFX;
				}
			}
			if (AggressionSilenced)
			{
				BaseSkinner.DestroyModdedAudioSource(modAggressionAudio);
				component.aggressionAudio.mute = false;
			}
			ArmatureAttachment.RemoveAttachments(activeAttachments);
			MaterialAction bodyMaterialAction = BodyMaterialAction;
			Transform obj3 = enemy.transform.Find("BaboonBirdModel/BodyLOD0");
			object vanillaRenderer;
			if (obj3 == null)
			{
				vanillaRenderer = null;
			}
			else
			{
				GameObject gameObject2 = ((Component)obj3).gameObject;
				vanillaRenderer = ((gameObject2 != null) ? gameObject2.GetComponent<Renderer>() : null);
			}
			bodyMaterialAction.Remove((Renderer)vanillaRenderer, 0, vanillaBodyMaterial);
			bodyMaterialAction = BodyMaterialAction;
			Transform obj4 = enemy.transform.Find("BaboonBirdModel/BodyLOD1");
			object vanillaRenderer2;
			if (obj4 == null)
			{
				vanillaRenderer2 = null;
			}
			else
			{
				GameObject gameObject3 = ((Component)obj4).gameObject;
				vanillaRenderer2 = ((gameObject3 != null) ? gameObject3.GetComponent<Renderer>() : null);
			}
			bodyMaterialAction.Remove((Renderer)vanillaRenderer2, 0, vanillaBodyMaterial);
			bodyMaterialAction = BodyMaterialAction;
			Transform obj5 = enemy.transform.Find("BaboonBirdModel/BodyLOD2");
			object vanillaRenderer3;
			if (obj5 == null)
			{
				vanillaRenderer3 = null;
			}
			else
			{
				GameObject gameObject4 = ((Component)obj5).gameObject;
				vanillaRenderer3 = ((gameObject4 != null) ? gameObject4.GetComponent<Renderer>() : null);
			}
			bodyMaterialAction.Remove((Renderer)vanillaRenderer3, 0, vanillaBodyMaterial);
			ScreamAudioAction.Remove(ref enemy.GetComponent<BaboonBirdAI>().cawScreamSFX, vanillaScreamAudio);
			LaughAudioAction.Remove(ref enemy.GetComponent<BaboonBirdAI>().cawLaughSFX, vanillaLaughAudio);
			if ((Object)(object)val != (Object)null)
			{
				FootstepsAudioAction.Remove(ref val.randomClips, vanillaFootstepsAudio);
			}
			SkinnedMeshAction bodyMeshAction = BodyMeshAction;
			SkinnedMeshRenderer[] array = new SkinnedMeshRenderer[3];
			Transform obj6 = enemy.transform.Find("BaboonBirdModel/BodyLOD0");
			object obj7;
			if (obj6 == null)
			{
				obj7 = null;
			}
			else
			{
				GameObject gameObject5 = ((Component)obj6).gameObject;
				obj7 = ((gameObject5 != null) ? gameObject5.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[0] = (SkinnedMeshRenderer)obj7;
			Transform obj8 = enemy.transform.Find("BaboonBirdModel/BodyLOD1");
			object obj9;
			if (obj8 == null)
			{
				obj9 = null;
			}
			else
			{
				GameObject gameObject6 = ((Component)obj8).gameObject;
				obj9 = ((gameObject6 != null) ? gameObject6.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[1] = (SkinnedMeshRenderer)obj9;
			Transform obj10 = enemy.transform.Find("BaboonBirdModel/BodyLOD2");
			object obj11;
			if (obj10 == null)
			{
				obj11 = null;
			}
			else
			{
				GameObject gameObject7 = ((Component)obj10).gameObject;
				obj11 = ((gameObject7 != null) ? gameObject7.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[2] = (SkinnedMeshRenderer)obj11;
			bodyMeshAction.Remove((SkinnedMeshRenderer[])(object)array, enemy.transform.Find("BaboonBirdModel/AnimContainer/metarig"));
		}

		public void OnEnterAttackMode(BaboonBirdAI baboonHawk)
		{
			if (AggressionSilenced)
			{
				modAggressionAudio.clip = EnterFightAction.WorkingClip(vanillaEnterFightAudio);
				modAggressionAudio.Play();
			}
		}

		public void OnIntimidate(BaboonBirdAI baboonHawk)
		{
			if (VoiceSilenced)
			{
				RoundManager.PlayRandomClip(modCreatureVoice, ScreamAudioAction.WorkingClips(vanillaScreamAudio), true, 1f, 1105, 1000);
				WalkieTalkie.TransmitOneShotAudio(modCreatureVoice, IntimidateVoiceAction.WorkingClip(vanillaIntimidateVoice), 1f);
			}
			if (AggressionSilenced)
			{
				modAggressionAudio.clip = IntimidateAction.WorkingClip(vanillaIntimidateAudio);
				modAggressionAudio.Play();
			}
		}

		public void OnAttackPlayer(BaboonBirdAI baboonHawk, PlayerControllerB player)
		{
			if (EffectsSilenced)
			{
				modCreatureEffects.PlayOneShot(StabAudioAction.WorkingClip(vanillaStabAudio));
				WalkieTalkie.TransmitOneShotAudio(modCreatureVoice, StabAudioAction.WorkingClip(vanillaStabAudio), 1f);
			}
		}

		public void OnAttackEnemy(BaboonBirdAI baboonHawk, EnemyAI enemy)
		{
			if (EffectsSilenced)
			{
				modCreatureEffects.PlayOneShot(StabAudioAction.WorkingClip(vanillaStabAudio));
				WalkieTalkie.TransmitOneShotAudio(modCreatureVoice, StabAudioAction.WorkingClip(vanillaStabAudio), 1f);
			}
		}

		public void OnKillPlayer(BaboonBirdAI baboonHawk, PlayerControllerB player)
		{
			if (VoiceSilenced)
			{
				modCreatureVoice.PlayOneShot(KillPlayerAudioAction.WorkingClip(vanillaKillPlayerAudio));
				WalkieTalkie.TransmitOneShotAudio(modCreatureVoice, KillPlayerAudioAction.WorkingClip(vanillaKillPlayerAudio), 1f);
			}
		}

		public void OnEnemyUpdate(EnemyAI enemy)
		{
			if (AggressionSilenced)
			{
				modAggressionAudio.volume = ((BaboonBirdAI)((enemy is BaboonBirdAI) ? enemy : null)).aggressionAudio.volume;
			}
		}

		public void OnKilled(EnemyAI enemy)
		{
			if (VoiceSilenced)
			{
				modCreatureVoice.PlayOneShot(DeathAudioAction.WorkingClip(vanillaDeathAudio));
			}
		}

		public void OnHit(EnemyAI enemy, PlayerControllerB attackingPlayer, bool playSoundEffect)
		{
			if (EffectsSilenced && playSoundEffect)
			{
				modCreatureEffects.PlayOneShot(HitBodyAudioAction.WorkingClip(vanillaHitBodyAudio));
				WalkieTalkie.TransmitOneShotAudio(modCreatureEffects, HitBodyAudioAction.WorkingClip(vanillaHitBodyAudio), 1f);
			}
		}
	}
	public class BarberSkinner : BaseSkinner, BarberEventHandler, EnemyEventHandler
	{
		protected const string MESH_PATH = "MeshContainer/Mesh";

		protected const string LOWER_BLADE_PATH = "MeshContainer/AnimContainer/Scissors/LowerBlade";

		protected const string UPPER_BLADE_PATH = "MeshContainer/AnimContainer/Scissors/UpperBlade";

		protected const string ANCHOR_PATH = "MeshContainer/AnimContainer/metarig";

		protected Mesh vanillaUpperBladeMesh;

		protected Mesh vanillaLowerBladeMesh;

		protected Material vanillaBarberMaterial;

		protected AudioClip vanillaSnipClip;

		protected AudioClip vanillaDrumrollClip;

		protected AudioClip[] vanillaParadeClips;

		protected Material[] replacementMaterials;

		protected List<GameObject> activeAttachments;

		protected bool DoFade { get; }

		protected ArmatureAttachment[] Attachments { get; }

		protected MaterialAction BodyMaterialAction { get; }

		protected MaterialAction UpperBladeMaterialAction { get; }

		protected MaterialAction LowerBladeMaterialAction { get; }

		protected SkinnedMeshAction BodyMeshAction { get; }

		protected StaticMeshAction UpperScissorsAction { get; }

		protected StaticMeshAction LowerScissorsAction { get; }

		protected AudioAction DrumRollAudioAction { get; }

		protected AudioAction SnipAudioAction { get; }

		protected AudioListAction JumpAudioListAction { get; }

		public BarberSkinner(ArmatureAttachment[] attachments, SkinnedMeshAction bodyMeshAction, StaticMeshAction upperBladeMeshAction, StaticMeshAction lowerBladeMeshAction, MaterialAction barberMaterialAction, MaterialAction upperBladeMaterialAction, MaterialAction lowerBladeMaterialAction, AudioAction drumRollAudioAction, AudioAction snipAudioAction, AudioListAction jumpAudioListAction, bool doFade)
		{
			Attachments = attachments;
			BodyMaterialAction = barberMaterialAction;
			BodyMeshAction = bodyMeshAction;
			UpperBladeMaterialAction = upperBladeMaterialAction;
			LowerBladeMaterialAction = lowerBladeMaterialAction;
			UpperScissorsAction = upperBladeMeshAction;
			LowerScissorsAction = lowerBladeMeshAction;
			DrumRollAudioAction = drumRollAudioAction;
			SnipAudioAction = snipAudioAction;
			JumpAudioListAction = jumpAudioListAction;
			DoFade = doFade;
		}

		public override void Apply(GameObject enemy)
		{
			ClaySurgeonAI component = enemy.GetComponent<ClaySurgeonAI>();
			MaterialAction bodyMaterialAction = BodyMaterialAction;
			Transform obj = enemy.transform.Find("MeshContainer/Mesh");
			object vanillaRenderer;
			if (obj == null)
			{
				vanillaRenderer = null;
			}
			else
			{
				GameObject gameObject = ((Component)obj).gameObject;
				vanillaRenderer = ((gameObject != null) ? gameObject.GetComponent<SkinnedMeshRenderer>() : null);
			}
			vanillaBarberMaterial = bodyMaterialAction.Apply((Renderer)vanillaRenderer, 0);
			bodyMaterialAction = UpperBladeMaterialAction;
			Transform obj2 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/UpperBlade");
			object vanillaRenderer2;
			if (obj2 == null)
			{
				vanillaRenderer2 = null;
			}
			else
			{
				GameObject gameObject2 = ((Component)obj2).gameObject;
				vanillaRenderer2 = ((gameObject2 != null) ? gameObject2.GetComponent<Renderer>() : null);
			}
			bodyMaterialAction.Apply((Renderer)vanillaRenderer2, 0);
			bodyMaterialAction = LowerBladeMaterialAction;
			Transform obj3 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/LowerBlade");
			object vanillaRenderer3;
			if (obj3 == null)
			{
				vanillaRenderer3 = null;
			}
			else
			{
				GameObject gameObject3 = ((Component)obj3).gameObject;
				vanillaRenderer3 = ((gameObject3 != null) ? gameObject3.GetComponent<Renderer>() : null);
			}
			bodyMaterialAction.Apply((Renderer)vanillaRenderer3, 0);
			StaticMeshAction upperScissorsAction = UpperScissorsAction;
			Transform obj4 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/UpperBlade");
			object vanilla;
			if (obj4 == null)
			{
				vanilla = null;
			}
			else
			{
				GameObject gameObject4 = ((Component)obj4).gameObject;
				vanilla = ((gameObject4 != null) ? gameObject4.GetComponent<MeshFilter>() : null);
			}
			vanillaUpperBladeMesh = upperScissorsAction.Apply((MeshFilter)vanilla);
			upperScissorsAction = LowerScissorsAction;
			Transform obj5 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/LowerBlade");
			object vanilla2;
			if (obj5 == null)
			{
				vanilla2 = null;
			}
			else
			{
				GameObject gameObject5 = ((Component)obj5).gameObject;
				vanilla2 = ((gameObject5 != null) ? gameObject5.GetComponent<MeshFilter>() : null);
			}
			vanillaLowerBladeMesh = upperScissorsAction.Apply((MeshFilter)vanilla2);
			vanillaDrumrollClip = DrumRollAudioAction.Apply(ref component.snareDrum);
			vanillaParadeClips = JumpAudioListAction.Apply(ref component.paradeClips);
			vanillaSnipClip = SnipAudioAction.Apply(ref component.snipScissors);
			SkinnedMeshAction bodyMeshAction = BodyMeshAction;
			SkinnedMeshRenderer[] array = new SkinnedMeshRenderer[1];
			Transform obj6 = enemy.transform.Find("MeshContainer/Mesh");
			object obj7;
			if (obj6 == null)
			{
				obj7 = null;
			}
			else
			{
				GameObject gameObject6 = ((Component)obj6).gameObject;
				obj7 = ((gameObject6 != null) ? gameObject6.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[0] = (SkinnedMeshRenderer)obj7;
			GameObject val = bodyMeshAction.Apply((SkinnedMeshRenderer[])(object)array, enemy.transform.Find("MeshContainer/AnimContainer/metarig"));
			List<Material> list = new List<Material>();
			if ((Object)(object)val != (Object)null)
			{
				list.AddRange(val.GetComponentsInChildren<Renderer>().SelectMany((Renderer r) => r.materials));
			}
			if (BodyMaterialAction.actionType == MaterialActionType.REPLACE)
			{
				Transform obj8 = enemy.transform.Find("MeshContainer/Mesh");
				object item;
				if (obj8 == null)
				{
					item = null;
				}
				else
				{
					GameObject gameObject7 = ((Component)obj8).gameObject;
					item = ((gameObject7 != null) ? ((Renderer)gameObject7.GetComponent<SkinnedMeshRenderer>()).material : null);
				}
				list.Add((Material)item);
			}
			if (UpperBladeMaterialAction.actionType == MaterialActionType.REPLACE)
			{
				Transform obj9 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/UpperBlade");
				object item2;
				if (obj9 == null)
				{
					item2 = null;
				}
				else
				{
					GameObject gameObject8 = ((Component)obj9).gameObject;
					item2 = ((gameObject8 != null) ? gameObject8.GetComponent<Renderer>().material : null);
				}
				list.Add((Material)item2);
			}
			if (LowerBladeMaterialAction.actionType == MaterialActionType.REPLACE)
			{
				Transform obj10 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/LowerBlade");
				object item3;
				if (obj10 == null)
				{
					item3 = null;
				}
				else
				{
					GameObject gameObject9 = ((Component)obj10).gameObject;
					item3 = ((gameObject9 != null) ? gameObject9.GetComponent<Renderer>().material : null);
				}
				list.Add((Material)item3);
			}
			ArmatureAttachment[] attachments = Attachments;
			Transform obj11 = enemy.transform.Find("MeshContainer/Mesh");
			object renderer;
			if (obj11 == null)
			{
				renderer = null;
			}
			else
			{
				GameObject gameObject10 = ((Component)obj11).gameObject;
				renderer = ((gameObject10 != null) ? gameObject10.GetComponent<SkinnedMeshRenderer>() : null);
			}
			activeAttachments = ArmatureAttachment.ApplyAttachments(attachments, (SkinnedMeshRenderer)renderer);
			list.AddRange(activeAttachments.SelectMany((GameObject attachment) => attachment.GetComponentsInChildren<Renderer>().SelectMany((Renderer rend) => rend.materials)));
			replacementMaterials = list.ToArray();
			EnemySkinRegistry.RegisterEnemyEventHandler((EnemyAI)(object)component, (EnemyEventHandler)(object)this);
		}

		public override void Remove(GameObject enemy)
		{
			ClaySurgeonAI component = enemy.GetComponent<ClaySurgeonAI>();
			EnemySkinRegistry.RemoveEnemyEventHandler((EnemyAI)(object)component, (EnemyEventHandler)(object)this);
			MaterialAction bodyMaterialAction = BodyMaterialAction;
			Transform obj = enemy.transform.Find("MeshContainer/Mesh");
			object vanillaRenderer;
			if (obj == null)
			{
				vanillaRenderer = null;
			}
			else
			{
				GameObject gameObject = ((Component)obj).gameObject;
				vanillaRenderer = ((gameObject != null) ? gameObject.GetComponent<SkinnedMeshRenderer>() : null);
			}
			bodyMaterialAction.Remove((Renderer)vanillaRenderer, 0, vanillaBarberMaterial);
			bodyMaterialAction = UpperBladeMaterialAction;
			Transform obj2 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/UpperBlade");
			object vanillaRenderer2;
			if (obj2 == null)
			{
				vanillaRenderer2 = null;
			}
			else
			{
				GameObject gameObject2 = ((Component)obj2).gameObject;
				vanillaRenderer2 = ((gameObject2 != null) ? gameObject2.GetComponent<Renderer>() : null);
			}
			bodyMaterialAction.Remove((Renderer)vanillaRenderer2, 0, vanillaBarberMaterial);
			bodyMaterialAction = LowerBladeMaterialAction;
			Transform obj3 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/LowerBlade");
			object vanillaRenderer3;
			if (obj3 == null)
			{
				vanillaRenderer3 = null;
			}
			else
			{
				GameObject gameObject3 = ((Component)obj3).gameObject;
				vanillaRenderer3 = ((gameObject3 != null) ? gameObject3.GetComponent<Renderer>() : null);
			}
			bodyMaterialAction.Remove((Renderer)vanillaRenderer3, 0, vanillaBarberMaterial);
			ArmatureAttachment.RemoveAttachments(activeAttachments);
			StaticMeshAction upperScissorsAction = UpperScissorsAction;
			Transform obj4 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/UpperBlade");
			object vanilla;
			if (obj4 == null)
			{
				vanilla = null;
			}
			else
			{
				GameObject gameObject4 = ((Component)obj4).gameObject;
				vanilla = ((gameObject4 != null) ? gameObject4.GetComponent<MeshFilter>() : null);
			}
			upperScissorsAction.Remove((MeshFilter)vanilla, vanillaUpperBladeMesh);
			upperScissorsAction = LowerScissorsAction;
			Transform obj5 = enemy.transform.Find("MeshContainer/AnimContainer/Scissors/LowerBlade");
			object vanilla2;
			if (obj5 == null)
			{
				vanilla2 = null;
			}
			else
			{
				GameObject gameObject5 = ((Component)obj5).gameObject;
				vanilla2 = ((gameObject5 != null) ? gameObject5.GetComponent<MeshFilter>() : null);
			}
			upperScissorsAction.Remove((MeshFilter)vanilla2, vanillaLowerBladeMesh);
			DrumRollAudioAction.Remove(ref component.snareDrum, vanillaDrumrollClip);
			JumpAudioListAction.Remove(ref component.paradeClips, vanillaParadeClips);
			SnipAudioAction.Remove(ref component.snipScissors, vanillaSnipClip);
			SkinnedMeshAction bodyMeshAction = BodyMeshAction;
			SkinnedMeshRenderer[] array = new SkinnedMeshRenderer[1];
			Transform obj6 = enemy.transform.Find("MeshContainer/Mesh");
			object obj7;
			if (obj6 == null)
			{
				obj7 = null;
			}
			else
			{
				GameObject gameObject6 = ((Component)obj6).gameObject;
				obj7 = ((gameObject6 != null) ? gameObject6.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[0] = (SkinnedMeshRenderer)obj7;
			bodyMeshAction.Remove((SkinnedMeshRenderer[])(object)array, enemy.transform.Find("MeshContainer/AnimContainer/metarig"));
		}

		public void OnEnemyUpdate(EnemyAI enemy)
		{
			//IL_001a: 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_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			if (!DoFade)
			{
				return;
			}
			float num = Vector3.Distance(((Component)StartOfRound.Instance.audioListener).transform.position, ((Component)enemy).transform.position + Vector3.up * 0.7f);
			ClaySurgeonAI val = (ClaySurgeonAI)(object)((enemy is ClaySurgeonAI) ? enemy : null);
			Material[] array = replacementMaterials;
			foreach (Material val2 in array)
			{
				if (val2.HasFloat("_AlphaCutoff"))
				{
					val2.SetFloat("_AlphaCutoff", (num - val.minDistance) / (val.maxDistance - val.minDistance));
				}
			}
		}
	}
	public abstract class BaseSkinner : Skinner
	{
		public abstract void Apply(GameObject enemy);

		public abstract void Remove(GameObject enemy);

		private static void CopyAudioSource(AudioSource source, AudioSource destination)
		{
			//IL_009e: Unknown result type (might be due to invalid IL or missing references)
			destination.bypassEffects = source.bypassEffects;
			destination.bypassListenerEffects = source.bypassListenerEffects;
			destination.bypassReverbZones = source.bypassReverbZones;
			destination.dopplerLevel = source.dopplerLevel;
			destination.ignoreListenerPause = source.ignoreListenerPause;
			destination.ignoreListenerVolume = source.ignoreListenerVolume;
			destination.maxDistance = source.maxDistance;
			destination.minDistance = source.minDistance;
			destination.outputAudioMixerGroup = source.outputAudioMixerGroup;
			destination.panStereo = source.panStereo;
			destination.pitch = source.pitch;
			destination.priority = source.priority;
			destination.reverbZoneMix = source.reverbZoneMix;
			destination.rolloffMode = source.rolloffMode;
			destination.spatialBlend = source.spatialBlend;
			destination.spatialize = source.spatialize;
			destination.spatializePostEffects = source.spatializePostEffects;
			destination.spread = source.spread;
			((Component)destination).tag = ((Component)source).tag;
			destination.volume = source.volume;
			destination.clip = source.clip;
			destination.playOnAwake = source.playOnAwake;
		}

		private static void CopyLowPass(AudioLowPassFilter source, AudioLowPassFilter destination)
		{
			destination.customCutoffCurve = source.customCutoffCurve;
			destination.cutoffFrequency = source.cutoffFrequency;
			destination.lowpassResonanceQ = source.lowpassResonanceQ;
		}

		private static void CopyReverb(AudioReverbFilter source, AudioReverbFilter destination)
		{
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			destination.decayHFRatio = source.decayHFRatio;
			destination.decayTime = source.decayTime;
			destination.density = source.density;
			destination.diffusion = source.diffusion;
			destination.dryLevel = source.dryLevel;
			destination.hfReference = source.hfReference;
			destination.lfReference = source.lfReference;
			destination.reflectionsDelay = source.reflectionsDelay;
			destination.reflectionsLevel = source.reflectionsLevel;
			destination.reverbDelay = source.reverbDelay;
			destination.reverbLevel = source.reverbLevel;
			destination.reverbPreset = source.reverbPreset;
			destination.room = source.room;
			destination.roomLF = source.roomLF;
			destination.roomHF = source.roomHF;
		}

		protected static void CopyOccludeAudio(OccludeAudio source, OccludeAudio destination)
		{
			destination.useReverb = source.useReverb;
			destination.overridingLowPass = source.overridingLowPass;
			destination.lowPassOverride = source.lowPassOverride;
		}

		protected static AudioSource CreateModdedAudioSource(AudioSource vanilla, string label = "modAudioSource", AudioClip initClip = null)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			//IL_0023: 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_0043: Unknown result type (might be due to invalid IL or missing references)
			GameObject val = new GameObject(label);
			val.transform.parent = ((Component)vanilla).gameObject.transform;
			val.transform.localPosition = Vector3.zero;
			val.transform.localScale = Vector3.one;
			val.transform.localRotation = Quaternion.identity;
			AudioSource val2 = val.AddComponent<AudioSource>();
			CopyAudioSource(vanilla, val2);
			val2.clip = initClip;
			OccludeAudio component = ((Component)vanilla).gameObject.GetComponent<OccludeAudio>();
			AudioLowPassFilter component2 = ((Component)vanilla).gameObject.GetComponent<AudioLowPassFilter>();
			AudioReverbFilter component3 = ((Component)vanilla).gameObject.GetComponent<AudioReverbFilter>();
			if ((Object)(object)component != (Object)null)
			{
				if ((Object)(object)component2 != (Object)null)
				{
					AudioLowPassFilter destination = val.AddComponent<AudioLowPassFilter>();
					CopyLowPass(component2, destination);
				}
				if ((Object)(object)component3 != (Object)null)
				{
					AudioReverbFilter destination2 = val.AddComponent<AudioReverbFilter>();
					CopyReverb(component3, destination2);
				}
				OccludeAudio destination3 = val.AddComponent<OccludeAudio>();
				CopyOccludeAudio(component, destination3);
			}
			if (vanilla.playOnAwake)
			{
				val2.Play();
			}
			return val2;
		}

		protected static void DestroyModdedAudioSource(AudioSource mod)
		{
			Object.Destroy((Object)(object)((Component)mod).gameObject);
		}
	}
	public class BrackenSkinner : BaseSkinner, BrackenEventHandler, EnemyEventHandler
	{
		protected const string MESH_PATH = "FlowermanModel/LOD1";

		protected const string LEFT_EYE_PATH = "FlowermanModel/AnimContainer/metarig/Torso1/Torso2/Torso3/Neck1/Neck2/Head1/LeftEye";

		protected const string RIGHT_EYE_PATH = "FlowermanModel/AnimContainer/metarig/Torso1/Torso2/Torso3/Neck1/Neck2/Head1/RightEye";

		protected const string ANCHOR_PATH = "FlowermanModel/AnimContainer";

		protected Material vanillaBodyMaterial;

		protected Material vanillaLeafMaterial;

		protected Material vanillaRightEyeMaterial;

		protected Material vanillaLeftEyeMaterial;

		protected Mesh vanillaRightEyeMesh;

		protected Mesh vanillaLeftEyeMesh;

		protected AudioClip vanillaAngerSound;

		protected AudioClip vanillaKillSound;

		protected AudioClip vanillaFoundSound;

		protected AudioClip[] vanillaLeafRustleSounds;

		protected List<GameObject> activeAttachments;

		protected AudioSource modCreatureEffects;

		protected AudioSource modCreatureVoice;

		protected MaterialAction LeafMaterialAction { get; }

		protected MaterialAction BodyMaterialAction { get; }

		protected MaterialAction LeftEyeMaterialAction { get; }

		protected MaterialAction RightEyeMaterialAction { get; }

		protected SkinnedMeshAction BodyMeshAction { get; }

		protected StaticMeshAction LeftEyeMeshAction { get; }

		protected StaticMeshAction RightEyeMeshAction { get; }

		protected AudioAction AngerAudioAction { get; }

		protected AudioAction SnapNeckAudioAction { get; }

		protected ArmatureAttachment[] Attachments { get; }

		protected AudioAction FoundAudioAction { get; }

		protected AudioAction HitBodyAudioAction { get; }

		protected AudioAction StunAudioAction { get; }

		protected AudioListAction LeafRustleAudioListAction { get; }

		protected bool VoiceSilenced => StunAudioAction.actionType != AudioActionType.RETAIN;

		protected bool EffectsSilenced => HitBodyAudioAction.actionType != AudioActionType.RETAIN;

		public BrackenSkinner(ArmatureAttachment[] attachments, MaterialAction leafMaterialAction, MaterialAction bodyMaterialAction, MaterialAction leftEyeMaterialAction, MaterialAction rightEyeMaterialAction, SkinnedMeshAction bodyMeshAction, StaticMeshAction leftEyeMeshAction, StaticMeshAction rightEyeMeshAction, AudioAction angerAudioAction, AudioAction snapNeckAudioAction, AudioAction foundAudioAction, AudioAction hitBodyAudioAction, AudioAction stunAudioAction, AudioListAction leafRustleAudioListAction)
		{
			LeafMaterialAction = leafMaterialAction;
			BodyMaterialAction = bodyMaterialAction;
			LeftEyeMaterialAction = leftEyeMaterialAction;
			RightEyeMaterialAction = rightEyeMaterialAction;
			BodyMeshAction = bodyMeshAction;
			LeftEyeMeshAction = leftEyeMeshAction;
			RightEyeMeshAction = rightEyeMeshAction;
			AngerAudioAction = angerAudioAction;
			SnapNeckAudioAction = snapNeckAudioAction;
			Attachments = attachments;
			FoundAudioAction = foundAudioAction;
			HitBodyAudioAction = hitBodyAudioAction;
			StunAudioAction = stunAudioAction;
			LeafRustleAudioListAction = leafRustleAudioListAction;
		}

		public override void Apply(GameObject enemy)
		{
			FlowermanAI component = enemy.GetComponent<FlowermanAI>();
			Transform obj = enemy.transform.Find("FlowermanModel/AnimContainer");
			object obj2;
			if (obj == null)
			{
				obj2 = null;
			}
			else
			{
				GameObject gameObject = ((Component)obj).gameObject;
				obj2 = ((gameObject != null) ? gameObject.GetComponent<PlayAudioAnimationEvent>() : null);
			}
			PlayAudioAnimationEvent val = (PlayAudioAnimationEvent)obj2;
			if (VoiceSilenced)
			{
				modCreatureVoice = BaseSkinner.CreateModdedAudioSource(((EnemyAI)component).creatureVoice, "modVoice");
				((EnemyAI)component).creatureVoice.mute = true;
			}
			if (EffectsSilenced)
			{
				modCreatureEffects = BaseSkinner.CreateModdedAudioSource(((EnemyAI)component).creatureSFX, "modEffects");
				((EnemyAI)component).creatureSFX.mute = true;
				if ((Object)(object)val != (Object)null)
				{
					val.audioToPlay = modCreatureEffects;
				}
			}
			ArmatureAttachment[] attachments = Attachments;
			Transform obj3 = enemy.transform.Find("FlowermanModel/LOD1");
			object renderer;
			if (obj3 == null)
			{
				renderer = null;
			}
			else
			{
				GameObject gameObject2 = ((Component)obj3).gameObject;
				renderer = ((gameObject2 != null) ? gameObject2.GetComponent<SkinnedMeshRenderer>() : null);
			}
			activeAttachments = ArmatureAttachment.ApplyAttachments(attachments, (SkinnedMeshRenderer)renderer);
			MaterialAction leafMaterialAction = LeafMaterialAction;
			Transform obj4 = enemy.transform.Find("FlowermanModel/LOD1");
			vanillaLeafMaterial = leafMaterialAction.Apply((obj4 != null) ? ((Component)obj4).gameObject.GetComponent<Renderer>() : null, 0);
			leafMaterialAction = BodyMaterialAction;
			Transform obj5 = enemy.transform.Find("FlowermanModel/LOD1");
			vanillaBodyMaterial = leafMaterialAction.Apply((obj5 != null) ? ((Component)obj5).gameObject.GetComponent<Renderer>() : null, 1);
			leafMaterialAction = LeftEyeMaterialAction;
			Transform obj6 = enemy.transform.Find("FlowermanModel/AnimContainer/metarig/Torso1/Torso2/Torso3/Neck1/Neck2/Head1/LeftEye");
			vanillaLeftEyeMaterial = leafMaterialAction.Apply((obj6 != null) ? ((Component)obj6).gameObject.GetComponent<Renderer>() : null, 0);
			leafMaterialAction = RightEyeMaterialAction;
			Transform obj7 = enemy.transform.Find("FlowermanModel/AnimContainer/metarig/Torso1/Torso2/Torso3/Neck1/Neck2/Head1/RightEye");
			vanillaRightEyeMaterial = leafMaterialAction.Apply((obj7 != null) ? ((Component)obj7).gameObject.GetComponent<Renderer>() : null, 0);
			SkinnedMeshAction bodyMeshAction = BodyMeshAction;
			SkinnedMeshRenderer[] array = new SkinnedMeshRenderer[1];
			Transform obj8 = enemy.transform.Find("FlowermanModel/LOD1");
			object obj9;
			if (obj8 == null)
			{
				obj9 = null;
			}
			else
			{
				GameObject gameObject3 = ((Component)obj8).gameObject;
				obj9 = ((gameObject3 != null) ? gameObject3.GetComponent<SkinnedMeshRenderer>() : null);
			}
			array[0] = (SkinnedMeshRenderer)obj9;
			bodyMeshAction.Apply((SkinnedMeshRenderer[])(object)array, enemy.transform.Find("FlowermanModel/AnimContainer"));
			StaticMeshAction leftEyeMeshAction = LeftEyeMeshAction;
			Transform obj10 = enemy.transform.Find("FlowermanModel/AnimContainer/metarig/Torso1/Torso2/Torso3/Neck1/Neck2/Head1/LeftEye");
			vanillaLeftEyeMesh = leftEyeMeshAction.Apply((obj10 != null) ? ((Component)obj10).gameObject.GetComponent<MeshFilter>() :