From da2ab6554dace1d2b771f74d422648aa741be44b Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Wed, 10 Sep 2025 18:20:06 +0000 Subject: [PATCH 01/65] [Port] [6000.3] Fix for matrices being overriden due to a reference/copy mistake --- .../Runtime/Passes/XRDepthMotionPass.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/XRDepthMotionPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/XRDepthMotionPass.cs index 53a0347dc56..7ce30e221b3 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/XRDepthMotionPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/XRDepthMotionPass.cs @@ -48,6 +48,7 @@ private class PassData /// View projection data private Matrix4x4[] m_StagingMatrixArray = new Matrix4x4[k_XRViewCountPerPass]; // Staging matrix to avoid allocating memory every frame when setting shader properties. + private Matrix4x4[] m_PreviousStagingMatrixArray = new Matrix4x4[k_XRViewCountPerPass]; // Staging matrix to avoid allocating memory every frame when setting shader properties. private const int k_XRViewCount = 4; private Matrix4x4[] m_ViewProjection = new Matrix4x4[k_XRViewCount]; private Matrix4x4[] m_PreviousViewProjection = new Matrix4x4[k_XRViewCount]; @@ -104,8 +105,8 @@ private void InitPassData(ref PassData passData, UniversalCameraData cameraData) var xr = cameraData.xr; var viewStartIndex = xr.viewCount * xr.multipassId; - Array.Copy(m_PreviousViewProjection, viewStartIndex, m_StagingMatrixArray, 0, xr.viewCount); - passData.previousViewProjectionStereo = m_StagingMatrixArray; + Array.Copy(m_PreviousViewProjection, viewStartIndex, m_PreviousStagingMatrixArray, 0, xr.viewCount); + passData.previousViewProjectionStereo = m_PreviousStagingMatrixArray; Array.Copy(m_ViewProjection, viewStartIndex, m_StagingMatrixArray, 0, xr.viewCount); passData.viewProjectionStereo = m_StagingMatrixArray; From fc7031d761913f93b5c94108506bf5e25d066e88 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Wed, 10 Sep 2025 18:20:06 +0000 Subject: [PATCH 02/65] [Port] [6000.3] Prevent merging passes with texture read/write conflicts in tile-based rendering --- .../Compiler/NativePassCompiler.Debug.cs | 5 +- .../RenderGraph/Compiler/PassesData.cs | 20 ++++++ .../NativePassCompilerRenderGraphTests.cs | 64 ++++++++++++++++++- 3 files changed, 85 insertions(+), 4 deletions(-) diff --git a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/NativePassCompiler.Debug.cs b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/NativePassCompiler.Debug.cs index 317482599ee..f700f43386c 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/NativePassCompiler.Debug.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/NativePassCompiler.Debug.cs @@ -76,7 +76,10 @@ internal static string MakePassMergeMessage(CompilerContextData ctx, in PassData $"- {passName}: {pass.fragmentInfoWidth}x{pass.fragmentInfoHeight}, {pass.fragmentInfoSamples} sample(s)."; break; case PassBreakReason.NextPassReadsTexture: - message += "The next pass reads one of the outputs as a regular texture, the pass needs to break."; + message += $"{prevPassName} output is sampled by {passName} as a regular texture, the pass needs to break."; + break; + case PassBreakReason.NextPassTargetsTexture: + message += $"{prevPassName} reads a texture that {passName} targets to, the pass needs to break."; break; case PassBreakReason.NonRasterPass: message += $"{prevPassName} is type {prevPass.type}. Only Raster passes can be merged."; diff --git a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/PassesData.cs b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/PassesData.cs index 9087f155fbb..7859f019546 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/PassesData.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/PassesData.cs @@ -555,6 +555,7 @@ internal enum PassBreakReason NotOptimized, // Optimize never ran on this pass TargetSizeMismatch, // Target Sizes or msaa samples don't match NextPassReadsTexture, // The next pass reads data written by this pass as a texture + NextPassTargetsTexture, // The next pass targets the texture that this pass is reading NonRasterPass, // The next pass is a non-raster pass DifferentDepthTextures, // The next pass uses a different depth texture (and we only allow one in a whole NRP) AttachmentLimitReached, // Adding the next pass would have used more attachments than allowed @@ -592,6 +593,7 @@ public PassBreakAudit(PassBreakReason reason, int breakPass) "The native render pass optimizer never ran on this pass. Pass is standalone and not merged.", "The render target sizes of the next pass do not match.", "The next pass reads data output by this pass as a regular texture.", + "The next pass uses a texture sampled in this pass as a render target.", "The next pass is not a raster render pass.", "The next pass uses a different depth buffer. All passes in the native render pass need to use the same depth buffer.", $"The limit of {FixedAttachmentArray.MaxAttachments} native pass attachments would be exceeded when merging with the next pass.", @@ -926,6 +928,24 @@ public static PassBreakAudit CanMerge(CompilerContextData contextData, int activ currAvailableAttachmentSlots--; } } + + // Check if this fragment is already sampled in the native renderpass not as a fragment but as an input + for (int i = nativePass.firstGraphPass; i <= nativePass.lastGraphPass; ++i) + { + ref var earlierPassData = ref contextData.passData.ElementAt(i); + foreach (ref readonly var earlierInput in earlierPassData.Inputs(contextData)) + { + // If this fragment is already used in current native render pass + if (earlierInput.resource.index == fragment.resource.index) + { + // If it's not used as a fragment, it's used as some sort of texture read of load so we need to sync it out + if (!earlierPassData.IsUsedAsFragment(earlierInput.resource, contextData)) + { + return new PassBreakAudit(PassBreakReason.NextPassTargetsTexture, passIdToMerge); + } + } + } + } } diff --git a/Packages/com.unity.render-pipelines.core/Tests/Editor/NativePassCompilerRenderGraphTests.cs b/Packages/com.unity.render-pipelines.core/Tests/Editor/NativePassCompilerRenderGraphTests.cs index 56cf1f75021..a38306941e8 100644 --- a/Packages/com.unity.render-pipelines.core/Tests/Editor/NativePassCompilerRenderGraphTests.cs +++ b/Packages/com.unity.render-pipelines.core/Tests/Editor/NativePassCompilerRenderGraphTests.cs @@ -557,7 +557,7 @@ public void VerifyMergeStateAfterMergingPasses() } [Test] - public void NonFragmentUseBreaksPass() + public void NonFragmentSamplingBreaksPass() { var g = AllocateRenderGraph(); var renderTargets = ImportAndCreateRenderTargets(g); @@ -584,6 +584,64 @@ public void NonFragmentUseBreaksPass() Assert.AreEqual(Rendering.RenderGraphModule.NativeRenderPassCompiler.PassBreakReason.NextPassReadsTexture, passes[0].breakAudit.reason); } + [Test] + public void FragmentAfterSamplingWithInputAttachmentBreaksPass() + { + var g = AllocateRenderGraph(); + var buffers = ImportAndCreateRenderTargets(g); + + using (var builder = g.AddRasterRenderPass("TestPass0", out var passData)) + { + builder.SetRenderAttachmentDepth(buffers.depthBuffer, AccessFlags.Write); + builder.UseTexture(buffers.extraTextures[0], AccessFlags.Read); + builder.SetRenderAttachment(buffers.extraTextures[1], 0, AccessFlags.Write); + builder.SetRenderFunc((RenderGraphTestPassData data, RasterGraphContext context) => { }); + } + + using (var builder = g.AddRasterRenderPass("TestPass1", out var passData)) + { + builder.SetRenderAttachmentDepth(buffers.depthBuffer, AccessFlags.Write); + builder.SetInputAttachment(buffers.extraTextures[1], 1, AccessFlags.Read); + builder.SetRenderAttachment(buffers.extraTextures[0], 2, AccessFlags.Write); + builder.SetRenderFunc((RenderGraphTestPassData data, RasterGraphContext context) => { }); + } + + var result = g.CompileNativeRenderGraph(g.ComputeGraphHash()); + var passes = result.contextData.GetNativePasses(); + + Assert.AreEqual(2, passes.Count); + Assert.AreEqual(Rendering.RenderGraphModule.NativeRenderPassCompiler.PassBreakReason.NextPassTargetsTexture, passes[0].breakAudit.reason); + } + + [Test] + public void FragmentAfterSamplingBreaksPass() + { + var g = AllocateRenderGraph(); + var buffers = ImportAndCreateRenderTargets(g); + + using (var builder = g.AddRasterRenderPass("TestPass0", out var passData)) + { + builder.SetRenderAttachmentDepth(buffers.depthBuffer, AccessFlags.Write); + builder.UseTexture(buffers.extraTextures[0], AccessFlags.Read); + builder.SetRenderAttachment(buffers.extraTextures[1], 0, AccessFlags.Write); + builder.SetRenderFunc((RenderGraphTestPassData data, RasterGraphContext context) => { }); + } + + using (var builder = g.AddRasterRenderPass("TestPass1", out var passData)) + { + builder.SetRenderAttachmentDepth(buffers.depthBuffer, AccessFlags.Write); + builder.SetRenderAttachment(buffers.extraTextures[2], 1, AccessFlags.Read); + builder.SetRenderAttachment(buffers.extraTextures[0], 2, AccessFlags.Write); + builder.SetRenderFunc((RenderGraphTestPassData data, RasterGraphContext context) => { }); + } + + var result = g.CompileNativeRenderGraph(g.ComputeGraphHash()); + var passes = result.contextData.GetNativePasses(); + + Assert.AreEqual(2, passes.Count); + Assert.AreEqual(Rendering.RenderGraphModule.NativeRenderPassCompiler.PassBreakReason.NextPassTargetsTexture, passes[0].breakAudit.reason); + } + [Test] public void NonRasterBreaksPass() { @@ -1376,7 +1434,7 @@ public void DecreaseResourceVersion_WhenAllProducersExceptFirstAreCulled() builder.AllowPassCulling(true); } - // Bumping version of extraBuffer within RG to 3 as we write to it in third pass + // Bumping version of exteraTexture within RG to 3 as we write to it in third pass using (var builder = g.AddRasterRenderPass("TestPass2", out var passData)) { builder.SetRenderAttachment(renderTargets.extraTextures[0], 0); @@ -1384,7 +1442,7 @@ public void DecreaseResourceVersion_WhenAllProducersExceptFirstAreCulled() builder.AllowPassCulling(true); } - // Bumping version of extraBuffer within RG to 4 as we write to it in forth pass + // Bumping version of exteraTexture within RG to 4 as we write to it in forth pass using (var builder = g.AddRasterRenderPass("TestPass3", out var passData)) { builder.SetRenderAttachment(renderTargets.extraTextures[0], 0); From 7c43b68e323022b550a58f5a775016d4126024a1 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Wed, 10 Sep 2025 18:20:07 +0000 Subject: [PATCH 03/65] [Port] [6000.3] [UUM-117002] Fix incorrectly computed transforms and AABBs in UnifiedRayTracing API --- .../Compute/ComputeRayTracingAccelStruct.cs | 15 +++++++++------ .../Compute/RadeonRays/RadeonRaysAPI.cs | 18 +++++++++--------- .../Compute/RadeonRays/kernels/transform.hlsl | 12 ++++++------ 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/ComputeRayTracingAccelStruct.cs b/Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/ComputeRayTracingAccelStruct.cs index 1680fd1588f..28b7cc3e1cb 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/ComputeRayTracingAccelStruct.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/ComputeRayTracingAccelStruct.cs @@ -508,12 +508,15 @@ TopLevelAccelStruct CpuBuildForTopLevelAccelStruct(CommandBuffer cmd, RadeonRays var m = ConvertTranform(instance.localToWorldTransform); var bounds = GeometryUtility.CalculateBounds(new Vector3[] - { new Vector3(aabb.Min.x, aabb.Min.y, aabb.Max.z), - new Vector3(aabb.Min.x, aabb.Max.y, aabb.Min.z), - new Vector3(aabb.Min.x, aabb.Max.y, aabb.Max.z), - new Vector3(aabb.Max.x, aabb.Min.y, aabb.Max.z), - new Vector3(aabb.Max.x, aabb.Max.y, aabb.Min.z), - new Vector3(aabb.Max.x, aabb.Max.y, aabb.Max.z) + { + new Vector3(aabb.Min.x, aabb.Min.y, aabb.Min.z), + new Vector3(aabb.Min.x, aabb.Min.y, aabb.Max.z), + new Vector3(aabb.Min.x, aabb.Max.y, aabb.Min.z), + new Vector3(aabb.Min.x, aabb.Max.y, aabb.Max.z), + new Vector3(aabb.Max.x, aabb.Min.y, aabb.Min.z), + new Vector3(aabb.Max.x, aabb.Min.y, aabb.Max.z), + new Vector3(aabb.Max.x, aabb.Max.y, aabb.Min.z), + new Vector3(aabb.Max.x, aabb.Max.y, aabb.Max.z) }, m); prims[i].primID = (uint)i; diff --git a/Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/RadeonRays/RadeonRaysAPI.cs b/Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/RadeonRays/RadeonRaysAPI.cs index 96364bdb9b9..dd6014c93b0 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/RadeonRays/RadeonRaysAPI.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/RadeonRays/RadeonRaysAPI.cs @@ -119,18 +119,18 @@ public static Transform TRS(float3 translation, float3 rotation, float3 scale) public Transform Inverse() { - float4x4 m = new float4x4(); - m[0] = new float4(row0.x, row1.x, row2.x, 0); - m[1] = new float4(row0.y, row1.y, row2.y, 0); - m[2] = new float4(row0.z, row1.z, row2.z, 0); - m[3] = new float4(row0.w, row1.w, row2.w, 1); + float3x3 m = new float3x3(); + m[0] = new float3(row0.x, row1.x, row2.x); + m[1] = new float3(row0.y, row1.y, row2.y); + m[2] = new float3(row0.z, row1.z, row2.z); - m = math.fastinverse(m); + m = math.inverse(m); + var t = -math.mul(m, new float3(row0.w, row1.w, row2.w)); Transform res; - res.row0 = new float4(m[0].x, m[1].x, m[2].x, m[3].x); - res.row1 = new float4(m[0].y, m[1].y, m[2].y, m[3].y); - res.row2 = new float4(m[0].z, m[1].z, m[2].z, m[3].z); + res.row0 = new float4(m[0].x, m[1].x, m[2].x, t.x); + res.row1 = new float4(m[0].y, m[1].y, m[2].y, t.y); + res.row2 = new float4(m[0].z, m[1].z, m[2].z, t.z); return res; } diff --git a/Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/RadeonRays/kernels/transform.hlsl b/Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/RadeonRays/kernels/transform.hlsl index 4ed30014fa7..cdd4df9f2f6 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/RadeonRays/kernels/transform.hlsl +++ b/Packages/com.unity.render-pipelines.core/Runtime/UnifiedRayTracing/Compute/RadeonRays/kernels/transform.hlsl @@ -66,14 +66,14 @@ Transform Inverse(in Transform t) Aabb TransformAabb(in Aabb aabb, in Transform t) { - float3 p0 = aabb.pmin; + float3 p0 = float3(aabb.pmin.x, aabb.pmin.y, aabb.pmin.z); float3 p1 = float3(aabb.pmin.x, aabb.pmin.y, aabb.pmax.z); float3 p2 = float3(aabb.pmin.x, aabb.pmax.y, aabb.pmin.z); float3 p3 = float3(aabb.pmin.x, aabb.pmax.y, aabb.pmax.z); - float3 p4 = float3(aabb.pmax.x, aabb.pmin.y, aabb.pmax.z); - float3 p5 = float3(aabb.pmax.x, aabb.pmax.y, aabb.pmin.z); - float3 p6 = float3(aabb.pmax.x, aabb.pmax.y, aabb.pmax.z); - float3 p7 = aabb.pmax; + float3 p4 = float3(aabb.pmax.x, aabb.pmin.y, aabb.pmin.z); + float3 p5 = float3(aabb.pmax.x, aabb.pmin.y, aabb.pmax.z); + float3 p6 = float3(aabb.pmax.x, aabb.pmax.y, aabb.pmin.z); + float3 p7 = float3(aabb.pmax.x, aabb.pmax.y, aabb.pmax.z); p0 = TransformPointT(p0, t); p1 = TransformPointT(p1, t); @@ -98,4 +98,4 @@ Aabb TransformAabb(in Aabb aabb, in Transform t) } #endif -#endif // TRANSFORM_HLSL \ No newline at end of file +#endif // TRANSFORM_HLSL From 4f73e327cb89f9b2a7c197e5c78d62233e1eb87b Mon Sep 17 00:00:00 2001 From: Alexandre Thibodeau Date: Wed, 10 Sep 2025 22:58:52 +0000 Subject: [PATCH 04/65] =?UTF-8?q?UUM-117227:=20Fixed=20rounding=20issue=20?= =?UTF-8?q?causing=20noisy=20text=20when=20a=20custom=20sha=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Editor/Data/Nodes/UI/DefaultSDFTextNode.cs | 2 +- .../Editor/Data/Nodes/UI/RenderTypeBranchNode.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultSDFTextNode.cs b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultSDFTextNode.cs index 9865dc02047..1edad5e31d5 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultSDFTextNode.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultSDFTextNode.cs @@ -44,7 +44,7 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo sb.AppendLine("Unity_UIE_EvaluateSdfTextNode_Input.textureSlot = IN.typeTexSettings.y;"); sb.AppendLine("Unity_UIE_EvaluateSdfTextNode_Input.uv = IN.uvClip.xy;"); sb.AppendLine("Unity_UIE_EvaluateSdfTextNode_Input.extraDilate = IN.circle.x;"); - sb.AppendLine("Unity_UIE_EvaluateSdfTextNode_Input.textCoreLoc = IN.textCoreLoc;"); + sb.AppendLine("Unity_UIE_EvaluateSdfTextNode_Input.textCoreLoc = round(IN.textCoreLoc);"); sb.AppendLine("Unity_UIE_EvaluateSdfTextNode_Input.opacity = IN.typeTexSettings.z;"); sb.AppendLine("CommonFragOutput Unity_UIE_EvaluateSdfTextNode_Output = uie_std_frag_sdf_text(Unity_UIE_EvaluateSdfTextNode_Input);"); sb.AppendLine("{0} = Unity_UIE_EvaluateSdfTextNode_Output.color;", outputVarName); diff --git a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/RenderTypeBranchNode.cs b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/RenderTypeBranchNode.cs index a41dfceceb0..655c81b8316 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/RenderTypeBranchNode.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/RenderTypeBranchNode.cs @@ -110,7 +110,7 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo sb.AppendLine("Unity_UIE_RenderTypeSwitchNode_SdfText_Input.textureSlot = IN.typeTexSettings.y;"); sb.AppendLine("Unity_UIE_RenderTypeSwitchNode_SdfText_Input.uv = IN.uvClip.xy;"); sb.AppendLine("Unity_UIE_RenderTypeSwitchNode_SdfText_Input.extraDilate = IN.circle.x;"); - sb.AppendLine("Unity_UIE_RenderTypeSwitchNode_SdfText_Input.textCoreLoc = IN.textCoreLoc;"); + sb.AppendLine("Unity_UIE_RenderTypeSwitchNode_SdfText_Input.textCoreLoc = round(IN.textCoreLoc);"); sb.AppendLine("Unity_UIE_RenderTypeSwitchNode_SdfText_Input.opacity = IN.typeTexSettings.z;"); sb.AppendLine("CommonFragOutput Unity_UIE_RenderTypeSwitchNode_Output = uie_std_frag_sdf_text(Unity_UIE_RenderTypeSwitchNode_SdfText_Input);"); sb.AppendLine("{0} = Unity_UIE_RenderTypeSwitchNode_Output.color.rgb;", outputVarNameColor); From e935bbee6c2349dc379aaae4adcab0e0e4ee5038 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Wed, 10 Sep 2025 22:58:52 +0000 Subject: [PATCH 05/65] [Port] [6000.3] update VFX to 6.3 beta and update sticky notes color + group --- .../Scenes/HDRP_VFX_Learning_Templates.meta | 8 - .../LearningTemplateDescriptions.json | 43 +- .../Shaders/M_SoundSystem.mat | 2 +- .../Shaders/M_SoundSystem_Lamp_URP.mat | 2 +- .../VFX/AngularVelocity.vfx | 542 +-- .../VFX/BasicTexIndex.vfx | 210 +- .../VFXLearningTemplates/VFX/BoundsGizmo.vfx | 146 +- .../VFXLearningTemplates/VFX/Capacity.vfx | 118 +- .../VFX/CollisionAdvanced.vfx | 250 +- .../VFX/CollisionBasicProperties.vfx | 354 +- .../VFX/CollisionSimple.vfx | 154 +- .../VFXLearningTemplates/VFX/Context&Flow.vfx | 144 +- .../VFX/DecalParticles.vfx | 437 ++- .../VFX/FlipbookBlending.vfx | 72 +- .../VFXLearningTemplates/VFX/FlipbookMode.vfx | 392 ++- .../VFX/MultiStripGPUEvents.vfx | 777 +++-- .../VFX/MultiStripSingleBurst.vfx | 300 +- .../VFX/MultiStripsPeriodicBurst.vfx | 349 +- .../VFX/MultiStripsSpawnRate.vfx | 657 ++-- .../VFX/MultipleOutputs.vfx | 147 +- .../VFX/OrientAdvanced.vfx | 224 +- .../VFX/OrientFaceCamera.vfx | 609 +++- .../VFX/OrientFixedAxis.vfx | 584 +++- .../VFX/PivotAdvanced.vfx | 523 ++- .../VFX/PivotAttribute.vfx | 167 +- .../VFX/RotationAngle.vfx | 142 +- .../VFXLearningTemplates/VFX/SampleMesh.vfx | 996 +++--- .../VFXLearningTemplates/VFX/SampleSDF.vfx | 320 +- .../VFX/SampleSkinnedMesh.vfx | 1567 +++++---- .../VFX/SampleTexture2D.vfx | 1225 +++---- .../VFXLearningTemplates/VFX/SpawnContext.vfx | 119 +- .../VFX/StripGPUEvent.vfx | 415 ++- .../VFX/StripProperties.vfx | 273 +- .../VFX/StripSpawnRate.vfx | 150 +- .../VFX/TexIndexAdvanced.vfx | 841 +++-- .../VFX/TriggerEventCollide.vfx | 3032 +++++++++-------- 36 files changed, 9768 insertions(+), 6523 deletions(-) delete mode 100644 Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Scenes/HDRP_VFX_Learning_Templates.meta diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Scenes/HDRP_VFX_Learning_Templates.meta b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Scenes/HDRP_VFX_Learning_Templates.meta deleted file mode 100644 index 6427ba2f3a0..00000000000 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Scenes/HDRP_VFX_Learning_Templates.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 95407ce4bfe833441adfd54b165e8802 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Scenes/Scene Resources/LearningTemplateDescriptions.json b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Scenes/Scene Resources/LearningTemplateDescriptions.json index 644744647b4..5e183eb21d6 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Scenes/Scene Resources/LearningTemplateDescriptions.json +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Scenes/Scene Resources/LearningTemplateDescriptions.json @@ -39,7 +39,7 @@ """Open VFX Show VFX - This VFX is intended to provide information related to the Spawn Context.What is the Spawn Context, what options can be found in the inspector but also extra informations like: What are Spawn Event Attributes ? How to setup Spawn Event Attributes? What is the Spawn State Operator. + This VFX is intended to provide information related to the Spawn Context.What is the Spawn Context, what options can be found in the inspector but also extra informations like: What are Spawn Event Attributes? How to setup Spawn Event Attributes? What is the Spawn State Operator. Covered Aspects:Spawn Context @@ -94,7 +94,7 @@ """Open VFX Show VFX - Whether the Output is set to Quads, Meshes, or even Strips, we often want to control how to orient the geometry on a particle. Should it be facing the camera? What is the forward or Up-Axis ? The Orient Block helps us to easily orient our particles, as it comes with several modes. This example shows how to use the Fixed Axis mode. + Whether the Output is set to Quads, Meshes, or even Strips, we often want to control how to orient the geometry on a particle. Should it be facing the camera? What is the forward or Up-Axis? The Orient Block helps us to easily orient our particles, as it comes with several modes. This example shows how to use the Fixed Axis mode. Covered Aspects:Orient @@ -108,7 +108,7 @@ """Open VFX Show VFX - Whether the Output is set to Quads, Meshes, or even strips, we often want to control how to orient the geometry on a particle. Should it be facing the camera? What is the forward or Up-Axis ? The Orient Block helps us to easily orient our particles as it comes with many handy modes. This example shows how to use the Advanced Mode. + Whether the Output is set to Quads, Meshes, or even strips, we often want to control how to orient the geometry on a particle. Should it be facing the camera? What is the forward or Up-Axis? The Orient Block helps us to easily orient our particles as it comes with many handy modes. This example shows how to use the Advanced Mode. Covered Aspects:Orient @@ -193,7 +193,7 @@ This complex VFX is composed of several systems that are playing with the texIndex attribute creatively. Time, noise, and even particle position are used to control the texIndex attribute and give life to this VFX. Covered Aspects: - • Flipbook UVs + • Flipbook UVsTexIndex AttributeFlipbook Player""" }, @@ -222,7 +222,7 @@ Covered Aspects: • Pivot AttributeShader Graph integration - • Activation Port """ + • Activation Port""" }, { "title": "Sample Mesh", @@ -249,7 +249,7 @@ Covered Aspects: • Texture2D Sample OperatorAlive attribute - • Rejection Sampling""" + • Rejection Sampling""" }, { "title": "Sample Signed Distance Field (SDF)", @@ -264,7 +264,7 @@ Covered Aspects: • SDF Sample OperatorConform to SDF - • Strip/trails""" + • Strip Output Context""" }, { "title": "Sample Skinned Mesh", @@ -287,11 +287,11 @@ """Open VFX Show VFX - As VFX Graph is simulating particles on the GPU, they cannot collide with regular Rigid Body Colliders. But you can still make them collide with different geometry approximations like Boxes, Spheres, Cones, Planes or even complex shapes with the use of SDF and/or Depth Buffer. This VFX Graph, shows the use of a standard Collider Block and how the different Collision Properties like Bounce, Friction and/or Roughness can influence the collision response of the particles. + As VFX Graph is simulating particles on the GPU, they cannot collide with regular Rigid Body Colliders. But you can still make them collide with different geometry Shapes like Boxes, Spheres, Cones, Planes or even complex ones with the use of SDF and/or Depth Buffer. This VFX Graph, shows the use of a standard Collider Block and how the different Collision Properties like Bounce, Friction and/or Roughness can influence the collision response of the particles. Covered Aspects: - • Collision Properties - • Collider Blocks""" + • Collision + • Collision Properties""" }, { "title": "Collision Simple", @@ -300,12 +300,12 @@ """Open VFX Show VFX - As VFX Graph is simulating particles on the GPU, they cannot collide with regular Rigid Body Colliders. But you can still make them collide with different geometry approximations like Boxes, Spheres, Cones, Planes or even complex shapes with the use of SDF and/or Depth Buffer. This example shows you how to combine different collider blocks to get the desired results. + As VFX Graph is simulating particles on the GPU, they cannot collide with regular Rigid Body Colliders. But you can still make them collide with different geometry Shapes like Boxes, Spheres, Cones, Planes or even complex ones with the use of SDF and/or Depth Buffer. This example shows you how to combine different collider blocks to get the desired results. Covered Aspects: - • Collision Properties - • Collider Blocks - • Boolean Port""" + • Collision + • Collision Properties + • Activation Port""" }, { "title": "Collision Advanced", @@ -314,11 +314,12 @@ """Open VFX Show VFX - As VFX Graph is simulating particles on the GPU, they cannot collide with regular Rigid Body Colliders. But you can still make them collide with different geometry approximations like Boxes, Spheres, Cones, Planes or even complex shapes with the use of SDF and/or Depth Buffer. Sometimes using simple collision shapes isn’t enough to get a precise enough collision with the environment. In this case, using SDF can be a good solution to approximate complex geometry like this sculpture of a hand. + As VFX Graph is simulating particles on the GPU, they cannot collide with regular Rigid Body Colliders. But you can still make them collide with different geometry Shapes like Boxes, Spheres, Cones, Planes or even complex ones with the use of SDF and/or Depth Buffer. Sometimes using simple collision shapes isn’t enough to get a precise enough collision with the environment. In this case, using SDF can be a good solution to approximate complex geometry like this sculpture of a hand. Covered Aspects: - • Collision Properties - • SDF Collider""" + • Collision + • Collision Properties + • SDF Collider""" }, { "title": "Trigger Event on Collide", @@ -327,10 +328,11 @@ """Open VFX Show VFX - This VFX is displaying an advanced usage of the Trigger Event on Collide block that allows us to spawn new particles when a particle collides. Dart particles are thrown at the dartboard. When they collide, they instantaneously die and trigger different GPU Events. Those GPU Events are used to spawn new particles, like the Springy darts or the UI Score particles, that all inherit attributes from their parent. + This VFX is displaying an advanced usage of the Trigger Event on Collide block. Those GPU Events block that allows us to spawn new particles when a particle collides. Dart particles are thrown at the dartboard. When they collide, they instantaneously die and trigger different GPU Events. Those GPU Events are used to spawn new particles, like the Springy darts or the UI Score particles, that all inherit attributes from their parent. Covered Aspects: • GPU Events + • Trigger EventSource Attribute""" }, { @@ -429,7 +431,7 @@ Covered Aspects: • Strip Output ContextStrip Index - • Trigger Event Rate + • Trigger Event RateGPU Events""" }, { @@ -439,10 +441,11 @@ """Open VFX Show VFX - There are several ways to spawn particles, and when dealing with strips, this can have some implications for how you need to set up your VFX. This example illustrates how to circumvent the usual limitation that only permits the creation of one strip per parent's particle when dealing with Trigger Events. Each headphone jack is made of a particle mesh and spawns particles along its path. + There are several ways to spawn particles, and when dealing with strips, this can have some implications for how you need to set up your VFX. This example illustrates how to circumvent the usual limitation that only permits the creation of one strip per parent's particle when dealing with Trigger Events. Each headphone jack is made of a particle mesh and spawns particles along its path. Covered Aspects: • Strip Output Context + • Trigger EventStrip Index""" } ] diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Shaders/M_SoundSystem.mat b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Shaders/M_SoundSystem.mat index bed23c51d44..a5ec411095f 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Shaders/M_SoundSystem.mat +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Shaders/M_SoundSystem.mat @@ -137,4 +137,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Shaders/M_SoundSystem_Lamp_URP.mat b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Shaders/M_SoundSystem_Lamp_URP.mat index 1c1067568be..ea333879965 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Shaders/M_SoundSystem_Lamp_URP.mat +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/Shaders/M_SoundSystem_Lamp_URP.mat @@ -12,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} m_Name: m_EditorClassIdentifier: - version: 9 + version: 10 --- !u!21 &2100000 Material: serializedVersion: 8 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/AngularVelocity.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/AngularVelocity.vfx index 65132a475d0..4317dbbfa4b 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/AngularVelocity.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/AngularVelocity.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Random Initial AngularVelocity per Particle position: serializedVersion: 2 - x: 1149 - y: 643 - width: 1066 - height: 436 + x: 1040 + y: 589 + width: 1133 + height: 488 contents: - model: {fileID: 8926484042661617657} id: 0 @@ -36,13 +36,16 @@ MonoBehaviour: - model: {fileID: 8926484042661617715} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 - title: Pile Body position: serializedVersion: 2 - x: 11245 - y: 134 + x: 11246 + y: 8 width: 901 - height: 1707 + height: 1813 contents: - model: {fileID: 8926484042661617865} id: 0 @@ -56,13 +59,16 @@ MonoBehaviour: - model: {fileID: 8926484042661619571} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 13 + isStickyNote: 1 - title: Coin Slide position: serializedVersion: 2 x: 3977 - y: 5 + y: -99 width: 1224 - height: 2258 + height: 2363 contents: - model: {fileID: 8926484042661617996} id: 0 @@ -88,13 +94,19 @@ MonoBehaviour: - model: {fileID: 8926484042661619644} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 11 + isStickyNote: 1 - title: Rotation Jitter position: serializedVersion: 2 x: 5532 - y: 2226 - width: 1465 - height: 442 + y: 2163 + width: 1469 + height: 505 contents: - model: {fileID: 8926484042661618139} id: 0 @@ -132,13 +144,16 @@ MonoBehaviour: - model: {fileID: 8926484042661619028} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 - title: Add Position position: serializedVersion: 2 x: 6050 - y: 2704 - width: 969 - height: 330 + y: 2703 + width: 962 + height: 331 contents: - model: {fileID: 8926484042661618521} id: 0 @@ -161,13 +176,16 @@ MonoBehaviour: - model: {fileID: 8926484042661618557} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 - title: Position Spread position: serializedVersion: 2 - x: 8273 - y: 2641 - width: 995 - height: 442 + x: 8224 + y: 2421 + width: 1044 + height: 615 contents: - model: {fileID: 8926484042661618726} id: 0 @@ -205,13 +223,19 @@ MonoBehaviour: - model: {fileID: 8926484042661619156} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 - title: Rand Seed Pos on circle position: serializedVersion: 2 x: 8388 - y: 2061 - width: 912 - height: 343 + y: 2007 + width: 891 + height: 397 contents: - model: {fileID: 8926484042661619096} id: 0 @@ -231,24 +255,166 @@ MonoBehaviour: - model: {fileID: 8926484042661618679} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 2248 + y: 79 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661617588} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617590} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617593} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617717} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619675} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617702} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 10 + isStickyNote: 1 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 1944 + y: 1141 + width: 1153 + height: 1713 + contents: + - model: {fileID: 8926484042661617720} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617799} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617794} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618299} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617746} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619195} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619203} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619207} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619211} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619214} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617624} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617650} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619698} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619715} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617788} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617824} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 8136 + y: 1230 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661618373} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618420} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619822} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618857} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619606} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619610} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618460} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618465} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618864} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618869} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617824} + id: 1 + isStickyNote: 0 + - model: {fileID: 0} + id: 12 + isStickyNote: 1 stickyNoteInfos: - title: 'Set Angular Velocity:' position: serializedVersion: 2 - x: 2685 - y: 766 - width: 439 - height: 233 + x: 2675 + y: 866 + width: 282 + height: 123 contents: "The \"angularVelocity'' is useful to rotate particles based on a velocity. It's a more \u201Cphysical\u201D way of rotating a particle without directly controlling the \u201Cangle\u201D attribute.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Switch:' position: serializedVersion: 2 - x: 1173 - y: 665 + x: 1094 + y: 649 width: 230 height: 164 contents: 'The switch allows us to pick between various entry values. @@ -265,15 +431,16 @@ MonoBehaviour: determine on which axis the particle is going to rotate. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Update Rotation:' position: serializedVersion: 2 - x: 2688 - y: 1086 - width: 721 - height: 398 + x: 2672 + y: 1281 + width: 399 + height: 245 contents: "The \u201CUpdate Context\u201D is responsible for updating the particle's rotation by integrating their \u201Cangular velocity.\u201D By selecting the update context, you can find a checkbox in the Inspector to enable or disable @@ -281,37 +448,40 @@ MonoBehaviour: force, the particle would rotate without loss of energy (try to disable the block).\r\n\r\nBy adding some drag, the angular velocity slowly decreases based on the drag coefficient until it reaches a stop.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Collider Blocks:' position: serializedVersion: 2 - x: 2020 - y: 1428 + x: 2021 + y: 1591 width: 211 height: 113 contents: We're using the Collide with Cone and Collide with Plane blocks so that the falling coins bounce around and collide with the pile of coins. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Coin Slide:' position: serializedVersion: 2 - x: 4003 - y: 27 + x: 4006 + y: 101 width: 321 height: 169 contents: 'This system is here to spawn particles sliding on the cone. ' - theme: Black + theme: textSize: Medium + colorTheme: 2 - title: 'Rotation Jitter:' position: serializedVersion: 2 - x: 5543 - y: 2245 + x: 5836 + y: 2223 width: 269 height: 132 contents: 'The switch is alternating between vectors. @@ -327,24 +497,26 @@ MonoBehaviour: behavior and some life to the pyramid of coins. ' - theme: Black + theme: textSize: Small + colorTheme: 3 - title: 'Add Position:' position: serializedVersion: 2 - x: 6065 - y: 2717 + x: 6071 + y: 2749 width: 248 height: 100 contents: Here we're adding a Y offset to our initial pyramid position. This behavior helps sell the idea that the pyramid of coins is falling on itself. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Polar To Rectangular position: serializedVersion: 2 - x: 8386 - y: 1944 + x: 8589 + y: 2066 width: 364 height: 111 contents: 'Here we''re using the Polar to Rectangular operator to spawn in a @@ -355,32 +527,35 @@ MonoBehaviour: into 30 positions in a circle. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Add Position Shape Circle:' position: serializedVersion: 2 - x: 8931 - y: 2438 + x: 8837 + y: 2480 width: 334 height: 112 contents: "This block composition mode is set to \u201Cadd.\u201D This means that this block will \u201Cadd\u201D to the previous position.\r\n\r\nBy doing so, we're randomly spreading our particle's position around our previously calculated circle distribution.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Position Spread:' position: serializedVersion: 2 - x: 8280 - y: 2501 + x: 8249 + y: 2553 width: 342 height: 100 contents: This is pushing the particle's position in the direction of the circle's normals. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Falling Coins position: serializedVersion: 2 @@ -389,45 +564,49 @@ MonoBehaviour: width: 513 height: 101 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Sliding Coins position: serializedVersion: 2 - x: 4493 - y: -117 + x: 4489 + y: -39 width: 513 height: 101 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Coin's Pile position: serializedVersion: 2 x: 8133 - y: 0 + y: -26 width: 449 - height: 101 + height: 119 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Pile's Body position: serializedVersion: 2 - x: 11480 - y: -3 + x: 11470 + y: 67 width: 461 height: 101 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: 1149 - y: -117 - width: 10998 - height: 3199 + x: 1040 + y: -107 + width: 11107 + height: 3143 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -644,10 +823,10 @@ MonoBehaviour: enumValues: [] descendantCount: 0 m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: - - {fileID: 0} + - {fileID: 5371698748595113096, guid: bb17265ceda86d449a0a422f4a76645b, type: 3} m_CategoryPath: --- !u!2058629511 &8926484042661614527 VisualEffectResource: @@ -661,10 +840,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -841,7 +1016,6 @@ MonoBehaviour: m_UISuperCollapsed: 0 m_InputSlots: - {fileID: 8926484042661617594} - - {fileID: 8926484042661617603} m_OutputSlots: [] m_Label: m_Data: {fileID: 8926484042661617607} @@ -1159,142 +1333,6 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617603 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: - - {fileID: 8926484042661617604} - - {fileID: 8926484042661617605} - - {fileID: 8926484042661617606} - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617603} - m_MasterData: - m_Owner: {fileID: 8926484042661617593} - m_Value: - m_Type: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"x":0.5,"y":0.5,"z":0.5}' - m_Space: -1 - m_Property: - name: boundsPadding - m_serializedType: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617604 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617603} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617603} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: x - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617605 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617603} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617603} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: y - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617606 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617603} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617603} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: z - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] --- !u!114 &8926484042661617607 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1324,7 +1362,7 @@ MonoBehaviour: stripCapacity: 16 particlePerStripCount: 16 needsComputeBounds: 0 - boundsMode: 0 + boundsMode: 1 m_Space: 1 --- !u!114 &8926484042661617624 MonoBehaviour: @@ -1345,7 +1383,7 @@ MonoBehaviour: - {fileID: 8926484042661619698} - {fileID: 8926484042661619715} - {fileID: 8926484042661617788} - m_UIPosition: {x: 2248, y: 1061} + m_UIPosition: {x: 2240, y: 1201} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -1609,7 +1647,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1948, y: 904} + m_UIPosition: {x: 1839, y: 901} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2018,7 +2056,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1708, y: 904} + m_UIPosition: {x: 1599, y: 901} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2082,7 +2120,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1628, y: 702} + m_UIPosition: {x: 1519, y: 699} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2210,7 +2248,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1434, y: 796} + m_UIPosition: {x: 1325, y: 793} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2236,7 +2274,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1174, y: 838} + m_UIPosition: {x: 1065, y: 835} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -2327,7 +2365,7 @@ MonoBehaviour: - {fileID: 8926484042661617794} - {fileID: 8926484042661618299} - {fileID: 8926484042661617746} - m_UIPosition: {x: 1977, y: 1815} + m_UIPosition: {x: 1969, y: 1955} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2357,6 +2395,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661617735} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -2382,7 +2421,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 0 useMaskMap: 0 useNormalMap: 1 useEmissiveMap: 0 @@ -3259,22 +3297,22 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661617825} inputSlot: {fileID: 8926484042661619716} - position: {x: 2088.6667, y: 1356.6666} + position: {x: 2105.3333, y: 1538} expandedSlots: - {fileID: 8926484042661617825} - {fileID: 8926484042661617826} expanded: 0 - supecollapsed: 0 + supecollapsed: 1 - m_Id: 1 linkedSlots: - outputSlot: {fileID: 8926484042661617825} inputSlot: {fileID: 8926484042661619824} - position: {x: 8018, y: 770.6667} + position: {x: 8012, y: 745.3334} expandedSlots: - {fileID: 8926484042661617826} - {fileID: 8926484042661617825} expanded: 0 - supecollapsed: 0 + supecollapsed: 1 - m_Id: 2 linkedSlots: - outputSlot: {fileID: 8926484042661617825} @@ -3284,7 +3322,7 @@ MonoBehaviour: - {fileID: 8926484042661617825} - {fileID: 8926484042661617826} expanded: 0 - supecollapsed: 0 + supecollapsed: 1 - m_Id: 3 linkedSlots: - outputSlot: {fileID: 8926484042661617825} @@ -3294,7 +3332,7 @@ MonoBehaviour: - {fileID: 8926484042661617825} - {fileID: 8926484042661617826} expanded: 0 - supecollapsed: 0 + supecollapsed: 1 --- !u!114 &8926484042661617825 MonoBehaviour: m_ObjectHideFlags: 0 @@ -4479,6 +4517,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661617967} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -4504,7 +4543,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 0 useMaskMap: 0 useNormalMap: 1 useEmissiveMap: 0 @@ -5398,6 +5436,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661618023} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -5423,7 +5462,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 0 useMaskMap: 0 useNormalMap: 1 useEmissiveMap: 0 @@ -8360,6 +8398,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661618338} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -8385,7 +8424,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 0 useMaskMap: 0 useNormalMap: 1 useEmissiveMap: 0 @@ -10833,6 +10871,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661618573} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -10858,7 +10897,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 0 useMaskMap: 0 useNormalMap: 1 useEmissiveMap: 0 @@ -12145,7 +12183,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 8487, y: 2793} + m_UIPosition: {x: 8473, y: 2747} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -12282,7 +12320,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 8451, y: 2709} + m_UIPosition: {x: 8437, y: 2663} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -12346,7 +12384,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 8299, y: 2823} + m_UIPosition: {x: 8285, y: 2777} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -12445,7 +12483,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 8329, y: 2749} + m_UIPosition: {x: 8315, y: 2703} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -12712,7 +12750,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 8631, y: 2743} + m_UIPosition: {x: 8617, y: 2697} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -12849,7 +12887,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 8790, y: 2743} + m_UIPosition: {x: 8776, y: 2697} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -12944,7 +12982,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 8978, y: 2699} + m_UIPosition: {x: 8964, y: 2653} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13050,7 +13088,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 8373, y: 2875} + m_UIPosition: {x: 8359, y: 2829} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -16558,7 +16596,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 8385, y: 2957} + m_UIPosition: {x: 8371, y: 2911} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -16582,7 +16620,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 8843, y: 2957} + m_UIPosition: {x: 8829, y: 2911} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -16882,7 +16920,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 8695, y: 2957} + m_UIPosition: {x: 8681, y: 2911} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -17359,7 +17397,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 8451, y: 3027} + m_UIPosition: {x: 8437, y: 2981} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -17462,7 +17500,7 @@ MonoBehaviour: - {fileID: 8926484042661619207} - {fileID: 8926484042661619211} - {fileID: 8926484042661619214} - m_UIPosition: {x: 2461, y: 1815} + m_UIPosition: {x: 2453, y: 1955} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -17492,6 +17530,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661619202} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -17520,7 +17559,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 0 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -18606,6 +18644,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661619309} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -18634,7 +18673,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 0 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -19451,6 +19489,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661619478} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -19479,7 +19518,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 0 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -20295,6 +20333,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661619578} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -20323,7 +20362,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 0 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -21151,6 +21189,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661619651} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -21179,7 +21218,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 0 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/BasicTexIndex.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/BasicTexIndex.vfx index b12a06eef42..77d996d61dd 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/BasicTexIndex.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/BasicTexIndex.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Set Grid Position position: serializedVersion: 2 - x: -347 - y: 350 - width: 931 - height: 338 + x: -449 + y: 387 + width: 1035 + height: 449 contents: - model: {fileID: 8926484042661615215} id: 0 @@ -30,6 +30,12 @@ MonoBehaviour: - model: {fileID: 8926484042661615267} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - model: {fileID: 8926484042661615213} + id: 0 + isStickyNote: 0 - title: Debug position: serializedVersion: 2 @@ -44,12 +50,115 @@ MonoBehaviour: - model: {fileID: 8926484042661615307} id: 0 isStickyNote: 0 + - title: + position: + serializedVersion: 2 + x: 595 + y: -312 + width: 826 + height: 1195 + contents: + - model: {fileID: 8926484042661615089} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615091} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615095} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615245} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615255} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615205} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615208} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 2829 + y: -59 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661614555} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614606} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614558} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614665} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614583} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615086} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614639} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614661} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614937} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614921} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614928} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615291} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614941} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615044} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615052} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615488} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615494} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615497} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 stickyNoteInfos: - title: Sequential 3D position: serializedVersion: 2 - x: -325 - y: 539 + x: -424 + y: 577 width: 246 height: 141 contents: 'The sequential 3D operator is useful to order and position particles @@ -62,15 +171,16 @@ MonoBehaviour: the settings set. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'TexIndex Attribute:' position: serializedVersion: 2 - x: 1016 - y: 450 - width: 637 - height: 368 + x: 1051 + y: 627 + width: 293 + height: 193 contents: 'The texIndex is a float attribute that determines which part of a sprite sheet to display. @@ -85,15 +195,16 @@ MonoBehaviour: attribute is a float, that means that you can blend between two index values. ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Flipbook Size:' position: serializedVersion: 2 x: 651 - y: 1173 + y: 1291 width: 400 - height: 354 + height: 145 contents: 'To properly display the different parts of a sprite sheet, the UV mode needs to be set to either flipbook or flipbook blend. @@ -108,32 +219,35 @@ MonoBehaviour: Columns. ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Tex Index Animation:' position: serializedVersion: 2 - x: 3304 - y: 597 - width: 604 - height: 382 + x: 3275 + y: 775 + width: 335 + height: 197 contents: "While a flipbook block exists to help you animate your sprite sheet, it's possible to control this yourself by manipulating the texIndex attribute.\r\n\r\nIn the update context, we're animating the texIndex attribute thanks to the time operator.\r\nAs the UV mode is set to \u201Cflipbook\u201D and not \u201Cflipbook blend,\u201D no interpolation is done between each texIndex.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: SpriteSheet Debug position: serializedVersion: 2 - x: 416 - y: -251 + x: 620 + y: -253 width: 775 height: 101 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Leaf Flipbook position: serializedVersion: 2 @@ -142,15 +256,16 @@ MonoBehaviour: width: 552 height: 101 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -346 - y: -251 - width: 4473 - height: 2101 + x: -449 + y: -313 + width: 4577 + height: 2158 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -191,7 +306,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -207,10 +322,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 1 shadowCastingMode: 0 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -862,6 +973,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661614644} - {fileID: 8926484042661615452} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -887,7 +999,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 3 useMaskMap: 1 useNormalMap: 1 useEmissiveMap: 0 @@ -1372,6 +1483,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661614924} - {fileID: 8926484042661615453} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -2792,7 +2904,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615091} - m_UIPosition: {x: 591, y: -125} + m_UIPosition: {x: 623, y: -127} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2979,7 +3091,7 @@ MonoBehaviour: - {fileID: 8926484042661615255} - {fileID: 8926484042661615205} - {fileID: 8926484042661615208} - m_UIPosition: {x: 591, y: 245} + m_UIPosition: {x: 623, y: 243} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3387,6 +3499,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661615139} - {fileID: 8926484042661615454} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -3412,7 +3525,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 3 useMaskMap: 1 useNormalMap: 1 useEmissiveMap: 0 @@ -4098,7 +4210,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 309, y: 679} + m_UIPosition: {x: 380, y: 700} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4122,7 +4234,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -47, y: 409} + m_UIPosition: {x: -146, y: 447} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -5264,7 +5376,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -321, y: 409} + m_UIPosition: {x: -420, y: 447} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -5288,8 +5400,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 257, y: 409} - m_UICollapsed: 0 + m_UIPosition: {x: 214, y: 483} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: - {fileID: 8926484042661615281} @@ -5931,6 +6043,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661615318} - {fileID: 8926484042661615455} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -6614,6 +6727,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661615370} - {fileID: 8926484042661615456} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -6632,7 +6746,7 @@ MonoBehaviour: enableRayTracing: 0 decimationFactor: 1 raytracedScaleMode: 0 - needsOwnSort: 0 + needsOwnSort: 1 needsOwnAabbBuffer: 0 shaderGraph: {fileID: 0} materialSettings: @@ -9105,6 +9219,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661615493} - {fileID: 8926484042661615568} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -9133,7 +9248,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 3 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -10053,6 +10167,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661615548} - {fileID: 8926484042661615569} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -10081,7 +10196,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 3 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/BoundsGizmo.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/BoundsGizmo.vfx index cce7b2f6c43..a1a2094b413 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/BoundsGizmo.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/BoundsGizmo.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Vector Rotation position: serializedVersion: 2 - x: 186 - y: 349 - width: 1058 - height: 222 + x: 64 + y: 117 + width: 1094 + height: 458 contents: - model: {fileID: 8926484042661614617} id: 0 @@ -36,12 +36,71 @@ MonoBehaviour: - model: {fileID: 8926484042661614810} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 1207 + y: -713 + width: 949 + height: 2352 + contents: + - model: {fileID: 8926484042661614555} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614556} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614558} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614569} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614580} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614583} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614585} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614589} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614834} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614845} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614593} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 stickyNoteInfos: - title: '01.Bounds:' position: serializedVersion: 2 - x: 1209 - y: -303 + x: 1232 + y: -319 width: 234 height: 327 contents: "The system is only visible if the bounding box is in the \u201Ccamera @@ -52,13 +111,14 @@ MonoBehaviour: will be computed each frame. This can be needed for dynamic VFX or when iterating on a VFX. Be aware that this consumes resources, and it\u2019s better to use the manual or recorded mode when possible. \r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: '02.Bounds experiment:' position: serializedVersion: 2 - x: 977 - y: 115 + x: 1536 + y: -209 width: 265 height: 207 contents: 'Culling a system is important for performance, and that''s why bound''s @@ -80,13 +140,14 @@ MonoBehaviour: modes and adjust the bounds so that the particles don''t disappear. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: '03.GIZMO Visualisation: ' position: serializedVersion: 2 - x: 1711 - y: 222 + x: 1714 + y: 210 width: 416 height: 215 contents: "Many blocks give you the options to either tweak the value directly @@ -98,13 +159,14 @@ MonoBehaviour: the attachment made, selecting the \u201Cinitialize Context Block\u201D should allow you to see the \u201CBound Gizmo\u201D (if manual or record mode is on).\r\nYou can directly edit the Gizmo in the scene.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Vector Rotation position: serializedVersion: 2 - x: -228 - y: 367 + x: 105 + y: 371 width: 403 height: 179 contents: "We're creating a sine wave based on time. This \u201Ctime\u201D input @@ -113,13 +175,14 @@ MonoBehaviour: of the oscillation.\r\n\r\nThis is used in a \u201Ctransform direction\u201D operator. So we're rotating the direction (0,1,0) on the Z-axis.\r\n\r\nWe could have used a \u201CRotate 3D\u201D operator for the same result.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Collapse position: serializedVersion: 2 - x: 541 - y: 21 + x: 98 + y: 177 width: 246 height: 134 contents: 'When double-clicking on an operator, you''re able to collapse it to @@ -131,15 +194,27 @@ MonoBehaviour: Try it yourself; double-click to collapse or expand an operator. ' - theme: Black + theme: textSize: Small + colorTheme: 2 + - title: BOUNDS + position: + serializedVersion: 2 + x: 1282 + y: -653 + width: 375 + height: 103 + contents: + theme: + textSize: Huge + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -228 - y: -544 - width: 2355 - height: 2163 + x: 64 + y: -713 + width: 2091 + height: 2352 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -219,7 +294,7 @@ MonoBehaviour: enumValues: [] descendantCount: 0 m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -235,10 +310,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 0 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -262,7 +333,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661614556} - m_UIPosition: {x: 1276, y: -544} + m_UIPosition: {x: 1279, y: -556} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -354,7 +425,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661614569} - {fileID: 8926484042661614580} - m_UIPosition: {x: 1271, y: 95} + m_UIPosition: {x: 1274, y: 83} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -471,7 +542,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1271, y: 710} + m_UIPosition: {x: 1274, y: 698} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -510,7 +581,7 @@ MonoBehaviour: - {fileID: 8926484042661614834} - {fileID: 8926484042661614845} - {fileID: 8926484042661614593} - m_UIPosition: {x: 1271, y: 929} + m_UIPosition: {x: 1274, y: 917} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -535,6 +606,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661614590} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -911,7 +983,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 211, y: 426} + m_UIPosition: {x: 89, y: 316} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -968,7 +1040,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 549, y: 426} + m_UIPosition: {x: 427, y: 316} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -1063,7 +1135,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 379, y: 426} + m_UIPosition: {x: 257, y: 316} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -1199,7 +1271,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 705, y: 426} + m_UIPosition: {x: 583, y: 316} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1985,7 +2057,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 883, y: 408} + m_UIPosition: {x: 761, y: 298} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/Capacity.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/Capacity.vfx index 86f30efe911..4a4214f2f7b 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/Capacity.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/Capacity.vfx @@ -12,7 +12,93 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d01270efd3285ea4a9d6c555cb0a8027, type: 3} m_Name: VFXUI m_EditorClassIdentifier: - groupInfos: [] + groupInfos: + - title: + position: + serializedVersion: 2 + x: 981 + y: -300 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661614555} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614686} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614558} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614652} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614763} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614887} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614689} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614695} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614585} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614589} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614993} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614998} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614591} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614730} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614684} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614882} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614720} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614733} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614737} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 stickyNoteInfos: - title: 'Capacity:' position: @@ -29,8 +115,9 @@ MonoBehaviour: you can toggle the debug mode. This can help you set the capacity count.\r\n\r\nYou can try to decrease the capacity count to see how it affects the Max particle active.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 3 - title: 'Set Size:' position: serializedVersion: 2 @@ -47,8 +134,9 @@ MonoBehaviour: inspector, it uses a random operator node.\r\nThere's always several ways of doing the same thing in VFX Graph.\r\n\r\nThere is no right or wrong answer. It depends on how you like to work.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Deactivate:' position: serializedVersion: 2 @@ -61,8 +149,9 @@ MonoBehaviour: \u201Cunchecking\u201D the tick box in the upper-left corner of the block.\r\n\r\nAny context block can be activated or deactivated easily, and this can be used to compare different results quickly.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Composition Mode:' position: serializedVersion: 2 @@ -81,8 +170,9 @@ MonoBehaviour: across particle life.\r\n\r\nIn the inspector tab, the \"Composition Mode\" is set to Multiply, meaning that we're going to \"Multiply\" the Attributes' data that we set in the \u201CInit Context\u201D by this curve.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Multiply Size :' position: serializedVersion: 2 @@ -94,8 +184,9 @@ MonoBehaviour: one. \r\nThe First one is using an \"Attribute from Curve\" Block, that modifies attributes based on the curve.\r\n\r\nThis shows how to do the same with a Regular \"Set Attribute\" block.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Sampling Curves :' position: serializedVersion: 2 @@ -116,19 +207,21 @@ MonoBehaviour: the X value. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: position: serializedVersion: 2 x: 1436 y: 89 width: 242 - height: 100 + height: 108 contents: You can try to decrease the capacity count to see how it impacts the max particle active. - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 @@ -165,7 +258,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -181,10 +274,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 0 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -642,6 +731,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661614590} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/CollisionAdvanced.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/CollisionAdvanced.vfx index 0c4cdad2764..f8b2e5067e1 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/CollisionAdvanced.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/CollisionAdvanced.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Animated Noise position position: serializedVersion: 2 - x: -106 - y: -429 - width: 1059 - height: 300 + x: -183 + y: -292 + width: 1097 + height: 366 contents: - model: {fileID: 8926484042661615154} id: 0 @@ -36,13 +36,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615428} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 - title: SDF Transform position: serializedVersion: 2 - x: 520 - y: 1029 - width: 441 - height: 306 + x: 347 + y: 1085 + width: 449 + height: 343 contents: - model: {fileID: 8926484042661614994} id: 1 @@ -62,10 +65,10 @@ MonoBehaviour: - title: Velocity Noise Variation position: serializedVersion: 2 - x: -444 - y: 727 - width: 1402 - height: 303 + x: -1035 + y: 752 + width: 1523 + height: 298 contents: - model: {fileID: 8926484042661615202} id: 0 @@ -88,13 +91,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615227} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 - title: HAND Mesh position: serializedVersion: 2 - x: -1065 - y: 2368 - width: 952 - height: 368 + x: -715 + y: 2103 + width: 953 + height: 478 contents: - model: {fileID: 8926484042661615457} id: 0 @@ -108,22 +114,80 @@ MonoBehaviour: - model: {fileID: 8926484042661615461} id: 1 isStickyNote: 0 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 + - title: Update + position: + serializedVersion: 2 + x: 793 + y: 293 + width: 863 + height: 1565 + contents: + - model: {fileID: 8926484042661614583} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615188} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 940 + y: -549 + width: 703 + height: 710 + contents: + - model: {fileID: 8926484042661614558} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 825 + y: -1139 + width: 737 + height: 577 + contents: + - model: {fileID: 8926484042661614555} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 stickyNoteInfos: - title: Collide Advanced position: serializedVersion: 2 - x: 941 - y: -1095 - width: 711 - height: 100 + x: 850 + y: -1079 + width: 687 + height: 109 contents: type something here - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: 'Animated Noise position:' position: serializedVersion: 2 - x: -432 - y: -425 + x: -128 + y: -129 width: 323 height: 177 contents: 'An animated spawn position can add interesting motion to a particle @@ -142,28 +206,30 @@ MonoBehaviour: derived from this animated noise. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Random Mass:' position: serializedVersion: 2 - x: 1402 - y: -9 + x: 1400 + y: 11 width: 217 height: 100 contents: 'Mass affects how particles react to force. Randomization of mass is a good way to add some variation to the particle''s motion and behavior. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Collide with SDF:' position: serializedVersion: 2 - x: -65 - y: 1037 - width: 562 - height: 368 + x: 1396 + y: 1005 + width: 234 + height: 236 contents: 'We''re providing an SDF to the distance field settings, and we''re giving the size and position that we''re given by the SDF baker tool. @@ -179,71 +245,77 @@ MonoBehaviour: SDF is rotating in sync with the hand''s mesh. ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Colide With Cone:' position: serializedVersion: 2 x: 1402 y: 1369 - width: 447 - height: 181 + width: 197 + height: 113 contents: 'This secondary collide block will cause the particles to collide with a cone shape similar to a mount of sand. ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Colide With Cone:' position: serializedVersion: 2 - x: 507 - y: 1629 - width: 447 - height: 177 + x: 1396 + y: 1608 + width: 212 + height: 100 contents: 'The third collision block is designed to ensure that the sand particles collide with the statue pedestal. ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Animated Turbulence Transform:' position: serializedVersion: 2 - x: 1397 - y: 746 - width: 342 - height: 104 + x: 1395 + y: 630 + width: 233 + height: 124 contents: "The \u201Cturbulence force\u201D block makes our particles move in interesting organic ways.\r\nWe can get even more appealing and fluid motions - by animating the transform.\r\n" - theme: Black + by animating its transform.\r\n" + theme: textSize: Small + colorTheme: 2 - title: Velocity Noise Variation position: serializedVersion: 2 - x: -807 - y: 735 + x: -1009 + y: 923 width: 350 height: 100 contents: Some velocity variation is created by sampling a Perlin noise. We take the velocity.Y absolute value and multiply it by -1 so that the velocity vector variation is always going downward. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Hand Mesh position: serializedVersion: 2 - x: -809 - y: 2221 - width: 493 - height: 100 + x: -436 + y: 2162 + width: 454 + height: 108 contents: type something here - theme: Black + theme: textSize: Huge + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -1065 - y: -1095 - width: 2915 - height: 3832 + x: -1034 + y: -1139 + width: 2791 + height: 3884 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -291,7 +363,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -307,10 +379,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 1 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -1409,16 +1477,16 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661614996} inputSlot: {fileID: 8926484042661615554} - position: {x: 763.3333, y: 1087.3334} + position: {x: 605.3333, y: 1143.3333} expandedSlots: - {fileID: 8926484042661614995} expanded: 0 - supecollapsed: 0 + supecollapsed: 1 - m_Id: 1 linkedSlots: - outputSlot: {fileID: 8926484042661615004} inputSlot: {fileID: 8926484042661615562} - position: {x: 763.3333, y: 1257.3334} + position: {x: 590.6667, y: 1332.6666} expandedSlots: - {fileID: 8926484042661614995} expanded: 0 @@ -1913,6 +1981,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615061} + useBaseColorMap: 2 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -1938,7 +2007,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 2 useMaskMap: 0 useNormalMap: 0 useEmissiveMap: 0 @@ -2387,7 +2455,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -81, y: -371} + m_UIPosition: {x: -158, y: -233} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2654,7 +2722,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 276, y: -369} + m_UIPosition: {x: 199, y: -231} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -3230,7 +3298,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 657, y: -321} + m_UIPosition: {x: 580, y: -183} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -3399,7 +3467,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 88, y: -369} + m_UIPosition: {x: 11, y: -231} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -4339,7 +4407,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 799, y: 640} + m_UIPosition: {x: 818, y: 692} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4396,7 +4464,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 139, y: 849} + m_UIPosition: {x: -397, y: 875} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -4491,7 +4559,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 287, y: 849} + m_UIPosition: {x: -249, y: 875} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -4689,7 +4757,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -183, y: 785} + m_UIPosition: {x: -719, y: 811} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -5164,7 +5232,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -419, y: 785} + m_UIPosition: {x: -955, y: 811} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -5188,7 +5256,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 423, y: 785} + m_UIPosition: {x: -113, y: 811} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -5557,7 +5625,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 691, y: 854} + m_UIPosition: {x: 155, y: 881} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -5966,7 +6034,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 495, y: 925} + m_UIPosition: {x: -41, y: 951} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -6565,7 +6633,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -564, y: 2427} + m_UIPosition: {x: -213, y: 2254} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7130,7 +7198,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 593, y: 1113} + m_UIPosition: {x: 421, y: 1187} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -7397,7 +7465,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 777, y: 1137} + m_UIPosition: {x: 605, y: 1211} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7534,7 +7602,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 370, y: -235} + m_UIPosition: {x: 293, y: -97} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8242,7 +8310,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -998, y: 2531} + m_UIPosition: {x: -647, y: 2358} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -8509,7 +8577,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -806, y: 2555} + m_UIPosition: {x: -455, y: 2382} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8673,7 +8741,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661615462} inputSlot: {fileID: 8926484042661615346} - position: {x: 545.3333, y: 1218} + position: {x: 372.66666, y: 1293.3333} expandedSlots: [] expanded: 0 supecollapsed: 0 @@ -8681,7 +8749,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661615462} inputSlot: {fileID: 8926484042661615459} - position: {x: -1040, y: 2658.6667} + position: {x: -689.3333, y: 2486} expandedSlots: [] expanded: 0 supecollapsed: 0 @@ -8767,6 +8835,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615511} + useBaseColorMap: 2 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -8795,7 +8864,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 2 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/CollisionBasicProperties.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/CollisionBasicProperties.vfx index 707baceb4ce..ad66cb93927 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/CollisionBasicProperties.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/CollisionBasicProperties.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: DEBUG VISUALIZER position: serializedVersion: 2 - x: 982 - y: 4369 - width: 2815 - height: 3062 + x: 687 + y: 2589 + width: 2969 + height: 2991 contents: - model: {fileID: 8926484042661616106} id: 0 @@ -90,13 +90,25 @@ MonoBehaviour: - model: {fileID: 8926484042661616215} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 - title: Baseball position: serializedVersion: 2 - x: 248 - y: -853 - width: 650 - height: 3041 + x: 447 + y: -912 + width: 1211 + height: 2800 contents: - model: {fileID: 8926484042661614583} id: 0 @@ -116,13 +128,31 @@ MonoBehaviour: - model: {fileID: 8926484042661616397} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 17 + isStickyNote: 1 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 - title: Soccer position: serializedVersion: 2 - x: 2011 - y: -827 - width: 659 - height: 2745 + x: 1836 + y: -955 + width: 1067 + height: 2875 contents: - model: {fileID: 8926484042661615539} id: 0 @@ -142,13 +172,25 @@ MonoBehaviour: - model: {fileID: 8926484042661616401} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 14 + isStickyNote: 1 + - model: {fileID: 0} + id: 13 + isStickyNote: 1 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 + - model: {fileID: 0} + id: 10 + isStickyNote: 1 - title: Ping-Pong position: serializedVersion: 2 - x: 3458 - y: -772 - width: 951 - height: 2743 + x: 3122 + y: -949 + width: 1038 + height: 2835 contents: - model: {fileID: 8926484042661615375} id: 0 @@ -171,32 +213,46 @@ MonoBehaviour: - model: {fileID: 8926484042661616657} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 12 + isStickyNote: 1 + - model: {fileID: 0} + id: 16 + isStickyNote: 1 + - model: {fileID: 0} + id: 15 + isStickyNote: 1 + - model: {fileID: 0} + id: 11 + isStickyNote: 1 stickyNoteInfos: - title: Debug Property Panel position: serializedVersion: 2 - x: 791 - y: 4227 + x: 712 + y: 2649 width: 861 - height: 100 - contents: type something here - theme: Black + height: 166 + contents: + theme: textSize: Huge + colorTheme: 2 - title: Debug Value Display position: serializedVersion: 2 - x: 2781 - y: 4289 + x: 2612 + y: 2781 width: 861 - height: 100 - contents: type something here - theme: Black + height: 128 + contents: + theme: textSize: Huge + colorTheme: 2 - title: Spawn State position: serializedVersion: 2 - x: 2245 - y: 4805 + x: 2407 + y: 3037 width: 320 height: 158 contents: "Each loop has a different kind of bouncing object. We are utilizing @@ -204,15 +260,16 @@ MonoBehaviour: this information in the \u201Cmass\u201D attribute because it's not possible to make a custom attribute in the spawn context, and the spawn state data can't be accessed outside of the spawn context.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Values position: serializedVersion: 2 - x: 1777 - y: 6149 + x: 1688 + y: 4561 width: 385 - height: 115 + height: 116 contents: 'As the spawn context data cannot be accessed outside the spawn context, we store the loop index in the mass attribute. @@ -221,23 +278,25 @@ MonoBehaviour: the bounce, friction, and roughness set for each bouncy object. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Baseball position: serializedVersion: 2 - x: 511 - y: -967 + x: 814 + y: -853 width: 371 - height: 100 - contents: type something here - theme: Black + height: 116 + contents: + theme: textSize: Huge + colorTheme: 2 - title: 'Set Position Arc Cone:' position: serializedVersion: 2 - x: 139 - y: -143 + x: 472 + y: -121 width: 293 height: 187 contents: "We're setting the initial position of our particle thanks to a \u201Cset @@ -246,13 +305,14 @@ MonoBehaviour: you select the \u201Cset position arc cone\u201D block and the VFX in the scene is properly \u201Cattached,\u201D you should be able to edit the shape with a gizmo\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Mass:' position: serializedVersion: 2 - x: 895 - y: 101 + x: 1238 + y: 137 width: 218 height: 203 contents: 'Setting a proper mass attribute can be a good way to get more realistic @@ -270,13 +330,14 @@ MonoBehaviour: is roughly 0.145 kg. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Size:' position: serializedVersion: 2 - x: 149 - y: 307 + x: 472 + y: 211 width: 301 height: 191 contents: 'When dealing with real-world objects, it can be interesting to get @@ -297,13 +358,14 @@ MonoBehaviour: a regular baseball to make it more visible. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Collide with Cone:' position: serializedVersion: 2 - x: 179 - y: 1283 + x: 516 + y: 1295 width: 262 height: 142 contents: 'You can add many collider blocks to the update context so that particles @@ -314,13 +376,14 @@ MonoBehaviour: get out of our invisible tube. ' - theme: Black + theme: textSize: Small + colorTheme: 3 - title: 'Mass:' position: serializedVersion: 2 - x: 2661 - y: 221 + x: 2659 + y: 215 width: 218 height: 197 contents: 'Setting a proper mass attribute can be a good way to get more realistic @@ -334,23 +397,25 @@ MonoBehaviour: ball is 0.4 kg. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Soccer Ball position: serializedVersion: 2 - x: 2167 - y: -950 + x: 2188 + y: -896 width: 479 - height: 100 - contents: type something here - theme: Black + height: 119 + contents: + theme: textSize: Huge + colorTheme: 2 - title: 'Mass:' position: serializedVersion: 2 - x: 4141 - y: 226 + x: 3891 + y: 211 width: 218 height: 177 contents: 'Setting a proper mass attribute can be a good way to get more realistic @@ -364,23 +429,25 @@ MonoBehaviour: is 0.0027 kg. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Ping Pong position: serializedVersion: 2 - x: 3695 - y: -903 - width: 479 - height: 100 - contents: type something here - theme: Black + x: 3469 + y: -889 + width: 408 + height: 117 + contents: + theme: textSize: Huge + colorTheme: 2 - title: 'Set Position Arc Cone:' position: serializedVersion: 2 - x: 1895 - y: -61 + x: 1861 + y: -57 width: 293 height: 187 contents: "We're setting the initial position of our particle thanks to a \u201Cset @@ -389,13 +456,14 @@ MonoBehaviour: you select the \u201Cset position arc cone\u201D block and the VFX in the scene is properly \u201Cattached,\u201D you should be able to edit the shape with a gizmo\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Size:' position: serializedVersion: 2 - x: 1891 - y: 348 + x: 1880 + y: 351 width: 301 height: 167 contents: 'When dealing with real-world objects, it can be interesting to get @@ -415,13 +483,14 @@ MonoBehaviour: ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Size:' position: serializedVersion: 2 - x: 3380 - y: 443 + x: 3147 + y: 383 width: 301 height: 178 contents: 'When dealing with real-world objects, it can be interesting to get @@ -441,13 +510,14 @@ MonoBehaviour: ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Set Position Arc Cone:' position: serializedVersion: 2 - x: 3389 - y: -39 + x: 3151 + y: -97 width: 293 height: 187 contents: "We're setting the initial position of our particle thanks to a \u201Cset @@ -456,15 +526,16 @@ MonoBehaviour: you select the \u201Cset position arc cone\u201D block and the VFX in the scene is properly \u201Cattached,\u201D you should be able to edit the shape with a gizmo\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Collide With ... position: serializedVersion: 2 - x: 938 - y: 776 - width: 795 - height: 889 + x: 1232 + y: 1079 + width: 400 + height: 399 contents: "The different collide blocks allow particles to collide with one or several shapes.\n\nYou can directly set the shape's transform or wire it to a property. \r\nYou can use an exposed property to bind it to an external game @@ -479,15 +550,16 @@ MonoBehaviour: that the placement of blocks or nodes that have an impact on velocity should not be placed after the collision blocks, as this may result in a disruption of the collision calculation.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 categories: [] uiBounds: serializedVersion: 2 - x: 139 - y: -967 - width: 4269 - height: 8395 + x: 447 + y: -955 + width: 3713 + height: 6537 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -548,7 +620,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -564,10 +636,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 1 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 4 m_PreWarmDeltaTime: 0.05 @@ -591,7 +659,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661614790} - m_UIPosition: {x: 447, y: -795} + m_UIPosition: {x: 782, y: -735} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -631,7 +699,7 @@ MonoBehaviour: - {fileID: 8926484042661614842} - {fileID: 8926484042661615291} - {fileID: 8926484042661614849} - m_UIPosition: {x: 447, y: -345} + m_UIPosition: {x: 782, y: -309} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1002,7 +1070,7 @@ MonoBehaviour: - {fileID: 8926484042661615305} - {fileID: 8926484042661616437} - {fileID: 8926484042661616454} - m_UIPosition: {x: 447, y: 755} + m_UIPosition: {x: 782, y: 791} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -1607,7 +1675,7 @@ MonoBehaviour: - {fileID: 8926484042661615428} - {fileID: 8926484042661615140} - {fileID: 8926484042661616333} - m_UIPosition: {x: 3711, y: -221} + m_UIPosition: {x: 3463, y: -277} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2103,7 +2171,7 @@ MonoBehaviour: - {fileID: 8926484042661615425} - {fileID: 8926484042661616501} - {fileID: 8926484042661616518} - m_UIPosition: {x: 3715, y: 775} + m_UIPosition: {x: 3467, y: 719} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2140,7 +2208,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3483, y: 1603} + m_UIPosition: {x: 3235, y: 1547} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2167,6 +2235,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615183} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -2296,7 +2365,6 @@ MonoBehaviour: - 0 - -1 renderQueue: -1 - useBaseColorMap: 0 useMaskMap: 0 useNormalMap: 0 useEmissiveMap: 0 @@ -2518,29 +2586,29 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661615253} inputSlot: {fileID: 8926484042661616438} - position: {x: 273.33334, y: 1139.3334} + position: {x: 608, y: 1176} expandedSlots: - {fileID: 8926484042661615253} - {fileID: 8926484042661615258} - {fileID: 8926484042661615254} expanded: 0 - supecollapsed: 0 + supecollapsed: 1 - m_Id: 2 linkedSlots: - outputSlot: {fileID: 8926484042661615253} inputSlot: {fileID: 8926484042661616502} - position: {x: 3507.3333, y: 1146} + position: {x: 3298.6667, y: 1088} expandedSlots: - {fileID: 8926484042661615253} - {fileID: 8926484042661615254} - {fileID: 8926484042661615258} expanded: 0 - supecollapsed: 0 + supecollapsed: 1 - m_Id: 5 linkedSlots: - outputSlot: {fileID: 8926484042661615253} inputSlot: {fileID: 8926484042661616542} - position: {x: 2036.6666, y: 1139.3334} + position: {x: 2036.6666, y: 1139.3333} expandedSlots: - {fileID: 8926484042661615253} - {fileID: 8926484042661615254} @@ -3367,7 +3435,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615378} - m_UIPosition: {x: 3711, y: -713} + m_UIPosition: {x: 3463, y: -769} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4665,7 +4733,7 @@ MonoBehaviour: - {fileID: 8926484042661615659} - {fileID: 8926484042661615662} - {fileID: 8926484042661615672} - m_UIPosition: {x: 2219, y: -261} + m_UIPosition: {x: 2219, y: -270} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -5959,7 +6027,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615806} - {fileID: 8926484042661615932} - m_UIPosition: {x: 2896, y: 4522} + m_UIPosition: {x: 2755, y: 2933} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6145,7 +6213,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615828} - {fileID: 8926484042661615935} - m_UIPosition: {x: 2896, y: 4941} + m_UIPosition: {x: 2755, y: 3351} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6615,7 +6683,7 @@ MonoBehaviour: - {fileID: 8926484042661616189} - {fileID: 8926484042661615854} - {fileID: 8926484042661615841} - m_UIPosition: {x: 2460, y: 5606} + m_UIPosition: {x: 2319, y: 4016} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6641,6 +6709,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615836} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -7296,7 +7365,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1933, y: 6503} + m_UIPosition: {x: 1886, y: 4919} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -7796,7 +7865,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2583, y: 4799} + m_UIPosition: {x: 2442, y: 3209} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -8167,7 +8236,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2728, y: 4799} + m_UIPosition: {x: 2587, y: 3209} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8452,7 +8521,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1750, y: 6276} + m_UIPosition: {x: 1730, y: 4697} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -8476,7 +8545,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1990, y: 6311} + m_UIPosition: {x: 1916, y: 4697} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8713,7 +8782,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2896, y: 5334} + m_UIPosition: {x: 2755, y: 3743} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -8757,7 +8826,7 @@ MonoBehaviour: - {fileID: 8926484042661616008} - {fileID: 8926484042661616203} - {fileID: 8926484042661616020} - m_UIPosition: {x: 3346, y: 6035} + m_UIPosition: {x: 3205, y: 4443} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8783,6 +8852,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615993} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -9919,7 +9989,7 @@ MonoBehaviour: - {fileID: 8926484042661616049} - {fileID: 8926484042661616196} - {fileID: 8926484042661616061} - m_UIPosition: {x: 2896, y: 5815} + m_UIPosition: {x: 2755, y: 4223} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9945,6 +10015,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616034} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -11076,7 +11147,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2342, y: 6883} + m_UIPosition: {x: 2347, y: 5147} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -11100,7 +11171,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2130, y: 6751} + m_UIPosition: {x: 2207, y: 5017} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -11124,7 +11195,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2382, y: 6786} + m_UIPosition: {x: 2387, y: 5051} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -11361,7 +11432,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2462, y: 7291} + m_UIPosition: {x: 2724, y: 5445} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -11385,7 +11456,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2280, y: 7165} + m_UIPosition: {x: 2542, y: 5319} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -11409,7 +11480,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2534, y: 7201} + m_UIPosition: {x: 2796, y: 5355} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -11647,7 +11718,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661616099} - m_UIPosition: {x: 1007, y: 4427} + m_UIPosition: {x: 866, y: 2837} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -11865,7 +11936,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1007, y: 4900} + m_UIPosition: {x: 866, y: 3311} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -12237,7 +12308,7 @@ MonoBehaviour: - {fileID: 8926484042661616176} - {fileID: 8926484042661616134} - {fileID: 8926484042661616152} - m_UIPosition: {x: 1007, y: 5191} + m_UIPosition: {x: 866, y: 3601} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -12261,6 +12332,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616137} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -13254,7 +13326,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2252, y: 6416} + m_UIPosition: {x: 2111, y: 4825} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13391,7 +13463,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2644, y: 6725} + m_UIPosition: {x: 2568, y: 5085} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13528,7 +13600,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2742, y: 7239} + m_UIPosition: {x: 3004, y: 5393} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13692,26 +13764,26 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661616227} inputSlot: {fileID: 8926484042661616415} - position: {x: 273.33334, y: 48.666664} + position: {x: 608, y: 85.33334} expandedSlots: [] expanded: 0 - supecollapsed: 0 + supecollapsed: 1 - m_Id: 1 linkedSlots: - outputSlot: {fileID: 8926484042661616227} inputSlot: {fileID: 8926484042661616583} - position: {x: 2045.3334, y: 133.33333} + position: {x: 2012.6666, y: 164.66667} expandedSlots: [] expanded: 0 - supecollapsed: 0 + supecollapsed: 1 - m_Id: 2 linkedSlots: - outputSlot: {fileID: 8926484042661616227} inputSlot: {fileID: 8926484042661616479} - position: {x: 3540, y: 164.66667} + position: {x: 3260.6667, y: 158} expandedSlots: [] expanded: 0 - supecollapsed: 0 + supecollapsed: 1 --- !u!114 &8926484042661616227 MonoBehaviour: m_ObjectHideFlags: 0 @@ -14838,7 +14910,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 447, y: 1908} + m_UIPosition: {x: 782, y: 1607} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -14863,6 +14935,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616400} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -15031,6 +15104,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616404} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -23147,7 +23221,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3958, y: 1613} + m_UIPosition: {x: 3709, y: 1557} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -23174,6 +23248,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616664} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -23306,7 +23381,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 0 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/CollisionSimple.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/CollisionSimple.vfx index 7a93db85deb..681f4912b30 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/CollisionSimple.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/CollisionSimple.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Drowning Rubber Duck position: serializedVersion: 2 - x: -67 - y: 2437 - width: 737 - height: 313 + x: -207 + y: 2391 + width: 875 + height: 357 contents: - model: {fileID: 8926484042661614905} id: 0 @@ -36,24 +36,79 @@ MonoBehaviour: - model: {fileID: 8926484042661614936} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 909 + y: 17 + width: 881 + height: 1051 + contents: + - model: {fileID: 8926484042661614558} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 755 + y: -645 + width: 859 + height: 631 + contents: + - model: {fileID: 8926484042661614555} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 942 + y: 1173 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661614583} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614832} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 stickyNoteInfos: - title: Rubber Duck Collide position: serializedVersion: 2 - x: 760 - y: -523 + x: 781 + y: -586 width: 808 - height: 100 - contents: type something here - theme: Black + height: 123 + contents: + theme: textSize: Huge + colorTheme: 2 - title: Random Angle position: serializedVersion: 2 - x: 539 - y: 572 - width: 399 - height: 184 + x: 1375 + y: 565 + width: 267 + height: 235 contents: 'We don''t want all the ducks to have the same orientation. To @@ -73,13 +128,14 @@ MonoBehaviour: dealing with numerous particles. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Angular Velocity:' position: serializedVersion: 2 - x: 1369 - y: 931 + x: 1365 + y: 889 width: 399 height: 134 contents: 'To add some drifting rotation, we are adding some random angular Y @@ -93,15 +149,16 @@ MonoBehaviour: on our need, the angular velocity attribute is evaluated as a float attribute. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Collide With ... position: serializedVersion: 2 - x: 1388 - y: 1231 - width: 794 - height: 889 + x: 1372 + y: 1612 + width: 588 + height: 319 contents: "The different collide blocks allow particles to collide with one or several shapes.\n\nYou can directly set the shape's transform or wire it to a property. \r\nYou can use an exposed property to bind it to an external game @@ -116,26 +173,28 @@ MonoBehaviour: that the placement of blocks or nodes that have an impact on velocity should not be placed after the collision blocks, as this may result in a disruption of the collision calculation.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Collide with Cone:' position: serializedVersion: 2 x: 673 - y: 1568 + y: 1537 width: 262 height: 148 contents: "It is possible to add several collide blocks to the update context, so that particles can collide with several shapes.\r\nIn this example, particles collide with an inverted cone. \r\nThis prevents the ducks from leaving the pool.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Drowning Rubber Duck position: serializedVersion: 2 - x: -399 - y: 2433 + x: -181 + y: 2450 width: 349 height: 130 contents: 'To make the rubber duck disappear without being noticed, at some point @@ -148,15 +207,16 @@ MonoBehaviour: This way, the rubber duck disappears elegantly underwater. ' - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 x: -399 - y: -523 - width: 2581 - height: 3273 + y: -645 + width: 2359 + height: 3395 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -190,7 +250,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -206,10 +266,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 1 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -234,7 +290,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661614790} - {fileID: 8926484042661614810} - m_UIPosition: {x: 942, y: -374} + m_UIPosition: {x: 933, y: -442} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -274,7 +330,7 @@ MonoBehaviour: - {fileID: 8926484042661614842} - {fileID: 8926484042661614849} - {fileID: 8926484042661614864} - m_UIPosition: {x: 942, y: 135} + m_UIPosition: {x: 934, y: 77} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -642,7 +698,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614558} m_Children: [] - m_UIPosition: {x: 233.38269, y: 57.572144} + m_UIPosition: {x: 0, y: 145} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1093,6 +1149,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661614665} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -1118,7 +1175,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 3 useMaskMap: 0 useNormalMap: 0 useEmissiveMap: 0 @@ -1347,7 +1403,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614558} m_Children: [] - m_UIPosition: {x: 0, y: 0} + m_UIPosition: {x: 0, y: 241} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1783,10 +1839,10 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661614833} inputSlot: {fileID: 8926484042661614999} - position: {x: 746.6667, y: 1732.6666} + position: {x: 759.3333, y: 1692} expandedSlots: [] expanded: 0 - supecollapsed: 0 + supecollapsed: 1 --- !u!114 &8926484042661614833 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2109,7 +2165,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614558} m_Children: [] - m_UIPosition: {x: 0, y: 0} + m_UIPosition: {x: 0, y: 373} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2240,7 +2296,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614558} m_Children: [] - m_UIPosition: {x: 0, y: 0} + m_UIPosition: {x: 0, y: 470} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2371,7 +2427,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614558} m_Children: [] - m_UIPosition: {x: 0, y: 0} + m_UIPosition: {x: 0, y: 567} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3291,6 +3347,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661614965} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -3319,7 +3376,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 3 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -3768,7 +3824,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614558} m_Children: [] - m_UIPosition: {x: 0, y: 0} + m_UIPosition: {x: 0, y: 2} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4965,7 +5021,7 @@ MonoBehaviour: - {fileID: 8926484042661615030} - {fileID: 8926484042661615031} m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 0 + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_MasterSlot: {fileID: 8926484042661615015} m_MasterData: diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/Context&Flow.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/Context&Flow.vfx index c34313605ed..a66067dd06a 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/Context&Flow.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/Context&Flow.vfx @@ -13,56 +13,109 @@ MonoBehaviour: m_Name: VFXUI m_EditorClassIdentifier: groupInfos: - - title: Base Loop + - title: position: serializedVersion: 2 - x: 895 - y: -299 - width: 486 - height: 2283 + x: 541 + y: -888 + width: 1037 + height: 2933 contents: - model: {fileID: 8926484042661615015} id: 0 isStickyNote: 0 + - model: {fileID: 8926484042661615017} + id: 0 + isStickyNote: 0 - model: {fileID: 8926484042661615020} id: 0 isStickyNote: 0 + - model: {fileID: 8926484042661615035} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615039} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615058} + id: 0 + isStickyNote: 0 - model: {fileID: 8926484042661615068} id: 0 isStickyNote: 0 + - model: {fileID: 8926484042661615070} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615077} + id: 0 + isStickyNote: 0 - model: {fileID: 8926484042661615080} id: 0 isStickyNote: 0 + - model: {fileID: 8926484042661615084} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615088} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615091} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 stickyNoteInfos: - title: VFX Graph position: serializedVersion: 2 - x: 711 - y: -879 + x: 756 + y: -829 width: 796 height: 282 contents: "A VFX graph is made of one or many systems that work together to create a visual effect.\r\n\r\nA fireplace VFX might, for example, contain several systems like fire, smoke, spark, etc\u2026 \r\n" - theme: Black + theme: textSize: Medium + colorTheme: 2 - title: 'SYSTEM:' position: serializedVersion: 2 - x: 539 - y: -38 + x: 584 + y: 13 width: 281 height: 125 contents: "A \u201CSystem\u201D is a standalone part of a Visual Effect.\r\n\r\nIt has a \u201Cname\u201D and consists of several \u201Ccontexts.\u201D\r\n\r\nIn the graph view, a \u201Csystem\u201D draws a dashed line box around its \u201Ccontexts.\u201D\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'SPAWN Context:' position: serializedVersion: 2 - x: 534 - y: -297 + x: 579 + y: -247 width: 290 height: 211 contents: "The Spawn Context is responsible for spawning particles.\r\n\r\nBy @@ -71,13 +124,14 @@ MonoBehaviour: most common action to do in the spawn context is to spawn particles. One can initiate a single burst of particles, initiate particles based on a rate per second, or even use the traveled distance of the VFX.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Initialize Context position: serializedVersion: 2 - x: 535 - y: 153 + x: 580 + y: 203 width: 310 height: 175 contents: "Initialize context is called at the birth of every particle, where @@ -87,13 +141,14 @@ MonoBehaviour: is responsible for one operation. For example, set a random size, set lifetime. You can add blocks by selecting a context, pressing 'Space bar' or right-click. \r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Update Context:' position: serializedVersion: 2 - x: 592 - y: 984 + x: 637 + y: 1035 width: 281 height: 306 contents: "The Update Context processes initialized particles.\r\nVFX Graph runs @@ -105,13 +160,14 @@ MonoBehaviour: executions are based on the blocks laid down by the user.\r\n\r\nIn this scenario, the particles' positions get updated each frame based on velocity attributes influenced by gravity and drag forces.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Output Context:' position: serializedVersion: 2 - x: 521 - y: 1431 + x: 566 + y: 1481 width: 352 height: 351 contents: "Output contexts render the particles of the system. They render the @@ -126,39 +182,42 @@ MonoBehaviour: Initialize Context are multiplied over the lifetime of the particles. This enables us to manage particle size using a curve and control color and alpha over the particle's lifetime through a gradient.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: OnPlay position: serializedVersion: 2 - x: 1005 - y: -435 - width: 94 + x: 1050 + y: -385 + width: 115 height: 100 contents: ' Implicit Bind ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: OnStop position: serializedVersion: 2 - x: 1181 - y: -437 - width: 94 + x: 1226 + y: -387 + width: 115 height: 100 contents: ' Implicit Bind ' - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: 521 - y: -879 - width: 986 - height: 2863 + x: 541 + y: -888 + width: 1037 + height: 2933 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -185,7 +244,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -201,10 +260,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 1 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -228,7 +283,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615017} - m_UIPosition: {x: 920, y: -240} + m_UIPosition: {x: 965, y: -189} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -376,7 +431,7 @@ MonoBehaviour: - {fileID: 8926484042661615035} - {fileID: 8926484042661615039} - {fileID: 8926484042661615058} - m_UIPosition: {x: 920, y: 48} + m_UIPosition: {x: 965, y: 99} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1855,7 +1910,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615070} - {fileID: 8926484042661615077} - m_UIPosition: {x: 920, y: 946} + m_UIPosition: {x: 965, y: 997} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2212,7 +2267,7 @@ MonoBehaviour: - {fileID: 8926484042661615084} - {fileID: 8926484042661615088} - {fileID: 8926484042661615091} - m_UIPosition: {x: 930, y: 1348} + m_UIPosition: {x: 975, y: 1399} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2238,6 +2293,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661615086} - {fileID: 8926484042661615087} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/DecalParticles.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/DecalParticles.vfx index 1d15bbfa291..ddfe1dbf154 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/DecalParticles.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/DecalParticles.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Random TexIndex Animation position: serializedVersion: 2 - x: -1524 - y: 606 - width: 1453 - height: 429 + x: -1521 + y: 600 + width: 1447 + height: 452 contents: - model: {fileID: 8926484042661615124} id: 0 @@ -48,13 +48,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615253} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 - title: Color position: serializedVersion: 2 - x: -1063 - y: 1436 - width: 739 - height: 279 + x: -1062 + y: 1331 + width: 628 + height: 378 contents: - model: {fileID: 8926484042661615208} id: 0 @@ -68,22 +71,133 @@ MonoBehaviour: - model: {fileID: 8926484042661615276} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: -62 + y: -153 + width: 1009 + height: 1138 + contents: + - model: {fileID: 8926484042661614707} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615965} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615987} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614972} + id: 2 + isStickyNote: 0 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 148 + y: -665 + width: 593 + height: 487 + contents: + - model: {fileID: 8926484042661614700} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 1483 + y: -297 + width: 1226 + height: 2081 + contents: + - model: {fileID: 8926484042661615285} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 + - model: {fileID: 8926484042661614972} + id: 1 + isStickyNote: 0 + - model: {fileID: 8926484042661615494} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615600} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615911} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616038} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615291} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: -416 + y: 1113 + width: 1664 + height: 749 + contents: + - model: {fileID: 8926484042661615084} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615781} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616010} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616015} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615186} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615198} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 stickyNoteInfos: - title: Decal Pattern position: serializedVersion: 2 - x: 204 - y: -622 + x: 173 + y: -606 width: 542 - height: 100 - contents: type something here - theme: Black + height: 114 + contents: + theme: textSize: Huge + colorTheme: 2 - title: 'Position Skinned Mesh:' position: serializedVersion: 2 - x: 662 - y: 631 + x: 643 + y: 601 width: 278 height: 100 contents: 'This block in the update context will make our particles stick to @@ -92,94 +206,102 @@ MonoBehaviour: Enter play mode to see the mesh animated.' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Random Angle.Z position: serializedVersion: 2 - x: 657 - y: 365 + x: 639 + y: 335 width: 200 height: 100 contents: We add a random initial rotation on the Z axis of our particles. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Scale.XYZ position: serializedVersion: 2 - x: 661 - y: 157 + x: 649 + y: 200 width: 188 height: 120 contents: 'The Z-scale component is being reduced. By doing this, we are reducing the projection''s length of the decal particles. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Random TexIndex Anim position: serializedVersion: 2 - x: -1853 - y: 611 + x: -1378 + y: 926 width: 327 height: 100 contents: With the time operator, we are sampling a 1D value noise to animate the texIndex attribute. This makes a sprite move by randomly changing the frames in the sprite sheet. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Color ' position: serializedVersion: 2 - x: -1225 - y: 1459 + x: -1033 + y: 1391 width: 156 height: 106 contents: We're sampling a noise to change the color intensity over time. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Decal position: serializedVersion: 2 - x: 226 - y: 1209 - width: 445 - height: 382 + x: 267 + y: 1273 + width: 285 + height: 152 contents: "The decal output is responsible for rendering particle decals. \n\nYou will find some settings in the Inspector related to the buffer you wish to affect.\n\r\nNormals? Smoothness? Metallic? Color, etc\u2026\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: Decal Logo position: serializedVersion: 2 - x: 1865 - y: -273 - width: 542 - height: 100 - contents: type something here - theme: Black + x: 1918 + y: -237 + width: 471 + height: 112 + contents: + theme: textSize: Huge + colorTheme: 2 - title: 'Position Skinned Mesh:' position: serializedVersion: 2 - x: 2365 - y: 1173 + x: 2405 + y: 997 width: 278 height: 136 contents: "This block in the update context will make our particles stick to the animated skinned mesh.\r\n\nIn this system, we've chosen a specific triangle that is roughly centered. \n\nEnter play mode to see the mesh animated.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -1853 - y: -622 - width: 4496 - height: 2557 + x: -1521 + y: -665 + width: 4230 + height: 2527 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -248,7 +370,7 @@ MonoBehaviour: enumValues: [] descendantCount: 0 m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -264,10 +386,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 0 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -291,7 +409,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661614703} - m_UIPosition: {x: 232, y: -512} + m_UIPosition: {x: 204, y: -492} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -477,7 +595,7 @@ MonoBehaviour: - {fileID: 8926484042661615993} - {fileID: 8926484042661615999} - {fileID: 8926484042661616006} - m_UIPosition: {x: 232, y: -86} + m_UIPosition: {x: 209, y: -93} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -872,7 +990,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661614973} inputSlot: {fileID: 8926484042661616041} - position: {x: 1667.3334, y: 1247.3333} + position: {x: 1706.6666, y: 1072} expandedSlots: [] expanded: 0 supecollapsed: 0 @@ -880,10 +998,10 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661614973} inputSlot: {fileID: 8926484042661615968} - position: {x: -22, y: 664.6667} + position: {x: -36.666668, y: 681.3334} expandedSlots: [] expanded: 0 - supecollapsed: 0 + supecollapsed: 1 --- !u!114 &8926484042661614973 MonoBehaviour: m_ObjectHideFlags: 0 @@ -937,7 +1055,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615180} - {fileID: 8926484042661615167} - m_UIPosition: {x: -251, y: 1183} + m_UIPosition: {x: -173, y: 1173} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -967,6 +1085,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615093} + useBaseColorMap: -1 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -985,14 +1104,13 @@ MonoBehaviour: enableRayTracing: 0 decimationFactor: 1 raytracedScaleMode: 0 - needsOwnSort: 0 + needsOwnSort: 1 needsOwnAabbBuffer: 0 shaderGraph: {fileID: 0} materialSettings: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: -1 useMaskMap: 0 useNormalMap: 0 useEmissiveMap: 1 @@ -1176,7 +1294,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1487, y: 665} + m_UIPosition: {x: -1484, y: 659} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -1941,7 +2059,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -553, y: 1718} + m_UIPosition: {x: -391, y: 1675} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2136,7 +2254,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -487, y: 1465} + m_UIPosition: {x: -365, y: 1485} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -2427,7 +2545,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -571, y: 833} + m_UIPosition: {x: -568, y: 827} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -2799,7 +2917,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -251, y: 833} + m_UIPosition: {x: -248, y: 827} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2894,7 +3012,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -945, y: 931} + m_UIPosition: {x: -942, y: 925} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -2993,7 +3111,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1307, y: 713} + m_UIPosition: {x: -1304, y: 707} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3130,7 +3248,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1133, y: 713} + m_UIPosition: {x: -1130, y: 707} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3225,7 +3343,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -945, y: 793} + m_UIPosition: {x: -942, y: 787} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3362,7 +3480,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1499, y: 809} + m_UIPosition: {x: -1496, y: 803} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3457,7 +3575,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -759, y: 833} + m_UIPosition: {x: -756, y: 827} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -4272,7 +4390,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615287} - m_UIPosition: {x: 1939, y: -86} + m_UIPosition: {x: 1953, y: -93} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4458,12 +4576,11 @@ MonoBehaviour: - {fileID: 8926484042661616029} - {fileID: 8926484042661616026} - {fileID: 8926484042661616035} - m_UIPosition: {x: 1939, y: 448} + m_UIPosition: {x: 1979, y: 273} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: - {fileID: 8926484042661615292} - - {fileID: 8926484042661615301} m_OutputSlots: [] m_Label: Initialize Particles m_Data: {fileID: 8926484042661615305} @@ -4502,7 +4619,7 @@ MonoBehaviour: m_Type: m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"center":{"x":0.0,"y":-2.0,"z":0.0},"size":{"x":7.0,"y":8.0,"z":7.0}}' + m_SerializableObject: '{"center":{"x":0.0,"y":1.0,"z":0.0},"size":{"x":2.0,"y":2.0,"z":2.0}}' m_Space: 0 m_Property: name: bounds @@ -4781,142 +4898,6 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661615301 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: - - {fileID: 8926484042661615302} - - {fileID: 8926484042661615303} - - {fileID: 8926484042661615304} - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615301} - m_MasterData: - m_Owner: {fileID: 8926484042661615291} - m_Value: - m_Type: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"x":0.5,"y":0.5,"z":0.5}' - m_Space: -1 - m_Property: - name: boundsPadding - m_serializedType: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661615302 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661615301} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615301} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: x - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661615303 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661615301} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615301} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: y - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661615304 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661615301} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615301} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: z - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] --- !u!114 &8926484042661615305 MonoBehaviour: m_ObjectHideFlags: 0 @@ -4946,7 +4927,7 @@ MonoBehaviour: stripCapacity: 1 particlePerStripCount: 32 needsComputeBounds: 0 - boundsMode: 0 + boundsMode: 1 m_Space: 0 --- !u!114 &8926484042661615494 MonoBehaviour: @@ -4964,7 +4945,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615562} - m_UIPosition: {x: 1667, y: 1474} + m_UIPosition: {x: 1707, y: 1299} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4992,6 +4973,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615521} + useBaseColorMap: 2 colorMapping: 0 uvMode: 3 flipbookLayout: 0 @@ -5010,14 +4992,13 @@ MonoBehaviour: enableRayTracing: 0 decimationFactor: 1 raytracedScaleMode: 0 - needsOwnSort: 0 + needsOwnSort: 1 needsOwnAabbBuffer: 0 shaderGraph: {fileID: 0} materialSettings: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 2 useMaskMap: 0 useNormalMap: 0 useEmissiveMap: 0 @@ -5637,7 +5618,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1377, y: 1725} + m_UIPosition: {x: 1508, y: 1566} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -5663,7 +5644,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615824} - {fileID: 8926484042661615830} - m_UIPosition: {x: 720, y: 1203} + m_UIPosition: {x: 797, y: 1193} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -5693,6 +5674,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615790} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -5721,7 +5703,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 3 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -6652,7 +6633,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615953} - m_UIPosition: {x: 2199, y: 1474} + m_UIPosition: {x: 2239, y: 1299} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6680,6 +6661,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615920} + useBaseColorMap: 2 colorMapping: 0 uvMode: 3 flipbookLayout: 0 @@ -6708,7 +6690,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 2 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -7339,7 +7320,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615967} - {fileID: 8926484042661616003} - m_UIPosition: {x: 232, y: 541} + m_UIPosition: {x: 209, y: 553} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -7376,7 +7357,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661615965} m_Children: [] - m_UIPosition: {x: 0, y: 420} + m_UIPosition: {x: 0, y: 2} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7923,7 +7904,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 26, y: 733} + m_UIPosition: {x: 17, y: 725} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -8250,7 +8231,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661615965} m_Children: [] - m_UIPosition: {x: 0, y: 210} + m_UIPosition: {x: 0, y: 204} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8312,7 +8293,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614707} m_Children: [] - m_UIPosition: {x: 0, y: 287} + m_UIPosition: {x: 0, y: 209} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8443,7 +8424,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 453, y: 1549} + m_UIPosition: {x: 531, y: 1539} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -8467,7 +8448,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 437, y: 1690} + m_UIPosition: {x: 515, y: 1681} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -8678,7 +8659,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661616040} - m_UIPosition: {x: 1939, y: 1059} + m_UIPosition: {x: 1979, y: 883} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/FlipbookBlending.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/FlipbookBlending.vfx index a96d9e47658..e5dd4ef15ad 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/FlipbookBlending.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/FlipbookBlending.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Burst position: serializedVersion: 2 - x: -3 - y: 295 - width: 1049 - height: 2207 + x: -340 + y: 192 + width: 1763 + height: 2326 contents: - model: {fileID: 8926484042661614700} id: 0 @@ -36,24 +36,37 @@ MonoBehaviour: - model: {fileID: 8926484042661615108} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 stickyNoteInfos: - title: Flipbook Blending position: serializedVersion: 2 - x: 128 - y: 148 + x: 157 + y: 251 width: 735 height: 101 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: 'FlipBook Player:' position: serializedVersion: 2 - x: 728 - y: 1467 - width: 549 - height: 292 + x: 763 + y: 1563 + width: 221 + height: 153 contents: 'The Flipbook Player allows you to easily animate your flipbook or sprite sheet. @@ -66,29 +79,31 @@ MonoBehaviour: texIndex += frameRate * delta Time ; ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: Blend Frame position: serializedVersion: 2 - x: -577 - y: 1846 - width: 551 - height: 320 + x: -315 + y: 1968 + width: 314 + height: 107 contents: 'This output renders the yellow smoke particle. Each frame is alpha-blended with the previous one. But with a very low frame rate, we can see steps in the animation as we don''t have enough animation frame data. ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Blend Frame: Motion Vector' position: serializedVersion: 2 x: 1065 - y: 1872 - width: 670 - height: 563 + y: 1887 + width: 333 + height: 265 contents: 'This output is rendering the blue smoke particle. On this output, the Motion Vector Blend is activated. This allows us to use another texture to blend between frames. In this texture, the pixel displacement from one frame @@ -104,8 +119,9 @@ MonoBehaviour: to be huge, and can help reduce the number of frames in a flipbook animation. ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 categories: [] uiBounds: serializedVersion: 2 @@ -140,7 +156,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -156,10 +172,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 0 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -1609,6 +1621,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661615100} - {fileID: 8926484042661615151} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -1897,6 +1910,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661615117} - {fileID: 8926484042661615152} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/FlipbookMode.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/FlipbookMode.vfx index 48a8442732f..4af8d83aa03 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/FlipbookMode.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/FlipbookMode.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Position Line position: serializedVersion: 2 - x: -370 - y: 1343 - width: 311 - height: 271 + x: -704 + y: 1329 + width: 577 + height: 272 contents: - model: {fileID: 8926484042661615495} id: 0 @@ -27,13 +27,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615576} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 - title: Shader Graph position: serializedVersion: 2 - x: -785 - y: 1664 - width: 725 - height: 279 + x: -1025 + y: 1669 + width: 904 + height: 281 contents: - model: {fileID: 8926484042661614814} id: 0 @@ -50,13 +53,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615569} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 - title: Position Line position: serializedVersion: 2 - x: 1727 - y: 642 - width: 313 - height: 321 + x: 1369 + y: 581 + width: 617 + height: 754 contents: - model: {fileID: 8926484042661615149} id: 0 @@ -64,13 +70,25 @@ MonoBehaviour: - model: {fileID: 8926484042661615576} id: 1 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 8926484042661615072} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615076} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615078} + id: 0 + isStickyNote: 0 - title: Angle and Color Flicker position: serializedVersion: 2 - x: 1079 - y: 1563 - width: 965 - height: 438 + x: 922 + y: 1529 + width: 969 + height: 443 contents: - model: {fileID: 8926484042661615535} id: 0 @@ -90,12 +108,188 @@ MonoBehaviour: - model: {fileID: 8926484042661615613} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 1424 + y: 2034 + width: 1759 + height: 708 + contents: + - model: {fileID: 8926484042661614908} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614938} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615191} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615151} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615184} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615199} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615194} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615196} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: -100 + y: 602 + width: 577 + height: 1415 + contents: + - model: {fileID: 8926484042661615636} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615637} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615450} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615452} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615456} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615701} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 1949 + y: -29 + width: 947 + height: 1969 + contents: + - model: {fileID: 8926484042661614555} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614606} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614558} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615657} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614959} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615592} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615589} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615597} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614948} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614583} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614945} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615604} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615607} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 3873 + y: 1447 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661615202} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615317} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615280} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615212} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615222} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615315} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615287} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615232} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615242} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615244} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615248} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615263} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615265} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 10 + isStickyNote: 1 stickyNoteInfos: - title: 'Position Line:' position: serializedVersion: 2 - x: -677 - y: 1324 + x: -679 + y: 1388 width: 262 height: 171 contents: 'A line is defined thanks to a line property. @@ -112,13 +306,14 @@ MonoBehaviour: or 1. This means they will both be positioned on the extremity of the line. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Shader Graph:' position: serializedVersion: 2 - x: -1043 - y: 1667 + x: -999 + y: 1736 width: 248 height: 186 contents: 'A shader graph has been created, and properties have been exposed. @@ -134,13 +329,14 @@ MonoBehaviour: Here, it''s to fake some wax illumination in the shader. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Position Line:' position: serializedVersion: 2 - x: 1463 - y: 647 + x: 1484 + y: 640 width: 262 height: 180 contents: 'A line is defined thanks to a line property. @@ -157,26 +353,28 @@ MonoBehaviour: or 1. This means they will both be positioned on the extremity of the line. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Random Texindex:' position: serializedVersion: 2 - x: 2500 - y: 1241 + x: 2447 + y: 1216 width: 284 height: 100 contents: Setting a random value for texIndex attribute will offset each starting frame's animation - theme: Black + theme: textSize: Small + colorTheme: 3 - title: 'FlipBook Player:' position: serializedVersion: 2 - x: 2503 - y: 1511 - width: 549 - height: 326 + x: 2447 + y: 1531 + width: 423 + height: 121 contents: 'The Flipbook Player allows you to easily animate your flipbook or sprite sheet. @@ -189,66 +387,72 @@ MonoBehaviour: texIndex += frameRate * delta Time ; ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Noise:' position: serializedVersion: 2 - x: 1093 - y: 1817 + x: 976 + y: 1799 width: 258 height: 148 contents: "We're feeding the time into a 1D value noise to get some animated random values. Those values are used to give some life to our small flames by \u201Cnoising\u201D the angle and color attributes.\r\nThis gives some life by adding some random rotation movement and fake color illumination.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'UV Mode Flipbook Blend Frames:' position: serializedVersion: 2 - x: 2877 - y: 2021 - width: 647 - height: 261 + x: 2841 + y: 2187 + width: 317 + height: 151 contents: "The Flame on the Right has its UV move set to \u201Cflipbook blend\u201D.\r\nThis will blend or interpolate between frames and have smoother motion.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'UV Mode Flipbook :' position: serializedVersion: 2 - x: 1140 - y: 2063 - width: 666 - height: 320 + x: 1449 + y: 2197 + width: 364 + height: 132 contents: "The flame on the left has its UV move set to \u201Cflipbook,\u201D and the \u201Cflipbook blend frames\u201D option is turned off. This means that no blend or interpolation between frames is done during animation.\r\n\r\nDepending on your animation frame rate and the number of frames in your sprite sheet, this can cause animation stepping to be visible between each frame.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: Candle Mesh position: serializedVersion: 2 - x: -79 - y: 651 + x: -75 + y: 661 width: 526 height: 101 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: FlipBook Flame position: serializedVersion: 2 - x: 2013 - y: 33 + x: 1975 + y: 31 width: 605 height: 101 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: FlipBook Mode Debug position: serializedVersion: 2 @@ -257,15 +461,16 @@ MonoBehaviour: width: 865 height: 101 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -1043 - y: 33 - width: 5827 - height: 2580 + x: -1024 + y: -29 + width: 5809 + height: 2770 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -320,7 +525,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -336,10 +541,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -363,7 +564,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661614606} - m_UIPosition: {x: 2061, y: 165} + m_UIPosition: {x: 2023, y: 163} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -402,7 +603,7 @@ MonoBehaviour: - {fileID: 8926484042661615589} - {fileID: 8926484042661615597} - {fileID: 8926484042661614948} - m_UIPosition: {x: 2061, y: 505} + m_UIPosition: {x: 2023, y: 503} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -773,7 +974,7 @@ MonoBehaviour: - {fileID: 8926484042661614945} - {fileID: 8926484042661615604} - {fileID: 8926484042661615607} - m_UIPosition: {x: 2061, y: 1447} + m_UIPosition: {x: 2023, y: 1445} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -960,7 +1161,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -760, y: 1748} + m_UIPosition: {x: -753, y: 1754} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -1227,7 +1428,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -395, y: 1794} + m_UIPosition: {x: -387, y: 1800} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -1599,7 +1800,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -568, y: 1795} + m_UIPosition: {x: -561, y: 1800} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -1738,7 +1939,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661614938} - {fileID: 8926484042661615191} - m_UIPosition: {x: 2423, y: 1997} + m_UIPosition: {x: 2409, y: 2101} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1764,6 +1965,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661614911} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -2348,7 +2550,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1133, y: 1775} + m_UIPosition: {x: 975, y: 1743} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -2615,7 +2817,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1299, y: 1743} + m_UIPosition: {x: 1141, y: 1711} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -2682,7 +2884,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1439, y: 1743} + m_UIPosition: {x: 1281, y: 1711} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2986,7 +3188,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -758, y: 1888} + m_UIPosition: {x: -751, y: 1894} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -3085,7 +3287,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1779, y: 1177} + m_UIPosition: {x: 1682, y: 1137} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3152,7 +3354,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1549, y: 1239} + m_UIPosition: {x: 1452, y: 1199} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3176,7 +3378,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1491, y: 1137} + m_UIPosition: {x: 1394, y: 1097} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3748,7 +3950,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1753, y: 823} + m_UIPosition: {x: 1652, y: 818} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3774,7 +3976,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615184} - {fileID: 8926484042661615199} - m_UIPosition: {x: 1831, y: 1989} + m_UIPosition: {x: 1817, y: 2093} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3800,6 +4002,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615165} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -4188,7 +4391,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1539, y: 2501} + m_UIPosition: {x: 1525, y: 2605} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4212,7 +4415,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2173, y: 2535} + m_UIPosition: {x: 2159, y: 2639} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4398,6 +4601,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615211} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -4585,6 +4789,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615231} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -5641,7 +5846,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615452} - m_UIPosition: {x: -52, y: 784} + m_UIPosition: {x: -48, y: 795} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -5825,7 +6030,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615701} - m_UIPosition: {x: -52, y: 1172} + m_UIPosition: {x: -48, y: 1183} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6191,7 +6396,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -345, y: 1475} + m_UIPosition: {x: -411, y: 1465} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -6215,7 +6420,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1861, y: 1621} + m_UIPosition: {x: 1703, y: 1589} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6351,7 +6556,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1861, y: 1805} + m_UIPosition: {x: 1703, y: 1773} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6555,7 +6760,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -340, y: 1723} + m_UIPosition: {x: -333, y: 1728} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -6606,7 +6811,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661615577} inputSlot: {fileID: 8926484042661615702} - position: {x: -244, y: 1402} + position: {x: -310, y: 1392} expandedSlots: [] expanded: 0 supecollapsed: 0 @@ -6614,7 +6819,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661615577} inputSlot: {fileID: 8926484042661615658} - position: {x: 1861.3334, y: 700.6667} + position: {x: 1759.3334, y: 696} expandedSlots: - {fileID: 8926484042661615577} expanded: 0 @@ -7252,7 +7457,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1105, y: 1661} + m_UIPosition: {x: 947, y: 1629} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -7559,7 +7764,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615637} - m_UIPosition: {x: -52, y: 1637} + m_UIPosition: {x: -48, y: 1647} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7586,6 +7791,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615644} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripGPUEvents.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripGPUEvents.vfx index 7fcce81045a..860aee36ce7 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripGPUEvents.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripGPUEvents.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Offset Position Side along Path position: serializedVersion: 2 - x: 777 - y: 12467 - width: 1295 - height: 435 + x: 569 + y: 12498 + width: 1946 + height: 616 contents: - model: {fileID: 8926484042661619988} id: 0 @@ -51,13 +51,28 @@ MonoBehaviour: - model: {fileID: 8926484042661619963} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 15 + isStickyNote: 1 + - model: {fileID: 8926484042661619856} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619886} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619920} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 16 + isStickyNote: 1 - title: Rotate position: serializedVersion: 2 - x: 1100 - y: 13017 - width: 955 - height: 339 + x: 1017 + y: 13062 + width: 953 + height: 340 contents: - model: {fileID: 8926484042661619862} id: 0 @@ -83,10 +98,10 @@ MonoBehaviour: - title: Light Off position: serializedVersion: 2 - x: -1036 - y: 13489 + x: -1093 + y: 13225 width: 1051 - height: 1791 + height: 1739 contents: - model: {fileID: 8926484042661620696} id: 0 @@ -112,10 +127,10 @@ MonoBehaviour: - title: Bezier Path position: serializedVersion: 2 - x: -5197 - y: 10611 - width: 1745 - height: 612 + x: -5132 + y: 10565 + width: 1747 + height: 613 contents: - model: {fileID: 8926484042661618850} id: 0 @@ -159,13 +174,16 @@ MonoBehaviour: - model: {fileID: 8926484042661619393} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 - title: Noise 2D position: serializedVersion: 2 x: -5018 - y: 11235 - width: 1573 - height: 551 + y: 11233 + width: 1462 + height: 553 contents: - model: {fileID: 8926484042661619268} id: 0 @@ -206,36 +224,16 @@ MonoBehaviour: - model: {fileID: 8926484042661620896} id: 0 isStickyNote: 0 - - title: Random Position - position: - serializedVersion: 2 - x: -3259 - y: 9737 - width: 1097 - height: 251 - contents: - - model: {fileID: 8926484042661620395} - id: 0 - isStickyNote: 0 - - model: {fileID: 8926484042661620398} - id: 0 - isStickyNote: 0 - - model: {fileID: 8926484042661620391} - id: 0 - isStickyNote: 0 - - model: {fileID: 8926484042661620868} - id: 0 - isStickyNote: 0 - - model: {fileID: 8926484042661620871} - id: 0 - isStickyNote: 0 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 - title: Travel 0-1 position: serializedVersion: 2 - x: -3239 - y: 10303 - width: 1059 - height: 371 + x: -3273 + y: 10374 + width: 1054 + height: 336 contents: - model: {fileID: 8926484042661618652} id: 0 @@ -255,13 +253,16 @@ MonoBehaviour: - model: {fileID: 8926484042661618647} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 - title: Trigger Logic position: serializedVersion: 2 - x: 0 - y: 0 - width: 100 - height: 100 + x: -2820 + y: 11067 + width: 688 + height: 505 contents: - model: {fileID: 8926484042661620491} id: 0 @@ -278,13 +279,16 @@ MonoBehaviour: - model: {fileID: 8926484042661620631} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 12 + isStickyNote: 1 - title: lights ON position: serializedVersion: 2 - x: 0 - y: 0 - width: 100 - height: 100 + x: -1177 + y: 11111 + width: 1134 + height: 2030 contents: - model: {fileID: 8926484042661620500} id: 0 @@ -292,60 +296,347 @@ MonoBehaviour: - model: {fileID: 8926484042661620503} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661620610} + - model: {fileID: 8926484042661620547} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661620846} + - model: {fileID: 8926484042661620804} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661620774} + - model: {fileID: 8926484042661620662} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661620547} + - model: {fileID: 8926484042661620675} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661620561} + - model: {fileID: 8926484042661620682} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661620656} + - model: {fileID: 8926484042661620806} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661620554} + - model: {fileID: 8926484042661620545} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661620551} + - title: + position: + serializedVersion: 2 + x: -2110 + y: 8424 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661618433} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661620804} + - model: {fileID: 8926484042661618437} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661620662} + - model: {fileID: 8926484042661618440} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661620675} + - model: {fileID: 8926484042661618608} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661620682} + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: -2175 + y: 7988 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661620850} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661620806} + - model: {fileID: 8926484042661620852} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661620545} + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - title: Initialize + position: + serializedVersion: 2 + x: -2659 + y: 8836 + width: 1396 + height: 1474 + contents: + - model: {fileID: 8926484042661618444} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618459} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618461} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661620406} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618788} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618758} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618777} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661620770} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661620472} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661621158} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618597} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618783} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618818} id: 0 isStickyNote: 0 + - model: {fileID: 8926484042661618829} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661620478} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - title: Random Position + position: + serializedVersion: 2 + x: -3616 + y: 9641 + width: 1380 + height: 279 + contents: + - model: {fileID: 8926484042661620395} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661620398} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661620391} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661620868} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661620871} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - title: Update + position: + serializedVersion: 2 + x: -2592 + y: 10654 + width: 1269 + height: 829 + contents: + - model: {fileID: 8926484042661618489} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661621015} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 10 + isStickyNote: 1 + - model: {fileID: 0} + id: 11 + isStickyNote: 1 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 + - title: Output + position: + serializedVersion: 2 + x: -2765 + y: 11591 + width: 1086 + height: 847 + contents: + - model: {fileID: 8926484042661618519} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618540} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618544} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618550} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618557} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618638} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618641} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618568} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618580} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 13 + isStickyNote: 1 + - title: Initialize + position: + serializedVersion: 2 + x: 1896 + y: 11567 + width: 1487 + height: 1027 + contents: + - model: {fileID: 8926484042661619791} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619806} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619808} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619810} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619844} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619846} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619848} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619850} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619838} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619883} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619908} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619914} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619932} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661620306} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661620317} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661620379} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661620382} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661621153} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661621151} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661621149} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 14 + isStickyNote: 1 + - title: Outputs + position: + serializedVersion: 2 + x: 2114 + y: 13177 + width: 1221 + height: 913 + contents: + - model: {fileID: 8926484042661619764} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619771} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619774} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619777} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619780} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661621130} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661621136} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661621138} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661621141} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661621144} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661620455} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 18 + isStickyNote: 1 + - model: {fileID: 0} + id: 17 + isStickyNote: 1 stickyNoteInfos: - title: Master Spawn position: serializedVersion: 2 - x: -1677 - y: 8215 + x: -1742 + y: 8136 width: 191 height: 122 contents: "This Spawn Context will start its child Spawner every 10.5 seconds. \n\nIt's responsible for restarting the VFX." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Spawn Jacks position: serializedVersion: 2 @@ -364,8 +655,9 @@ MonoBehaviour: In our case, we choose to spawn 20 strips of cables. So we spawn 20 particles each spawn loop.' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Loop Index position: serializedVersion: 2 @@ -383,13 +675,14 @@ MonoBehaviour: Head ID. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Position Sequential 3D position: serializedVersion: 2 - x: -1670 - y: 9390 + x: -1656 + y: 9285 width: 367 height: 209 contents: 'This block is practical for distributing the particle''s position @@ -415,13 +708,14 @@ MonoBehaviour: With that, all our particles are placed correctly. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Target Position position: serializedVersion: 2 - x: -2637 - y: 9608 + x: -2634 + y: 9491 width: 317 height: 120 contents: 'We want our particles to start on the ground and travel to this Jack''s @@ -431,13 +725,14 @@ MonoBehaviour: store the current position in the Target position attribute. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Random Position position: serializedVersion: 2 - x: -3543 - y: 9777 + x: -3591 + y: 9701 width: 270 height: 195 contents: 'The start position of our particles will be inside a circle. @@ -453,76 +748,82 @@ MonoBehaviour: with a matching texIndex spawn at the same location. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Travel 0-1 position: serializedVersion: 2 - x: -3488 - y: 10308 + x: -2581 + y: 10433 width: 234 height: 111 contents: "We're creating random 0\u20131 values stored in a travel attribute. \n\nThis represents the \"travel ratio\" from the initial to the target position." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Bezier Path position: serializedVersion: 2 - x: -5188 - y: 10627 + x: -4925 + y: 10685 width: 323 height: 154 contents: "We want to Lerp between the initial and target positions, both stored in the initialize context. \nBut instead of doing a simple Lerp, we're using a sample Bezier operator to get a Bezier path between the two points.\n\r\nThe interpolation is done thanks to our previously calculated travel attribute.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Noise 2D position: serializedVersion: 2 x: -5003 - y: 11261 + y: 11294 width: 194 height: 109 contents: 'We''re creating a 2D noise to be added to our bezier path to create an even more exciting motion. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Noise Bezier output position: serializedVersion: 2 - x: -2558 - y: 10757 + x: -2563 + y: 10775 width: 351 height: 122 contents: "A custom subgraph has been made to get a cleaner graph. \n\nThis allows you to input the position and tangent of a Bezier spline and a 2D noise and its derivative. The result of the subgraph will output a noisy position and tangent.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Position Direction position: serializedVersion: 2 - x: -1680 - y: 10854 + x: -1685 + y: 10873 width: 336 height: 148 contents: "We're getting the position and tangent out of the sample bezier operator.\n\nThis animates the position from the initial position to the target position. \n\nThe tangents set the direction attribute that will be used to orient the particles in the output context." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Trigger Shape Box position: serializedVersion: 2 - x: -1677 - y: 11009 + x: -1681 + y: 11027 width: 318 height: 150 contents: 'A trigger box has been placed to represent the collision with the @@ -537,26 +838,28 @@ MonoBehaviour: new particles in our strip. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Trigger Logic position: serializedVersion: 2 - x: -2808 - y: 11357 + x: -2793 + y: 11369 width: 339 height: 177 contents: "Those compare operations allow us to activate or deactivate the trigger of particle events. \n\nWhen the jack reaches its plug, we want to stop spawning particles in our Strip/Cables. \n\nWe also wish to spawn new particles (the green flow dots) to give z visual feedback that the jack is plugged correctly.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Set Alive position: serializedVersion: 2 - x: -2992 - y: 11932 + x: -2740 + y: 11752 width: 376 height: 242 contents: "We spawned way more jack particle meshes than needed to get multiple @@ -568,25 +871,27 @@ MonoBehaviour: compute culling option in the Inspector. \n\nThe particles set to Not Alive in the output context are culled in a compute pass rather than in the vertex shader.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Position Sequential Circle position: serializedVersion: 2 - x: 3015 - y: 11840 + x: 3099 + y: 11989 width: 259 height: 136 contents: "This block allows us to distribute our strips/cables circularly. \n\nTo orient the circle correctly, we use the parent's direction were we stored the bezier spline's tangent.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Offset along Path position: serializedVersion: 2 - x: 793 - y: 12265 + x: 594 + y: 12557 width: 323 height: 160 contents: "To create an interesting and organic motion, we're moving particles @@ -594,25 +899,27 @@ MonoBehaviour: and the 0-1 travel value inherited from the parents particles.\n\r\nThose operations allow us to slightly offset each cable randomly so they are not stacked on the main travel path.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Rotate3D position: serializedVersion: 2 - x: 2105 - y: 12977 + x: 2110 + y: 12812 width: 324 - height: 131 + height: 159 contents: "We're also rotating the particle's position around the Bezier spline path to achieve an even more appealing motion.\n\nThe rotation amount is driven by the age over lifetime (0\u20131) and the travel attribute.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Normal Bending position: serializedVersion: 2 - x: 3017 - y: 13635 + x: 2859 + y: 13868 width: 277 height: 196 contents: "We can use the normal bending factor to get a better volumetric effect. @@ -620,13 +927,14 @@ MonoBehaviour: strip). \n\nIt is practical to get a nice volumetric look when creating wires, cables, or tentacles.\n\r\nTo turn this feature on, select the \u201COutput Context\u201D and look for \u201CNormal Bending.\u201D\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Random Selector Weighted position: serializedVersion: 2 - x: 2297 - y: 13463 + x: 2139 + y: 13696 width: 276 height: 260 contents: "The random operator is the simplest solution to generate randomization.\nWhile @@ -636,15 +944,16 @@ MonoBehaviour: Random Selector Weighted. It provides the capability to select a specified number of values and assign a weight to each entry.\n\nThis gives you great control over your random distribution to get more appealing results.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -5197 - y: 8067 - width: 8665 - height: 7213 + x: -5132 + y: 7929 + width: 8515 + height: 7085 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -781,9 +1090,10 @@ MonoBehaviour: - {fileID: 8926484042661620323} m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 - m_SubgraphDependencies: [] + m_SubgraphDependencies: + - {fileID: 5371698745253816930, guid: 74ad4091495a97a459ad111a59b55d07, type: 3} m_CategoryPath: --- !u!2058629511 &8926484042661614527 VisualEffectResource: @@ -797,10 +1107,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 1 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -1215,7 +1521,7 @@ MonoBehaviour: - {fileID: 8926484042661620770} - {fileID: 8926484042661620472} - {fileID: 8926484042661621158} - m_UIPosition: {x: -2110, y: 8980} + m_UIPosition: {x: -2111, y: 8895} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1711,7 +2017,7 @@ MonoBehaviour: - {fileID: 8926484042661620615} - {fileID: 8926484042661620487} - {fileID: 8926484042661620210} - m_UIPosition: {x: -2110, y: 10695} + m_UIPosition: {x: -2115, y: 10713} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2313,7 +2619,7 @@ MonoBehaviour: - {fileID: 8926484042661618544} - {fileID: 8926484042661618550} - {fileID: 8926484042661618557} - m_UIPosition: {x: -2110, y: 11601} + m_UIPosition: {x: -2130, y: 11651} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2342,6 +2648,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661618543} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -3618,8 +3925,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2306, y: 11812} - m_UICollapsed: 0 + m_UIPosition: {x: -2295, y: 11903} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] m_OutputSlots: @@ -3779,8 +4086,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2306, y: 12138} - m_UICollapsed: 0 + m_UIPosition: {x: -2313, y: 12231} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] m_OutputSlots: @@ -3940,7 +4247,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2307, y: 10095} + m_UIPosition: {x: -2308, y: 10011} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -4478,7 +4785,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2599, y: 11955} + m_UIPosition: {x: -2619, y: 12005} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4537,7 +4844,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2389, y: 11955} + m_UIPosition: {x: -2424, y: 11997} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4668,7 +4975,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2372, y: 10534} + m_UIPosition: {x: -2409, y: 10571} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4763,7 +5070,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2802, y: 10575} + m_UIPosition: {x: -2839, y: 10611} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4819,7 +5126,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2560, y: 10532} + m_UIPosition: {x: -2597, y: 10569} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4956,8 +5263,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -3826, y: 10897} - m_UICollapsed: 0 + m_UIPosition: {x: -3761, y: 10852} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: - {fileID: 8926484042661618727} @@ -6890,7 +7197,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2326, y: 9997} + m_UIPosition: {x: -2327, y: 9913} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -7284,7 +7591,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2313, y: 9646} + m_UIPosition: {x: -2314, y: 9561} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -7445,7 +7752,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2313, y: 9374} + m_UIPosition: {x: -2314, y: 9289} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -7539,7 +7846,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -5134, y: 10920} + m_UIPosition: {x: -5069, y: 10875} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -7700,7 +8007,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -5172, y: 11004} + m_UIPosition: {x: -5107, y: 10959} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -7861,7 +8168,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -4156, y: 10868} + m_UIPosition: {x: -4091, y: 10823} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -8304,8 +8611,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -4156, y: 10993} - m_UICollapsed: 0 + m_UIPosition: {x: -4091, y: 10948} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: - {fileID: 8926484042661618891} @@ -8747,7 +9054,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -4452, y: 10896} + m_UIPosition: {x: -4387, y: 10851} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9052,7 +9359,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -4668, y: 10966} + m_UIPosition: {x: -4603, y: 10921} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9118,7 +9425,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -4452, y: 11012} + m_UIPosition: {x: -4387, y: 10967} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9150,7 +9457,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -4944, y: 10966} + m_UIPosition: {x: -4879, y: 10921} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -10501,7 +10808,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -4360, y: 10806} + m_UIPosition: {x: -4295, y: 10761} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -10970,7 +11277,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -4400, y: 11124} + m_UIPosition: {x: -4335, y: 11079} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -11131,7 +11438,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -4074, y: 10795} + m_UIPosition: {x: -4009, y: 10750} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -11292,7 +11599,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -4089, y: 11124} + m_UIPosition: {x: -4023, y: 11079} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -12093,7 +12400,7 @@ MonoBehaviour: - {fileID: 8926484042661619774} - {fileID: 8926484042661619777} - {fileID: 8926484042661619780} - m_UIPosition: {x: 2594, y: 13003} + m_UIPosition: {x: 2437, y: 13236} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -12119,6 +12426,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661619773} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -12144,7 +12452,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 0 useMaskMap: 0 useNormalMap: 0 useEmissiveMap: 0 @@ -12896,7 +13203,7 @@ MonoBehaviour: - {fileID: 8926484042661619848} - {fileID: 8926484042661619850} - {fileID: 8926484042661619838} - m_UIPosition: {x: 2585, y: 11502} + m_UIPosition: {x: 2665, y: 11627} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -14637,7 +14944,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1870, y: 12930} + m_UIPosition: {x: 1844, y: 13015} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -14798,7 +15105,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1157, y: 13076} + m_UIPosition: {x: 1075, y: 13121} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -14857,7 +15164,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1125, y: 13222} + m_UIPosition: {x: 1043, y: 13267} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -14913,7 +15220,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1667, y: 13140} + m_UIPosition: {x: 1585, y: 13185} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -15050,7 +15357,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1865, y: 13140} + m_UIPosition: {x: 1783, y: 13185} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -15187,7 +15494,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1369, y: 13092} + m_UIPosition: {x: 1287, y: 13137} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -15314,7 +15621,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1369, y: 13198} + m_UIPosition: {x: 1287, y: 13243} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -15441,7 +15748,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2365, y: 11807} + m_UIPosition: {x: 2445, y: 11931} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -15500,7 +15807,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2094, y: 12829} + m_UIPosition: {x: 2068, y: 12914} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -16244,7 +16551,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1857, y: 12000} + m_UIPosition: {x: 1937, y: 12125} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -16406,7 +16713,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2382, y: 11959} + m_UIPosition: {x: 2463, y: 12083} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -16567,7 +16874,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1870, y: 12850} + m_UIPosition: {x: 1844, y: 12935} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -16728,7 +17035,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2140, y: 12064} + m_UIPosition: {x: 2221, y: 12189} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -17164,7 +17471,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1617, y: 13258} + m_UIPosition: {x: 1535, y: 13303} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -17331,7 +17638,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1189, y: 12525} + m_UIPosition: {x: 1150, y: 12641} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -17767,7 +18074,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 981, y: 12525} + m_UIPosition: {x: 942, y: 12641} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -17928,7 +18235,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 847, y: 12621} + m_UIPosition: {x: 808, y: 12737} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -17987,7 +18294,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1787, y: 12587} + m_UIPosition: {x: 1748, y: 12703} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -18430,7 +18737,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1587, y: 12763} + m_UIPosition: {x: 1548, y: 12879} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -18591,7 +18898,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1285, y: 12707} + m_UIPosition: {x: 1246, y: 12823} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -18728,7 +19035,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 803, y: 12803} + m_UIPosition: {x: 764, y: 12919} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -18784,7 +19091,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1029, y: 12635} + m_UIPosition: {x: 990, y: 12751} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -18911,7 +19218,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1013, y: 12779} + m_UIPosition: {x: 974, y: 12895} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -19038,7 +19345,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1487, y: 12587} + m_UIPosition: {x: 1448, y: 12703} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -19582,7 +19889,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1841, y: 12150} + m_UIPosition: {x: 1921, y: 12275} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -19749,7 +20056,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2379, y: 12361} + m_UIPosition: {x: 2459, y: 12485} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -19926,7 +20233,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2042, y: 12146} + m_UIPosition: {x: 2123, y: 12271} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -20021,7 +20328,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2246, y: 12142} + m_UIPosition: {x: 2327, y: 12267} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -20157,7 +20464,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -3038, y: 9850} + m_UIPosition: {x: -3109, y: 9775} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -20293,7 +20600,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2560, y: 9798} + m_UIPosition: {x: -2631, y: 9723} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -20388,7 +20695,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2352, y: 9796} + m_UIPosition: {x: -2423, y: 9721} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -21482,7 +21789,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2834, y: 10362} + m_UIPosition: {x: -2869, y: 10471} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -21650,7 +21957,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -3213, y: 10428} + m_UIPosition: {x: -3247, y: 10537} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -21709,7 +22016,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -3001, y: 10462} + m_UIPosition: {x: -3035, y: 10571} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -21811,7 +22118,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2341, y: 13376} + m_UIPosition: {x: 2183, y: 13609} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -22462,7 +22769,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2403, y: 10182} + m_UIPosition: {x: -2404, y: 10097} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -22799,7 +23106,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2775, y: 11102} + m_UIPosition: {x: -2783, y: 11126} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -22858,7 +23165,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2560, y: 11138} + m_UIPosition: {x: -2568, y: 11162} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -22989,7 +23296,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -496, y: 11138} + m_UIPosition: {x: -494, y: 11170} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -23077,7 +23384,7 @@ MonoBehaviour: - {fileID: 8926484042661620610} - {fileID: 8926484042661620846} - {fileID: 8926484042661620774} - m_UIPosition: {x: -496, y: 11476} + m_UIPosition: {x: -494, y: 11508} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -23444,7 +23751,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -497, y: 12258} + m_UIPosition: {x: -495, y: 12290} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -23483,7 +23790,7 @@ MonoBehaviour: - {fileID: 8926484042661620656} - {fileID: 8926484042661620554} - {fileID: 8926484042661620551} - m_UIPosition: {x: -497, y: 12474} + m_UIPosition: {x: -495, y: 12506} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -23508,6 +23815,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661620550} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -24130,7 +24438,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2267, y: 11138} + m_UIPosition: {x: -2275, y: 11162} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -24418,7 +24726,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2787, y: 11214} + m_UIPosition: {x: -2795, y: 11238} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -24477,7 +24785,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2534, y: 11249} + m_UIPosition: {x: -2542, y: 11273} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -25250,7 +25558,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -712, y: 12864} + m_UIPosition: {x: -710, y: 12896} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -25622,7 +25930,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -880, y: 12865} + m_UIPosition: {x: -878, y: 12897} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -25724,7 +26032,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1060, y: 12981} + m_UIPosition: {x: -1058, y: 13013} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -25992,7 +26300,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661620692} - m_UIPosition: {x: -436, y: 13548} + m_UIPosition: {x: -493, y: 13285} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -26177,7 +26485,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661620711} - {fileID: 8926484042661620743} - m_UIPosition: {x: -436, y: 13898} + m_UIPosition: {x: -493, y: 13635} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -26608,7 +26916,7 @@ MonoBehaviour: - {fileID: 8926484042661620727} - {fileID: 8926484042661620733} - {fileID: 8926484042661620740} - m_UIPosition: {x: -436, y: 14594} + m_UIPosition: {x: -493, y: 14331} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -26633,6 +26941,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661620726} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -29400,7 +29709,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -685, y: 11836} + m_UIPosition: {x: -683, y: 11868} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -29459,7 +29768,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1154, y: 12865} + m_UIPosition: {x: -1152, y: 12897} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -29661,7 +29970,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -804, y: 14992} + m_UIPosition: {x: -861, y: 14729} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -29798,7 +30107,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1011, y: 15050} + m_UIPosition: {x: -1068, y: 14787} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -30065,7 +30374,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -643, y: 14992} + m_UIPosition: {x: -700, y: 14729} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -30437,7 +30746,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1011, y: 14964} + m_UIPosition: {x: -1068, y: 14701} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -30666,7 +30975,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661620852} - m_UIPosition: {x: -2110, y: 8067} + m_UIPosition: {x: -2175, y: 7988} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -30884,7 +31193,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -3234, y: 9814} + m_UIPosition: {x: -3305, y: 9739} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -30943,7 +31252,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2884, y: 9850} + m_UIPosition: {x: -2955, y: 9775} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -31350,7 +31659,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -4048, y: 10669} + m_UIPosition: {x: -3983, y: 10624} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -31652,7 +31961,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2563, y: 10880} + m_UIPosition: {x: -2567, y: 10899} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -33003,7 +33312,7 @@ MonoBehaviour: - {fileID: 8926484042661621138} - {fileID: 8926484042661621141} - {fileID: 8926484042661621144} - m_UIPosition: {x: 3042, y: 13003} + m_UIPosition: {x: 2885, y: 13236} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -33029,6 +33338,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661621135} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -33057,7 +33367,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 0 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -33523,9 +33832,9 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2115, y: 12228} + m_UIPosition: {x: 2301, y: 12383} m_UICollapsed: 0 - m_UISuperCollapsed: 0 + m_UISuperCollapsed: 1 m_InputSlots: [] m_OutputSlots: - {fileID: 8926484042661621150} @@ -33582,9 +33891,9 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2107, y: 12344} + m_UIPosition: {x: 2309, y: 12443} m_UICollapsed: 0 - m_UISuperCollapsed: 0 + m_UISuperCollapsed: 1 m_InputSlots: [] m_OutputSlots: - {fileID: 8926484042661621152} @@ -33641,8 +33950,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2319, y: 12244} - m_UICollapsed: 0 + m_UIPosition: {x: 2479, y: 12371} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: - {fileID: 8926484042661621154} diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripSingleBurst.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripSingleBurst.vfx index 446ed67b3e0..f039d05f681 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripSingleBurst.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripSingleBurst.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Strip Index position: serializedVersion: 2 - x: 2454 - y: -305 - width: 587 - height: 233 + x: 1759 + y: -271 + width: 1053 + height: 317 contents: - model: {fileID: 8926484042661614829} id: 0 @@ -30,13 +30,16 @@ MonoBehaviour: - model: {fileID: 8926484042661614842} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 - title: Strip Ratio position: serializedVersion: 2 - x: 2567 - y: -44 - width: 459 - height: 233 + x: 2013 + y: 58 + width: 800 + height: 272 contents: - model: {fileID: 8926484042661614924} id: 0 @@ -44,12 +47,15 @@ MonoBehaviour: - model: {fileID: 8926484042661614959} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 - title: Noise Position position: serializedVersion: 2 - x: 1600 - y: 1153 - width: 1435 + x: 1207 + y: 1178 + width: 1839 height: 422 contents: - model: {fileID: 8926484042661615454} @@ -82,13 +88,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615500} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 - title: Size over Strip length position: serializedVersion: 2 - x: 2351 - y: 874 - width: 667 - height: 213 + x: 2145 + y: 913 + width: 903 + height: 239 contents: - model: {fileID: 8926484042661614951} id: 0 @@ -99,6 +108,107 @@ MonoBehaviour: - model: {fileID: 8926484042661614948} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 + - title: Spawn + position: + serializedVersion: 2 + x: 3053 + y: -749 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661614723} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614851} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 2820 + y: -319 + width: 1023 + height: 1220 + contents: + - model: {fileID: 8926484042661614784} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614990} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615374} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616318} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615967} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616356} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 1998 + y: 1735 + width: 997 + height: 981 + contents: + - model: {fileID: 8926484042661616367} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616422} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616427} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616397} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616491} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 10 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 3110 + y: 1735 + width: 918 + height: 761 + contents: + - model: {fileID: 8926484042661615430} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 + - model: {fileID: 8926484042661616526} + id: 0 + isStickyNote: 0 stickyNoteInfos: - title: Single Burst Strips position: @@ -123,13 +233,14 @@ MonoBehaviour: no memory allocated will be wasted. ' - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Strip Index position: serializedVersion: 2 - x: 1987 - y: -301 + x: 1785 + y: -212 width: 447 height: 232 contents: "When spawning all the particles with a single burst, assigning them @@ -141,13 +252,14 @@ MonoBehaviour: Strip count, we get a value ranging from 0<>9.98.\r\n\r\nFlooring this value will eliminate the fractional part, and our index will correctly range between 0 and 9.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Strip Ratio position: serializedVersion: 2 - x: 2221 - y: -19 + x: 2038 + y: 119 width: 336 height: 186 contents: "Getting a 0<>1 normalized value along the strip is often rather valuable @@ -156,13 +268,14 @@ MonoBehaviour: 1.\r\n\r\nThis will give us a 0<>1 value across the strip that we can store in a custom attribute. This way, we can access this value at any time to drive the behavior or appearance of our Strips/trails.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Random Sphere position position: serializedVersion: 2 - x: 3494 - y: 153 + x: 3475 + y: 137 width: 287 height: 164 contents: "We\u2019re starting with a squashed sphere for our initial position. @@ -170,13 +283,14 @@ MonoBehaviour: particle strip.\n\r\nThis will make the position on the sphere randomized per strip. \n\nAt this stage, all particles in a strip are collapsed to a random position on a sphere.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Add Position Shape Line position: serializedVersion: 2 - x: 3483 - y: 347 + x: 3475 + y: 325 width: 342 height: 177 contents: "Since our particles are stacked on each other, we would like to add @@ -185,13 +299,14 @@ MonoBehaviour: we use a per-strip random value on the Y-axis. This will result in strips with different heights.\n\r\nAfter that, we use our previously calculated strip ratio attribute to distribute our particles uniformly along the line.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Set Color from curve Custom position: serializedVersion: 2 - x: 3478 - y: 549 + x: 3470 + y: 527 width: 342 height: 166 contents: "The Set Color from Curve node can control the particles\u2019 color @@ -199,25 +314,27 @@ MonoBehaviour: mode to input a 0\u20131 float to sample our gradient.\n\r\nWe obtain this 0\u20131 value with a PerParticleStrip random node to get a random color per strip.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Set initPos position: serializedVersion: 2 - x: 2593 - y: 627 + x: 3497 + y: 733 width: 265 height: 123 contents: "To add some animation to our strips in the Update Context, we store the Initial position in a Custom attribute called InitPos.\n \nThis will allow us to easily sample a noise later on." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Noise Position position: serializedVersion: 2 - x: 1210 - y: 1181 + x: 1232 + y: 1388 width: 384 height: 173 contents: "Turbulence is often used to achieve organic motion, but it\u2019s @@ -226,13 +343,14 @@ MonoBehaviour: stored particles\u2019 initial position, to sample a noise. This noise is animated and added to the particle\u2019s initial position. This offers the benefit of being easily art-directed.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Size over Strip length position: serializedVersion: 2 - x: 2089 - y: 911 + x: 2171 + y: 976 width: 221 height: 151 contents: 'We can change the size of each strip by using the 0-1 value in the @@ -244,13 +362,14 @@ MonoBehaviour: efficiently art-direct the size across the length of the strip/trail. ' - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Normal Bending position: serializedVersion: 2 - x: 2910 - y: 2183 + x: 3150 + y: 2275 width: 277 height: 196 contents: "We can use the normal bending factor to get a better volumetric effect. @@ -258,13 +377,14 @@ MonoBehaviour: strip). \n\nIt is practical to get a nice volumetric look when creating wires, cables, or tentacles.\n\r\nTo turn this feature on, select the \u201COutput Context\u201D and look for \u201CNormal Bending.\u201D\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Set Alive position: serializedVersion: 2 - x: 2261 - y: 2440 + x: 2583 + y: 2391 width: 376 height: 300 contents: "To finish our Robotic Arm\u2019s VFX, we wanted to add a hand or pliers @@ -279,15 +399,16 @@ MonoBehaviour: improve things, we can turn on the compute culling option in the Inspector. The particles set to Not Alive in the output context are culled in a compute pass rather than in the vertex shader\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: 1210 - y: -749 - width: 2685 - height: 3489 + x: 1207 + y: -809 + width: 2821 + height: 3508 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -346,7 +467,7 @@ MonoBehaviour: - {fileID: 8926484042661614983} m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -362,10 +483,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 1 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -655,7 +772,7 @@ MonoBehaviour: - {fileID: 8926484042661614811} - {fileID: 8926484042661615445} - {fileID: 8926484042661614984} - m_UIPosition: {x: 3053, y: -318} + m_UIPosition: {x: 3045, y: -259} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1435,7 +1552,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2699, y: -210} + m_UIPosition: {x: 2473, y: -114} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1502,7 +1619,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2865, y: -212} + m_UIPosition: {x: 2639, y: -116} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1597,7 +1714,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2479, y: -246} + m_UIPosition: {x: 2253, y: -150} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -1791,7 +1908,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2844, y: 51} + m_UIPosition: {x: 2633, y: 155} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1858,7 +1975,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2595, y: 948} + m_UIPosition: {x: 2627, y: 988} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2195,7 +2312,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2377, y: 933} + m_UIPosition: {x: 2409, y: 973} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2219,7 +2336,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2829, y: 948} + m_UIPosition: {x: 2861, y: 988} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2355,7 +2472,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2592, y: 15} + m_UIPosition: {x: 2397, y: 117} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2594,7 +2711,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2881, y: 697} + m_UIPosition: {x: 2860, y: 767} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2618,7 +2735,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2848, y: 361} + m_UIPosition: {x: 2860, y: 433} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -3435,7 +3552,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615436} - m_UIPosition: {x: 2895, y: 1703} + m_UIPosition: {x: 3135, y: 1795} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3465,6 +3582,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615435} + useBaseColorMap: 0 colorMapping: 0 uvMode: 3 flipbookLayout: 0 @@ -3490,7 +3608,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 0 useMaskMap: 0 useNormalMap: 1 useEmissiveMap: 0 @@ -3619,7 +3736,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661615430} m_Children: [] - m_UIPosition: {x: 3030.5989, y: 1413.9896} + m_UIPosition: {x: 0, y: 2} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3811,7 +3928,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1745, y: 1212} + m_UIPosition: {x: 1738, y: 1237} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3835,7 +3952,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2353, y: 1330} + m_UIPosition: {x: 2346, y: 1355} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -4309,7 +4426,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1655, y: 1438} + m_UIPosition: {x: 1648, y: 1463} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4333,7 +4450,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1857, y: 1452} + m_UIPosition: {x: 1850, y: 1477} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4460,7 +4577,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2119, y: 1348} + m_UIPosition: {x: 2112, y: 1373} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4596,7 +4713,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1967, y: 1212} + m_UIPosition: {x: 1960, y: 1237} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -4663,7 +4780,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1625, y: 1316} + m_UIPosition: {x: 1618, y: 1341} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4720,7 +4837,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1777, y: 1316} + m_UIPosition: {x: 1770, y: 1341} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4787,7 +4904,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2749, y: 1234} + m_UIPosition: {x: 2742, y: 1259} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6252,7 +6369,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2833, y: 443} + m_UIPosition: {x: 2845, y: 517} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -6311,7 +6428,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2874, y: 620} + m_UIPosition: {x: 2860, y: 677} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -6547,7 +6664,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2866, y: 241} + m_UIPosition: {x: 2845, y: 307} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -6922,7 +7039,7 @@ MonoBehaviour: - {fileID: 8926484042661616384} - {fileID: 8926484042661616390} - {fileID: 8926484042661616424} - m_UIPosition: {x: 2276, y: 1861} + m_UIPosition: {x: 2544, y: 1795} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6951,6 +7068,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616383} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -7626,8 +7744,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2042, y: 2066} - m_UICollapsed: 0 + m_UIPosition: {x: 2346, y: 2026} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] m_OutputSlots: @@ -7787,7 +7905,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1662, y: 2296} + m_UIPosition: {x: 2023, y: 2258} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -7908,7 +8026,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1949, y: 2296} + m_UIPosition: {x: 2310, y: 2258} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8074,7 +8192,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2551, y: 1212} + m_UIPosition: {x: 2544, y: 1237} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -8578,7 +8696,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1978, y: 1876} + m_UIPosition: {x: 2290, y: 1837} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8951,7 +9069,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661616532} - m_UIPosition: {x: 3331, y: 1723} + m_UIPosition: {x: 3577, y: 1805} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8981,6 +9099,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616531} + useBaseColorMap: 0 colorMapping: 0 uvMode: 3 flipbookLayout: 0 @@ -9009,7 +9128,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 0 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -9131,7 +9249,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661616526} m_Children: [] - m_UIPosition: {x: 3320.9214, y: 1455.5715} + m_UIPosition: {x: 0, y: 2} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripsPeriodicBurst.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripsPeriodicBurst.vfx index 3efccec31be..2a075f268d5 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripsPeriodicBurst.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripsPeriodicBurst.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Strip Ratio position: serializedVersion: 2 - x: 2426 - y: 85 - width: 459 - height: 233 + x: 2289 + y: -12 + width: 817 + height: 302 contents: - model: {fileID: 8926484042661616579} id: 0 @@ -27,13 +27,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616584} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 - title: Random Velocity position: serializedVersion: 2 - x: 2289 - y: 422 - width: 766 - height: 451 + x: 2271 + y: 315 + width: 845 + height: 555 contents: - model: {fileID: 8926484042661615942} id: 0 @@ -50,13 +53,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615938} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 - title: UVMode position: serializedVersion: 2 - x: 2653 - y: 2400 - width: 381 - height: 281 + x: 2930 + y: 1965 + width: 460 + height: 501 contents: - model: {fileID: 8926484042661616078} id: 0 @@ -67,13 +73,19 @@ MonoBehaviour: - model: {fileID: 8926484042661616574} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - model: {fileID: 8926484042661616567} + id: 0 + isStickyNote: 0 - title: Color & Alpha position: serializedVersion: 2 - x: 2131 - y: 2829 - width: 898 - height: 451 + x: 2443 + y: 2513 + width: 921 + height: 528 contents: - model: {fileID: 8926484042661616303} id: 0 @@ -99,12 +111,145 @@ MonoBehaviour: - model: {fileID: 8926484042661616285} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 3141 + y: -219 + width: 1172 + height: 885 + contents: + - model: {fileID: 8926484042661614784} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615849} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616131} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615425} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 3116 + y: -885 + width: 1137 + height: 563 + contents: + - model: {fileID: 8926484042661614723} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615835} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616449} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616552} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 2582 + y: 946 + width: 1330 + height: 784 + contents: + - model: {fileID: 8926484042661614782} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614937} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614951} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616181} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616022} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616033} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616036} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616040} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - title: Output HEad + position: + serializedVersion: 2 + x: 1449 + y: 1703 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661616319} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616371} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616569} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616329} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616334} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616350} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616431} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 3447 + y: 2030 + width: 843 + height: 826 + contents: + - model: {fileID: 8926484042661616044} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 stickyNoteInfos: - title: Loop Index position: serializedVersion: 2 - x: 3501 - y: -720 + x: 3929 + y: -675 width: 298 height: 232 contents: "The Loop Index value cannot be accessed outside the spawn context, @@ -112,24 +257,26 @@ MonoBehaviour: a maximum of 20 strips. As the loop index can exceed 19, we pass it through a modulo operation.\n\r\nThis ensures that we store an index that ranges between 0 and 19.\n\r\nThis value will be used as a strip index in the Initialize Context.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Strip index position: serializedVersion: 2 - x: 2750 - y: -246 + x: 3166 + y: -129 width: 298 height: 100 contents: "The texIndex attribute value corresponds to the loop index. This means that we\u2019re setting a different strip index for each loop." - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Strip Ratio position: serializedVersion: 2 - x: 2080 - y: 95 + x: 2315 + y: 47 width: 336 height: 213 contents: "Getting a 0<>1 normalized value along the strip is always valuable @@ -139,13 +286,14 @@ MonoBehaviour: a custom attribute. This way, we can access this value at any time. It can be useful to modulate the width or color of our particles along the strip, for example." - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Set Color from curve Custom position: serializedVersion: 2 - x: 3500 - y: 259 + x: 3945 + y: 371 width: 342 height: 167 contents: "The Set Color from the Curve node can drive the particle\u2019s color @@ -153,26 +301,28 @@ MonoBehaviour: use the custom mode to input a 0<>1 float to sample our gradient.\n\r\nWe obtain this 0<>1 value with a PerParticleStrip random node to get a random color per strip.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Random Velocity position: serializedVersion: 2 - x: 1945 - y: 432 + x: 2296 + y: 375 width: 258 height: 181 contents: "To get an interesting motion, we set an initial velocity.\n\nFirst, we\u2019re using a random vector3.\n\r\nFrom here, we\u2019re driving its amplitude by multiplying it by our 0<>1 StripRatio. \n\nThis will have the effect of stretching our strips upwards.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Strip Ratio position: serializedVersion: 2 - x: 2185 - y: 1342 + x: 2607 + y: 1355 width: 372 height: 119 contents: 'This strip ratio is reused again to drive the size across the strip @@ -184,26 +334,28 @@ MonoBehaviour: turbulence forces. ' - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Scale & Bias position: serializedVersion: 2 - x: 2417 - y: 2406 + x: 2955 + y: 2024 width: 233 height: 204 contents: "The UV mode has been changed to scale & bias.\n\r\nThis lets us change the tiling size of our texture along the X-axis.\n\r\nFurthermore, we are utilizing a VFX Time node to offset the texture. \n\nThis causes the textures to scroll on the strip, adding some nice organic motion to our VFX.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Particle Sorting position: serializedVersion: 2 - x: 3493 - y: 2574 + x: 3933 + y: 2377 width: 332 height: 230 contents: "Properly sorting transparent particles is often tricky, especially @@ -213,26 +365,28 @@ MonoBehaviour: affords us the capability to regulate the particle sorting value manually. In this situation, we are using the Strip Index. \n\nThis value is stable in our VFX and will make a pleasant sorting.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Color & Alpha position: serializedVersion: 2 - x: 1910 - y: 2835 + x: 2469 + y: 2573 width: 211 height: 100 contents: 'The Strip Ratio value is also used in the Output to sample curves and modulate the color and alpha of our strips. ' - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Set Alive position: serializedVersion: 2 - x: 1463 - y: 2255 + x: 1909 + y: 1960 width: 401 height: 286 contents: "We want an extra glowy particle only on the tip of each strip.\n\r\nFor @@ -245,15 +399,16 @@ MonoBehaviour: Alive node.\n\r\nTo improve performace, we can turn on the compute culling option in the Inspector. The particles set to Not Alive in the output context are culled in a compute pass rather than in the vertex shader.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: 531 - y: -869 - width: 3311 - height: 4149 + x: 624 + y: -885 + width: 3689 + height: 3926 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -338,7 +493,7 @@ MonoBehaviour: enumValues: [] descendantCount: 0 m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -354,10 +509,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 1 shadowCastingMode: 0 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -383,7 +534,7 @@ MonoBehaviour: - {fileID: 8926484042661614726} - {fileID: 8926484042661615846} - {fileID: 8926484042661615852} - m_UIPosition: {x: 3053, y: -869} + m_UIPosition: {x: 3481, y: -825} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -571,7 +722,7 @@ MonoBehaviour: - {fileID: 8926484042661616026} - {fileID: 8926484042661615957} - {fileID: 8926484042661616084} - m_UIPosition: {x: 3039, y: 993} + m_UIPosition: {x: 3461, y: 1005} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -613,7 +764,7 @@ MonoBehaviour: - {fileID: 8926484042661614942} - {fileID: 8926484042661616340} - {fileID: 8926484042661615890} - m_UIPosition: {x: 3053, y: -272} + m_UIPosition: {x: 3499, y: -159} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1091,7 +1242,7 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - title: Burst Trails + title: Init m_Owners: - {fileID: 8926484042661614784} - {fileID: 8926484042661614782} @@ -1154,7 +1305,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2605, y: 1073} + m_UIPosition: {x: 3027, y: 1105} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1491,7 +1642,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2849, y: 1073} + m_UIPosition: {x: 3271, y: 1105} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1746,7 +1897,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2844, y: 105} + m_UIPosition: {x: 3331, y: 185} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -2053,7 +2204,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2547, y: -591} + m_UIPosition: {x: 3141, y: -499} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2519,7 +2670,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2858, y: -139} + m_UIPosition: {x: 3303, y: -25} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2931,7 +3082,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2524, y: 597} + m_UIPosition: {x: 2584, y: 595} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -3058,7 +3209,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2314, y: 561} + m_UIPosition: {x: 2374, y: 559} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3082,7 +3233,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2752, y: 573} + m_UIPosition: {x: 2812, y: 571} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4140,7 +4291,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2444, y: 692} + m_UIPosition: {x: 2504, y: 691} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4274,7 +4425,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2857, y: 1352} + m_UIPosition: {x: 3279, y: 1365} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4638,7 +4789,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2395, y: 1206} + m_UIPosition: {x: 2817, y: 1219} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4662,7 +4813,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2615, y: 1221} + m_UIPosition: {x: 3037, y: 1233} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4789,7 +4940,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2849, y: 1221} + m_UIPosition: {x: 3271, y: 1233} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4928,7 +5079,7 @@ MonoBehaviour: - {fileID: 8926484042661616048} - {fileID: 8926484042661616159} - {fileID: 8926484042661616050} - m_UIPosition: {x: 3039, y: 2332} + m_UIPosition: {x: 3472, y: 2089} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4958,6 +5109,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616047} + useBaseColorMap: 3 colorMapping: 1 uvMode: 3 flipbookLayout: 0 @@ -4976,7 +5128,7 @@ MonoBehaviour: enableRayTracing: 0 decimationFactor: 1 raytracedScaleMode: 0 - needsOwnSort: 0 + needsOwnSort: 1 needsOwnAabbBuffer: 0 shaderGraph: {fileID: 0} materialSettings: @@ -5451,7 +5603,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2678, y: 2543} + m_UIPosition: {x: 3036, y: 2235} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -5508,7 +5660,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2844, y: 2543} + m_UIPosition: {x: 3202, y: 2235} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -5736,8 +5888,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2805, y: 331} - m_UICollapsed: 1 + m_UIPosition: {x: 3315, y: 397} + m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: - {fileID: 8926484042661616144} @@ -6345,7 +6497,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2541, y: 481} + m_UIPosition: {x: 2602, y: 479} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -6818,7 +6970,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2615, y: 1368} + m_UIPosition: {x: 3037, y: 1381} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7523,7 +7675,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2628, y: 2888} + m_UIPosition: {x: 2965, y: 2650} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7692,7 +7844,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2156, y: 2929} + m_UIPosition: {x: 2493, y: 2691} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -7752,7 +7904,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2386, y: 2888} + m_UIPosition: {x: 2723, y: 2650} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7879,7 +8031,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2628, y: 3013} + m_UIPosition: {x: 2965, y: 2775} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8082,7 +8234,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2839, y: 3013} + m_UIPosition: {x: 3177, y: 2775} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8219,7 +8371,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2361, y: 3181} + m_UIPosition: {x: 2699, y: 2943} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -8275,7 +8427,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2580, y: 3157} + m_UIPosition: {x: 2917, y: 2919} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8464,6 +8616,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616322} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -8753,7 +8906,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 879, y: 2140} + m_UIPosition: {x: 993, y: 2131} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -8812,7 +8965,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1134, y: 2131} + m_UIPosition: {x: 1248, y: 2121} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9276,7 +9429,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 719, y: 1994} + m_UIPosition: {x: 837, y: 1994} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -9743,7 +9896,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 531, y: 1994} + m_UIPosition: {x: 649, y: 1994} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -9904,7 +10057,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2840, y: -593} + m_UIPosition: {x: 3298, y: -548} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -10068,7 +10221,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2736, y: -479} + m_UIPosition: {x: 3298, y: -434} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -10236,7 +10389,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2363, y: 3033} + m_UIPosition: {x: 2701, y: 2795} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -10398,7 +10551,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2813, y: 2688} + m_UIPosition: {x: 3180, y: 2330} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -10626,7 +10779,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2839, y: 2459} + m_UIPosition: {x: 3197, y: 2151} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -10793,7 +10946,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2703, y: 180} + m_UIPosition: {x: 2927, y: 151} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -10929,7 +11082,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2451, y: 144} + m_UIPosition: {x: 2675, y: 115} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripsSpawnRate.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripsSpawnRate.vfx index d8c888f68bb..f47eb886444 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripsSpawnRate.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultiStripsSpawnRate.vfx @@ -13,13 +13,13 @@ MonoBehaviour: m_Name: VFXUI m_EditorClassIdentifier: groupInfos: - - title: Multi Trails + - title: position: serializedVersion: 2 - x: -37 - y: -660 - width: 955 - height: 3293 + x: 211 + y: -211 + width: 1045 + height: 2848 contents: - model: {fileID: 8926484042661614906} id: 0 @@ -27,46 +27,40 @@ MonoBehaviour: - model: {fileID: 8926484042661614859} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661614854} - id: 0 - isStickyNote: 0 - model: {fileID: 8926484042661615126} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661615295} - id: 0 - isStickyNote: 0 - - model: {fileID: 8926484042661615299} - id: 0 - isStickyNote: 0 - - model: {fileID: 8926484042661615165} - id: 0 - isStickyNote: 0 - model: {fileID: 8926484042661615552} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661615305} - id: 1 - isStickyNote: 0 - model: {fileID: 8926484042661615694} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661615305} - id: 0 - isStickyNote: 0 - model: {fileID: 8926484042661615829} id: 0 isStickyNote: 0 - model: {fileID: 8926484042661615773} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 - title: Sine Wave position: serializedVersion: 2 - x: -1167 - y: 490 - width: 1534 - height: 326 + x: -1469 + y: 485 + width: 1671 + height: 335 contents: - model: {fileID: 8926484042661615511} id: 0 @@ -89,16 +83,19 @@ MonoBehaviour: - model: {fileID: 8926484042661615784} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661615792} + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - model: {fileID: 8926484042661615841} id: 0 isStickyNote: 0 - title: Lifetime position: serializedVersion: 2 - x: -715 - y: -81 - width: 851 - height: 389 + x: -656 + y: -144 + width: 844 + height: 460 contents: - model: {fileID: 8926484042661615732} id: 0 @@ -115,13 +112,19 @@ MonoBehaviour: - model: {fileID: 8926484042661615789} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 8926484042661615165} + id: 0 + isStickyNote: 0 - title: UV Bias position: serializedVersion: 2 - x: 46 - y: 1458 - width: 391 - height: 249 + x: -502 + y: 1585 + width: 621 + height: 283 contents: - model: {fileID: 8926484042661615336} id: 0 @@ -132,13 +135,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615331} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 - title: Noise Position position: serializedVersion: 2 - x: -951 - y: 2042 - width: 1369 - height: 481 + x: -1471 + y: 1963 + width: 1662 + height: 555 contents: - model: {fileID: 8926484042661615401} id: 0 @@ -173,12 +179,44 @@ MonoBehaviour: - model: {fileID: 8926484042661615351} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: -156 + y: -1011 + width: 1363 + height: 449 + contents: + - model: {fileID: 8926484042661614854} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615295} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615299} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615305} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615305} + id: 1 + isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 stickyNoteInfos: - title: Burst Delay position: serializedVersion: 2 - x: -143 - y: -523 + x: -131 + y: -877 width: 328 height: 151 contents: 'The periodic burst allows us to spawn a number of particles every @@ -195,13 +233,14 @@ MonoBehaviour: particles will be distributed across each strip. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Periodic Burst position: serializedVersion: 2 - x: 907 - y: -428 + x: 919 + y: -781 width: 262 height: 174 contents: 'The Periodic Burst allows us to spawn a specific count of particles @@ -216,27 +255,29 @@ MonoBehaviour: of spawned particles will be distributed in each strip. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Spawn Index position: serializedVersion: 2 - x: 927 - y: -85 + x: 897 + y: -90 width: 328 - height: 163 + height: 157 contents: "As we\u2019re spawning particles thanks to a burst block, we know that all of them are born on the same frame for each burst.\n\nThis implies that the SpawnIndex varies from 0 to the number of particles in the burst count minus 1.\n\r\nThis is precisely what we need, as we set up our strip capacity to be six." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Lifetime position: serializedVersion: 2 - x: -1051 - y: -77 + x: -621 + y: -57 width: 328 height: 185 contents: 'We are getting the lifetime value from the Spawn Context by using @@ -254,26 +295,28 @@ MonoBehaviour: changing the seed value to PerParticleStrip instead of PerParticle. ' - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Random Sphere position position: serializedVersion: 2 - x: 922 - y: 159 + x: 911 + y: 221 width: 287 height: 138 contents: "We\u2019re starting with a squashed sphere for our initial position. \nThe spawn mode is set to custom, and we\u2019re using a 0\u20131 random value Per-ParticleStrip.\n\r\nThis will make the position on the sphere randomized per strip.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Sine Wave position: serializedVersion: 2 - x: -1544 - y: 501 + x: -1444 + y: 567 width: 323 height: 227 contents: "We want to animate the initial position of our strips. For this, we\u2019re @@ -283,12 +326,13 @@ MonoBehaviour: number is used to modulate the direction attribute.\n\rThe Position Shape line block creates a direction attribute. The value of this direction corresponds to the normalized vector of our line.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Velocity from Direction and Speed position: serializedVersion: 2 - x: 939 + x: 909 y: 729 width: 323 height: 168 @@ -302,26 +346,28 @@ MonoBehaviour: metronome needle vector that oscillates and drives the velocity of our particles. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Scale & Bias position: serializedVersion: 2 - x: -213 - y: 1463 + x: -477 + y: 1647 width: 233 height: 197 contents: "The UV mode has been changed to scale & bias.\r\nThis lets us change the tiling size of our texture along the X-axis.\n\r\nFurthermore, we are utilizing a VFX Time node to offset the texture. \n\nThis causes the textures to scroll on the strip, adding some nice organic motion to our VFX.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Particle Sorting position: serializedVersion: 2 - x: 914 - y: 1623 + x: 921 + y: 1643 width: 261 height: 227 contents: "It\u2019s often tricky to properly sort transparent particles, especially @@ -331,13 +377,14 @@ MonoBehaviour: affords us the capability to regulate the particle sorting value manually. In this situation, we are using the Strip Index. \n\nThis value is stable in our VFX and will make a pleasant sorting.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Noise Position position: serializedVersion: 2 - x: -1319 - y: 2047 + x: -1445 + y: 2022 width: 348 height: 221 contents: "Turbulence is frequently used to get organic motion. But it\u2019s @@ -348,15 +395,16 @@ MonoBehaviour: of being easily art-directed.\r\n\r\nUnfortunately, the position used for culling is taken before the output context.\r\nSo, we must be careful with how much offset we apply to our positions in the output context.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -1544 - y: -660 - width: 2806 - height: 3293 + x: -1470 + y: -1013 + width: 2727 + height: 3649 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -410,7 +458,7 @@ MonoBehaviour: - {fileID: 8926484042661615780} - {fileID: 8926484042661615784} - {fileID: 8926484042661615789} - - {fileID: 8926484042661615792} + - {fileID: 8926484042661615841} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 @@ -418,7 +466,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -434,10 +482,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 0 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -462,7 +506,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615302} - {fileID: 8926484042661615291} - m_UIPosition: {x: 467, y: -601} + m_UIPosition: {x: 471, y: -953} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -521,7 +565,7 @@ MonoBehaviour: - {fileID: 8926484042661615490} - {fileID: 8926484042661615534} - {fileID: 8926484042661615502} - m_UIPosition: {x: 467, y: -155} + m_UIPosition: {x: 455, y: -152} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -952,7 +996,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615340} - m_UIPosition: {x: 467, y: 917} + m_UIPosition: {x: 455, y: 920} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -1029,7 +1073,7 @@ MonoBehaviour: - {fileID: 8926484042661615417} - {fileID: 8926484042661615217} - {fileID: 8926484042661615157} - m_UIPosition: {x: 467, y: 1402} + m_UIPosition: {x: 455, y: 1405} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1059,6 +1103,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615142} + useBaseColorMap: 3 colorMapping: 1 uvMode: 3 flipbookLayout: 0 @@ -1077,7 +1122,7 @@ MonoBehaviour: enableRayTracing: 0 decimationFactor: 1 raytracedScaleMode: 0 - needsOwnSort: 0 + needsOwnSort: 1 needsOwnAabbBuffer: 0 shaderGraph: {fileID: 0} materialSettings: @@ -1781,7 +1826,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 251, y: -80} + m_UIPosition: {x: -32, y: -85} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2655,7 +2700,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 93, y: 1516} + m_UIPosition: {x: -223, y: 1645} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3052,7 +3097,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 159, y: -359} + m_UIPosition: {x: 163, y: -711} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3188,7 +3233,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 326, y: -359} + m_UIPosition: {x: 329, y: -711} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3404,7 +3449,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661615306} inputSlot: {fileID: 8926484042661615303} - position: {x: 280.66666, y: -506.6667} + position: {x: 283.33334, y: -858} expandedSlots: [] expanded: 1 supecollapsed: 0 @@ -3412,7 +3457,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661615306} inputSlot: {fileID: 8926484042661615296} - position: {x: -12, y: -359.33334} + position: {x: -9.333333, y: -710.6666} expandedSlots: [] expanded: 1 supecollapsed: 0 @@ -3467,7 +3512,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 71, y: 1608} + m_UIPosition: {x: -245, y: 1737} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -3634,7 +3679,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 267, y: 1546} + m_UIPosition: {x: -49, y: 1675} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3863,7 +3908,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -782, y: 2107} + m_UIPosition: {x: -1023, y: 2101} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3887,7 +3932,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -273, y: 2225} + m_UIPosition: {x: -513, y: 2219} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4361,7 +4406,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -673, y: 2385} + m_UIPosition: {x: -913, y: 2379} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4488,7 +4533,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -448, y: 2385} + m_UIPosition: {x: -689, y: 2379} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4624,7 +4669,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -926, y: 2269} + m_UIPosition: {x: -1167, y: 2263} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4681,7 +4726,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -774, y: 2269} + m_UIPosition: {x: -1015, y: 2263} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4817,7 +4862,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 132, y: 2187} + m_UIPosition: {x: -109, y: 2181} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -5630,7 +5675,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -882, y: 2409} + m_UIPosition: {x: -1123, y: 2403} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -5686,7 +5731,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -836, y: 2188} + m_UIPosition: {x: -1077, y: 2183} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -5853,7 +5898,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -578, y: 2166} + m_UIPosition: {x: -819, y: 2161} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -6199,7 +6244,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1095, y: 549} + m_UIPosition: {x: -1075, y: 544} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -6256,7 +6301,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -611, y: 569} + m_UIPosition: {x: -559, y: 578} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -6447,7 +6492,7 @@ MonoBehaviour: m_Direction: 1 m_LinkedSlots: - {fileID: 8926484042661615501} - - {fileID: 8926484042661615793} + - {fileID: 8926484042661615842} --- !u!114 &8926484042661615490 MonoBehaviour: m_ObjectHideFlags: 0 @@ -7171,9 +7216,9 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -123, y: 638} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 + m_UIPosition: {x: -347, y: 664} + m_UICollapsed: 0 + m_UISuperCollapsed: 1 m_InputSlots: [] m_OutputSlots: - {fileID: 8926484042661615512} @@ -7332,12 +7377,12 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 81, y: 666} - m_UICollapsed: 1 + m_UIPosition: {x: -103, y: 675} + m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: - {fileID: 8926484042661615526} - - {fileID: 8926484042661615524} + - {fileID: 8926484042661615837} m_OutputSlots: - {fileID: 8926484042661615530} m_Operands: @@ -7345,45 +7390,10 @@ MonoBehaviour: type: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - - name: b + - name: c type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ---- !u!114 &8926484042661615524 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615524} - m_MasterData: - m_Owner: {fileID: 8926484042661615522} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: -0.9510565 - m_Space: -1 - m_Property: - name: b - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661615798} --- !u!114 &8926484042661615526 MonoBehaviour: m_ObjectHideFlags: 0 @@ -7941,7 +7951,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 251, y: 2535} + m_UIPosition: {x: 239, y: 2538} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -8108,7 +8118,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 248, y: 363} + m_UIPosition: {x: 237, y: 366} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -8480,7 +8490,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -109, y: 2101} + m_UIPosition: {x: -349, y: 2095} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -8711,7 +8721,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -262, y: -23} + m_UIPosition: {x: -255, y: -11} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -8770,7 +8780,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -58, y: 69} + m_UIPosition: {x: -51, y: 81} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8907,7 +8917,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -327, y: 115} + m_UIPosition: {x: -265, y: 117} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9075,7 +9085,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -502, y: 169} + m_UIPosition: {x: -445, y: 177} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9246,7 +9256,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 226, y: 1709} + m_UIPosition: {x: 239, y: 1739} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -9339,7 +9349,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -775, y: 571} + m_UIPosition: {x: -751, y: 581} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9475,7 +9485,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -933, y: 571} + m_UIPosition: {x: -903, y: 581} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9612,7 +9622,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1142, y: 635} + m_UIPosition: {x: -1111, y: 626} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9779,7 +9789,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -690, y: 127} + m_UIPosition: {x: -631, y: 141} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -9823,7 +9833,7 @@ MonoBehaviour: m_Direction: 1 m_LinkedSlots: - {fileID: 8926484042661615742} ---- !u!114 &8926484042661615792 +--- !u!114 &8926484042661615826 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9832,36 +9842,26 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0a02ebe9815b1084495277ae39c6c270, type: 3} + m_Script: {fileID: 11500000, guid: a971fa2e110a0ac42ac1d8dae408704b, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} + m_Parent: {fileID: 8926484042661615126} m_Children: [] - m_UIPosition: {x: -337, y: 686} - m_UICollapsed: 1 + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: - - {fileID: 8926484042661615793} - - {fileID: 8926484042661615794} - - {fileID: 8926484042661615795} - - {fileID: 8926484042661615796} - - {fileID: 8926484042661615797} - m_OutputSlots: - - {fileID: 8926484042661615798} - m_Type: - - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Clamp: 0 ---- !u!114 &8926484042661615793 + - {fileID: 8926484042661615827} + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661615828} + attribute: size + Composition: 0 + Source: 0 + Random: 0 + channels: 6 +--- !u!114 &8926484042661615827 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9879,24 +9879,24 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615793} + m_MasterSlot: {fileID: 8926484042661615827} m_MasterData: - m_Owner: {fileID: 8926484042661615792} + m_Owner: {fileID: 8926484042661615826} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0.5 + m_SerializableObject: 0.8 m_Space: -1 m_Property: - name: input + name: _Size m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: - - {fileID: 8926484042661615488} ---- !u!114 &8926484042661615794 + - {fileID: 8926484042661615833} +--- !u!114 &8926484042661615828 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9905,7 +9905,7 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] @@ -9914,23 +9914,53 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615794} + m_MasterSlot: {fileID: 8926484042661615828} m_MasterData: - m_Owner: {fileID: 8926484042661615792} + m_Owner: {fileID: 8926484042661615826} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 + m_SerializableObject: True m_Space: -1 m_Property: - name: oldRangeMin + name: _vfx_enabled m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661615795 +--- !u!114 &8926484042661615829 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c42128e17c583714a909b4997c80c916, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: 247, y: 1882} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661615830} + - {fileID: 8926484042661615831} + - {fileID: 8926484042661615832} + m_OutputSlots: + - {fileID: 8926484042661615833} + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + seed: 2 + constant: 1 + independentSeed: 0 +--- !u!114 &8926484042661615830 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9948,23 +9978,23 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615795} + m_MasterSlot: {fileID: 8926484042661615830} m_MasterData: - m_Owner: {fileID: 8926484042661615792} + m_Owner: {fileID: 8926484042661615829} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 1 + m_SerializableObject: 0.5 m_Space: -1 m_Property: - name: oldRangeMax + name: Min m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661615796 +--- !u!114 &8926484042661615831 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -9982,9 +10012,9 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615796} + m_MasterSlot: {fileID: 8926484042661615831} m_MasterData: - m_Owner: {fileID: 8926484042661615792} + m_Owner: {fileID: 8926484042661615829} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, @@ -9992,13 +10022,13 @@ MonoBehaviour: m_SerializableObject: 1 m_Space: -1 m_Property: - name: newRangeMin + name: Max m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661615797 +--- !u!114 &8926484042661615832 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10007,7 +10037,7 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] @@ -10016,23 +10046,23 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615797} + m_MasterSlot: {fileID: 8926484042661615832} m_MasterData: - m_Owner: {fileID: 8926484042661615792} + m_Owner: {fileID: 8926484042661615829} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: -1 + m_SerializableObject: 449 m_Space: -1 m_Property: - name: newRangeMax + name: seed m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661615798 +--- !u!114 &8926484042661615833 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10050,9 +10080,9 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615798} + m_MasterSlot: {fileID: 8926484042661615833} m_MasterData: - m_Owner: {fileID: 8926484042661615792} + m_Owner: {fileID: 8926484042661615829} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, @@ -10060,14 +10090,14 @@ MonoBehaviour: m_SerializableObject: m_Space: -1 m_Property: - name: + name: r m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: - - {fileID: 8926484042661615524} ---- !u!114 &8926484042661615826 + - {fileID: 8926484042661615827} +--- !u!114 &8926484042661615837 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10076,26 +10106,71 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a971fa2e110a0ac42ac1d8dae408704b, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661615126} + m_Parent: {fileID: 0} m_Children: [] m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 0 + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661615837} + m_MasterData: + m_Owner: {fileID: 8926484042661615522} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 1 + m_Space: -1 + m_Property: + name: c + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: + - {fileID: 8926484042661615847} +--- !u!114 &8926484042661615841 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0a02ebe9815b1084495277ae39c6c270, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.Operator.Remap + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: -330, y: 717} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: - - {fileID: 8926484042661615827} - m_OutputSlots: [] - m_Disabled: 0 - m_ActivationSlot: {fileID: 8926484042661615828} - attribute: size - Composition: 0 - Source: 0 - Random: 0 - channels: 6 ---- !u!114 &8926484042661615827 + - {fileID: 8926484042661615842} + - {fileID: 8926484042661615843} + - {fileID: 8926484042661615844} + - {fileID: 8926484042661615845} + - {fileID: 8926484042661615846} + m_OutputSlots: + - {fileID: 8926484042661615847} + m_Type: + - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Clamp: 0 +--- !u!114 &8926484042661615842 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10106,31 +10181,31 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615827} + m_MasterSlot: {fileID: 8926484042661615842} m_MasterData: - m_Owner: {fileID: 8926484042661615826} + m_Owner: {fileID: 8926484042661615841} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0.8 + m_SerializableObject: 0.5 m_Space: -1 m_Property: - name: _Size + name: input m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: - - {fileID: 8926484042661615833} ---- !u!114 &8926484042661615828 + - {fileID: 8926484042661615488} +--- !u!114 &8926484042661615843 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10139,62 +10214,32 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615828} + m_MasterSlot: {fileID: 8926484042661615843} m_MasterData: - m_Owner: {fileID: 8926484042661615826} + m_Owner: {fileID: 8926484042661615841} m_Value: m_Type: - m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: True + m_SerializableObject: -1 m_Space: -1 m_Property: - name: _vfx_enabled + name: oldRangeMin m_serializedType: - m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661615829 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c42128e17c583714a909b4997c80c916, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} - m_Children: [] - m_UIPosition: {x: 215, y: 1883} - m_UICollapsed: 0 - m_UISuperCollapsed: 0 - m_InputSlots: - - {fileID: 8926484042661615830} - - {fileID: 8926484042661615831} - - {fileID: 8926484042661615832} - m_OutputSlots: - - {fileID: 8926484042661615833} - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - seed: 2 - constant: 1 - independentSeed: 0 ---- !u!114 &8926484042661615830 +--- !u!114 &8926484042661615844 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10205,30 +10250,30 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615830} + m_MasterSlot: {fileID: 8926484042661615844} m_MasterData: - m_Owner: {fileID: 8926484042661615829} + m_Owner: {fileID: 8926484042661615841} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0.5 + m_SerializableObject: 1 m_Space: -1 m_Property: - name: Min + name: oldRangeMax m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661615831 +--- !u!114 &8926484042661615845 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10239,16 +10284,16 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615831} + m_MasterSlot: {fileID: 8926484042661615845} m_MasterData: - m_Owner: {fileID: 8926484042661615829} + m_Owner: {fileID: 8926484042661615841} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, @@ -10256,13 +10301,13 @@ MonoBehaviour: m_SerializableObject: 1 m_Space: -1 m_Property: - name: Max + name: newRangeMin m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661615832 +--- !u!114 &8926484042661615846 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10271,32 +10316,32 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615832} + m_MasterSlot: {fileID: 8926484042661615846} m_MasterData: - m_Owner: {fileID: 8926484042661615829} + m_Owner: {fileID: 8926484042661615841} m_Value: m_Type: - m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 449 + m_SerializableObject: -1 m_Space: -1 m_Property: - name: seed + name: newRangeMax m_serializedType: - m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661615833 +--- !u!114 &8926484042661615847 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -10307,16 +10352,16 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615833} + m_MasterSlot: {fileID: 8926484042661615847} m_MasterData: - m_Owner: {fileID: 8926484042661615829} + m_Owner: {fileID: 8926484042661615841} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, @@ -10324,10 +10369,10 @@ MonoBehaviour: m_SerializableObject: m_Space: -1 m_Property: - name: r + name: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: - - {fileID: 8926484042661615827} + - {fileID: 8926484042661615837} diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultipleOutputs.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultipleOutputs.vfx index b96c327a337..ea7066f77fa 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultipleOutputs.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/MultipleOutputs.vfx @@ -12,13 +12,99 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d01270efd3285ea4a9d6c555cb0a8027, type: 3} m_Name: VFXUI m_EditorClassIdentifier: - groupInfos: [] + groupInfos: + - title: + position: + serializedVersion: 2 + x: 309 + y: -521 + width: 1938 + height: 2650 + contents: + - model: {fileID: 8926484042661614649} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614729} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614558} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614953} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614973} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614959} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615230} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614583} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614585} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614589} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615038} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615053} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615046} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615056} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615062} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615071} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615147} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615155} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615158} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615184} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615190} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615192} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 stickyNoteInfos: - title: 'SYSTEM Rename :' position: serializedVersion: 2 x: 423 - y: -56 + y: -28 width: 281 height: 161 contents: 'You can name your system by double-clicking on the green text in the @@ -30,13 +116,14 @@ MonoBehaviour: so don''t forget to give informative names to your systems. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Block Context Inspector:' position: serializedVersion: 2 x: 914 - y: 172 + y: 200 width: 281 height: 213 contents: "Blocks usually display their settings directly inside the block layout @@ -45,13 +132,14 @@ MonoBehaviour: \u201Cset size random\u201D block in the initialize context and look at the options in the Inspector.\r\n\r\nWe changed the \u201Crandom\u201D option from off to uniform, to allow the randomization of the size attribute's value.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Multiples Output Context:' position: serializedVersion: 2 x: 334 - y: 1154 + y: 1182 width: 406 height: 204 contents: "The \u201Cinitialize\u201D or \u201Cupdate\u201D context can be wired @@ -62,13 +150,14 @@ MonoBehaviour: glow\u201D on top of it.\r\n\r\nNote that some Outputs are only compatible with a particular SRP. Example: the HDRP Volumetric Fog output is only compatible with HDRP." - theme: Black + theme: textSize: Small + colorTheme: 3 - title: 'Block Context Composition:' position: serializedVersion: 2 x: 1291 - y: 1437 + y: 1465 width: 390 height: 252 contents: "Another advanced option for a lot of context blocks is the composition @@ -81,15 +170,16 @@ MonoBehaviour: to the current position. This allows us to \u201Cadd\u201D an \u201Coffset\u201D to the position of the \u201Cmesh\u201D and \u201Cquad lit\u201D outputs. \r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: 334 - y: -490 - width: 1886 - height: 2563 + x: 309 + y: -521 + width: 1938 + height: 2650 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -120,7 +210,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -136,10 +226,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -166,7 +252,7 @@ MonoBehaviour: - {fileID: 8926484042661614973} - {fileID: 8926484042661614959} - {fileID: 8926484042661615230} - m_UIPosition: {x: 1232, y: 0} + m_UIPosition: {x: 1232, y: 28} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -537,7 +623,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1232, y: 629} + m_UIPosition: {x: 1232, y: 657} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -581,7 +667,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661614589} - m_UIPosition: {x: 1232, y: 943} + m_UIPosition: {x: 1232, y: 971} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -605,6 +691,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661614590} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -761,7 +848,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661614729} - m_UIPosition: {x: 1232, y: -490} + m_UIPosition: {x: 1232, y: -462} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -1074,7 +1161,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615053} - {fileID: 8926484042661615046} - m_UIPosition: {x: 764, y: 1124} + m_UIPosition: {x: 764, y: 1152} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1102,6 +1189,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615045} + useBaseColorMap: -1 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -1127,7 +1215,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: -1 useMaskMap: 0 useNormalMap: 0 useEmissiveMap: 0 @@ -1482,7 +1569,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615062} - {fileID: 8926484042661615071} - m_UIPosition: {x: 1796, y: 1141} + m_UIPosition: {x: 1796, y: 1169} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1510,6 +1597,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615061} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -1535,7 +1623,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 3 useMaskMap: 0 useNormalMap: 0 useEmissiveMap: 0 @@ -1976,7 +2063,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615155} - {fileID: 8926484042661615158} - m_UIPosition: {x: 764, y: 1581} + m_UIPosition: {x: 764, y: 1609} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2004,6 +2091,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615154} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -2032,7 +2120,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 3 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -2381,7 +2468,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615190} - {fileID: 8926484042661615192} - m_UIPosition: {x: 1796, y: 1611} + m_UIPosition: {x: 1796, y: 1639} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2409,6 +2496,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615189} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -2437,7 +2525,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 3 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/OrientAdvanced.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/OrientAdvanced.vfx index 75b8d817d3f..dab1cad9e59 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/OrientAdvanced.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/OrientAdvanced.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Init Position position: serializedVersion: 2 - x: 517 - y: 547 - width: 403 - height: 387 + x: 371 + y: 518 + width: 517 + height: 405 contents: - model: {fileID: 8926484042661616184} id: 0 @@ -30,13 +30,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616184} id: 3 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 - title: Orient Advanced position: serializedVersion: 2 - x: 444 - y: 2436 - width: 485 - height: 285 + x: -281 + y: 2430 + width: 1041 + height: 297 contents: - model: {fileID: 8926484042661616247} id: 0 @@ -50,12 +53,106 @@ MonoBehaviour: - model: {fileID: 8926484042661616328} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 + - title: New Group Node + position: + serializedVersion: 2 + x: 900 + y: -113 + width: 757 + height: 1085 + contents: + - model: {fileID: 8926484042661615931} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616383} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615937} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616386} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616535} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 782 + y: 991 + width: 1107 + height: 1940 + contents: + - model: {fileID: 8926484042661616150} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616153} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616202} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616520} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616184} + id: 2 + isStickyNote: 0 + - model: {fileID: 8926484042661616375} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616135} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616101} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616305} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616104} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616114} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616389} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 stickyNoteInfos: - title: 'Set Color From Curve:' position: serializedVersion: 2 - x: 1365 - y: 2353 + x: 1375 + y: 2490 width: 489 height: 172 contents: "The \u201Cattribute from curve\u201D allows us to \u201Cset\u201D @@ -65,13 +162,14 @@ MonoBehaviour: given a random color in the color gradient that we defined.\r\n\r\nThere's a different sampling mode so that we can sample the gradient thanks to the particle's speed, overlife, etc.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: '!! Computed Source Code !!' position: serializedVersion: 2 - x: 1377 - y: 2564 + x: 1373 + y: 2713 width: 385 height: 193 contents: "A great way to learn or understand what's being done by a \r\n\u201CContext @@ -79,13 +177,14 @@ MonoBehaviour: Additional Debug Info.\u201D\n\nBy doing so, when selecting a \u201Ccontext block,\u201D you'll be able to see the generated code and attributes that are read and written.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 3 - title: 'Init Position:' position: serializedVersion: 2 - x: 225 - y: 575 + x: 396 + y: 696 width: 286 height: 165 contents: 'We''re using a sphere property to spawn our particles on this sphere, @@ -98,13 +197,14 @@ MonoBehaviour: update and output context. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Bounds:' position: serializedVersion: 2 - x: 1380 - y: 561 + x: 1375 + y: 559 width: 256 height: 111 contents: 'We''re using our sphere property for our bound center and size. @@ -113,8 +213,9 @@ MonoBehaviour: way, the bounds will match our initial particle''s position on the sphere. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Conform to Sphere:' position: serializedVersion: 2 @@ -124,8 +225,9 @@ MonoBehaviour: height: 100 contents: This block allows you to keep particles inside a sphere. You can play with the Attraction Force and Stick Force settings. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Turbulence:' position: serializedVersion: 2 @@ -137,15 +239,16 @@ MonoBehaviour: It's interesting to add more organic motion to your particles.\r\nHere we're also using a \u201Ctime\u201D operator to offset the transform of the noise. This allows for more intriguing motion.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Scale & Size:' position: serializedVersion: 2 - x: 639 - y: 2101 - width: 286 - height: 296 + x: 1377 + y: 2209 + width: 417 + height: 269 contents: 'The scale is the attribute that controls the scale of the particles. By default, it''s a vector3. @@ -171,15 +274,16 @@ MonoBehaviour: be a Vector2 instead of a Vector3, and this can help you save some memory. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Orient Advanced:' position: serializedVersion: 2 - x: -119 - y: 2443 + x: -255 + y: 2489 width: 554 - height: 616 + height: 212 contents: "In advanced mode, the orient block needs two vectors to properly orient the particles.\r\n\r\nThe Z-axis is the facing vector, while the Y-axis is the alignment vector.\r\nHere, we want our particle to always face the sphere @@ -188,22 +292,24 @@ MonoBehaviour: they align with their velocity direction.\r\n\r\nNote that we don't need to normalize our vectors, as the Orient Block is already doing a normalization operation.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: Orient Advanced position: serializedVersion: 2 - x: 848 - y: -75 + x: 929 + y: -54 width: 669 height: 110 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: 'Output Triangle :' position: serializedVersion: 2 - x: 1374 + x: 1380 y: 1993 width: 250 height: 181 @@ -212,15 +318,16 @@ MonoBehaviour: UVs are handled, or even the \u201Cprimitive type.\u201D\r\n\r\nIn the Inspector tab, after selecting the \u201Coutput context\u201D block, we've changed the \u201Cprimitive type\u201D from quad to triangle.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -119 - y: -75 - width: 1973 - height: 3134 + x: -281 + y: -113 + width: 2170 + height: 3045 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -253,7 +360,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -269,10 +376,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -296,7 +399,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661616383} - m_UIPosition: {x: 929, y: 61} + m_UIPosition: {x: 925, y: 59} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -352,7 +455,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661616386} - {fileID: 8926484042661616535} - m_UIPosition: {x: 929, y: 459} + m_UIPosition: {x: 925, y: 457} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -972,6 +1075,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616138} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -1617,7 +1721,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661616185} inputSlot: {fileID: 8926484042661616536} - position: {x: 766.6667, y: 856} + position: {x: 736.6667, y: 828} expandedSlots: - {fileID: 8926484042661616186} - {fileID: 8926484042661616187} @@ -1628,7 +1732,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661616188} inputSlot: {fileID: 8926484042661616392} - position: {x: 562.6667, y: 2604} + position: {x: 405.33334, y: 2604.6667} expandedSlots: - {fileID: 8926484042661616186} - {fileID: 8926484042661616187} @@ -1644,14 +1748,14 @@ MonoBehaviour: - {fileID: 8926484042661616186} - {fileID: 8926484042661616187} expanded: 0 - supecollapsed: 0 + supecollapsed: 1 - m_Id: 3 linkedSlots: - outputSlot: {fileID: 8926484042661616188} inputSlot: {fileID: 8926484042661615939} - outputSlot: {fileID: 8926484042661616200} inputSlot: {fileID: 8926484042661616528} - position: {x: 542.6667, y: 605.3333} + position: {x: 512.6667, y: 577.3334} expandedSlots: - {fileID: 8926484042661616185} - {fileID: 8926484042661616186} @@ -3310,7 +3414,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 654, y: 2665} + m_UIPosition: {x: 497, y: 2665} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -3396,7 +3500,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 469, y: 2495} + m_UIPosition: {x: 313, y: 2495} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -3420,7 +3524,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 745, y: 2546} + m_UIPosition: {x: 589, y: 2546} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -3589,7 +3693,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 796, y: 1401} + m_UIPosition: {x: 812, y: 1391} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -3856,7 +3960,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661615931} m_Children: [] - m_UIPosition: {x: 0, y: 0} + m_UIPosition: {x: 0, y: 2} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3947,7 +4051,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661615937} m_Children: [] - m_UIPosition: {x: 0, y: 0} + m_UIPosition: {x: 0, y: 2} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4541,7 +4645,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 722, y: 657} + m_UIPosition: {x: 692, y: 628} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4711,7 +4815,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661615937} m_Children: [] - m_UIPosition: {x: 0, y: 0} + m_UIPosition: {x: 0, y: 77} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/OrientFaceCamera.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/OrientFaceCamera.vfx index fdf61de577e..9424152bcfd 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/OrientFaceCamera.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/OrientFaceCamera.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Rotate Position Around TransformPos position: serializedVersion: 2 - x: 142 - y: 376 - width: 675 - height: 285 + x: -373 + y: 391 + width: 928 + height: 282 contents: - model: {fileID: 8926484042661615335} id: 0 @@ -33,13 +33,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615357} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 - title: Sample Mesh position: serializedVersion: 2 - x: 106 - y: 4 - width: 721 - height: 224 + x: -241 + y: -114 + width: 795 + height: 469 contents: - model: {fileID: 8926484042661615185} id: 0 @@ -50,13 +53,19 @@ MonoBehaviour: - model: {fileID: 8926484042661615225} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - model: {fileID: 8926484042661615992} + id: 3 + isStickyNote: 0 - title: Noise Size and Eye Dilation. position: serializedVersion: 2 - x: -34 - y: 712 - width: 879 - height: 474 + x: -317 + y: 735 + width: 859 + height: 757 contents: - model: {fileID: 8926484042661616011} id: 0 @@ -79,13 +88,22 @@ MonoBehaviour: - model: {fileID: 8926484042661616021} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 8926484042661615842} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615848} + id: 0 + isStickyNote: 0 - title: Rotate Direction position: serializedVersion: 2 - x: 1470 - y: 497 - width: 809 - height: 267 + x: 1430 + y: 376 + width: 838 + height: 361 contents: - model: {fileID: 8926484042661615654} id: 0 @@ -96,12 +114,127 @@ MonoBehaviour: - model: {fileID: 8926484042661615706} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 579 + y: -825 + width: 784 + height: 2553 + contents: + - model: {fileID: 8926484042661614555} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614861} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614558} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615227} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615234} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615362} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615364} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616119} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616120} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616123} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616129} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616132} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616139} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 8926484042661616241} + id: 0 + isStickyNote: 0 + - title: New Group Node + position: + serializedVersion: 2 + x: 2299 + y: -709 + width: 795 + height: 2166 + contents: + - model: {fileID: 8926484042661615255} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615494} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615501} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616096} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616097} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616103} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616027} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616029} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615873} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615238} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615262} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615240} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615765} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615379} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615992} + id: 1 + isStickyNote: 0 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 stickyNoteInfos: - title: Sample Mesh position: serializedVersion: 2 - x: -212 - y: 15 + x: -216 + y: 114 width: 302 height: 216 contents: 'Sampling a mesh allows you to get information from it like the triangles @@ -120,25 +253,27 @@ MonoBehaviour: the particle mesh size so that it fits its eyes sockets. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Rotate3d position: serializedVersion: 2 - x: -125 - y: 376 + x: -348 + y: 514 width: 248 height: 117 contents: "The Rotate3D operator allows you to rotate a position around an axis.\n\r\nHere, we apply a rotation to the particle's position around the \u201Ctransform\u201D position. \r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Noise operator:' position: serializedVersion: 2 - x: -335 - y: 729 + x: -287 + y: 1156 width: 287 height: 278 contents: 'The value noise operator can be very useful to add some life or animation @@ -163,15 +298,16 @@ MonoBehaviour: and number of octaves low. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'ORIENT: FACE CAMERA' position: serializedVersion: 2 - x: 553 - y: 1601 - width: 787 - height: 388 + x: 621 + y: 1529 + width: 417 + height: 174 contents: "The Orient Block is very useful and can often be found in the output context. It is responsible for \u201Corienting\u201D the particles.\r\nDifferent modes are available, but the most common ones are Face Camera Position and @@ -179,47 +315,51 @@ MonoBehaviour: orient the particles so that they're facing the camera (position or plane).\r\n\r\nUnder the hood, this block is setting the AxisX, AxisY, AxisZ attributes that are used to represent particle orientation.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: Eyes Face Camera position: serializedVersion: 2 - x: 692 - y: -774 + x: 605 + y: -765 width: 733 height: 101 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Body position: serializedVersion: 2 - x: 2407 - y: -645 + x: 2739 + y: -650 width: 236 height: 101 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Rotate3d position: serializedVersion: 2 - x: 1509 - y: 369 + x: 1960 + y: 435 width: 280 height: 114 contents: "The Rotate3D operator allows you to rotate a position around an axis.\n\r\nHere, we apply a rotation to the particle's position around the \u201Ctransform\u201D position. \r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -335 - y: -774 - width: 3073 - height: 2763 + x: -373 + y: -825 + width: 3467 + height: 2553 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -264,6 +404,7 @@ MonoBehaviour: - {fileID: 8926484042661616021} - {fileID: 8926484042661616027} - {fileID: 8926484042661616029} + - {fileID: 8926484042661616241} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 @@ -271,7 +412,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -287,10 +428,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -314,7 +451,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661614861} - m_UIPosition: {x: 847, y: -643} + m_UIPosition: {x: 607, y: -645} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -350,7 +487,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615227} - {fileID: 8926484042661615234} - m_UIPosition: {x: 847, y: -179} + m_UIPosition: {x: 607, y: -181} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -902,7 +1039,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 611, y: 771} + m_UIPosition: {x: 328, y: 794} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -926,7 +1063,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 423, y: 63} + m_UIPosition: {x: 266, y: 65} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -2085,7 +2222,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 131, y: 81} + m_UIPosition: {x: -26, y: 83} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -2234,7 +2371,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615262} - m_UIPosition: {x: 2312, y: -513} + m_UIPosition: {x: 2643, y: -518} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2290,7 +2427,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615765} - {fileID: 8926484042661615379} - m_UIPosition: {x: 2312, y: -57} + m_UIPosition: {x: 2643, y: -62} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2660,7 +2797,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615494} - {fileID: 8926484042661615501} - m_UIPosition: {x: 2312, y: 478} + m_UIPosition: {x: 2643, y: 473} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2824,7 +2961,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 437, y: 435} + m_UIPosition: {x: 108, y: 450} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3567,7 +3704,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 167, y: 445} + m_UIPosition: {x: -162, y: 460} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -3592,7 +3729,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615364} - m_UIPosition: {x: 847, y: 356} + m_UIPosition: {x: 607, y: 355} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3689,7 +3826,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 250, y: 559} + m_UIPosition: {x: -80, y: 574} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4018,7 +4155,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1623, y: 556} + m_UIPosition: {x: 1583, y: 559} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4884,7 +5021,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2021, y: 709} + m_UIPosition: {x: 2029, y: 681} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -4910,7 +5047,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1495, y: 666} + m_UIPosition: {x: 1455, y: 667} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -5751,7 +5888,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 312, y: 931} + m_UIPosition: {x: 29, y: 954} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6055,7 +6192,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -9, y: 1071} + m_UIPosition: {x: -292, y: 1094} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -6112,7 +6249,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 329, y: 1375} + m_UIPosition: {x: 130, y: 1427} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -6169,7 +6306,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 495, y: 1336} + m_UIPosition: {x: 296, y: 1389} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -6541,8 +6678,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2069, y: 1034} - m_UICollapsed: 0 + m_UIPosition: {x: 2467, y: 1096} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] m_OutputSlots: @@ -6592,7 +6729,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661615993} inputSlot: {fileID: 8926484042661615188} - position: {x: 248.66667, y: 150.66667} + position: {x: 90.666664, y: 153.33334} expandedSlots: [] expanded: 0 supecollapsed: 0 @@ -6604,15 +6741,15 @@ MonoBehaviour: inputSlot: {fileID: 8926484042661616158} - outputSlot: {fileID: 8926484042661615994} inputSlot: {fileID: 8926484042661615242} - position: {x: 2134.6667, y: 97.33333} + position: {x: 2470, y: 170.66667} expandedSlots: [] expanded: 1 - supecollapsed: 0 + supecollapsed: 1 - m_Id: 2 linkedSlots: - outputSlot: {fileID: 8926484042661615994} inputSlot: {fileID: 8926484042661615341} - position: {x: 266, y: 489} + position: {x: -64, y: 504.66666} expandedSlots: - {fileID: 8926484042661615993} expanded: 0 @@ -6621,7 +6758,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661615994} inputSlot: {fileID: 8926484042661614560} - position: {x: 662, y: -58.666664} + position: {x: 364, y: -54.666664} expandedSlots: - {fileID: 8926484042661615993} expanded: 0 @@ -7089,7 +7226,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 654, y: 893} + m_UIPosition: {x: 371, y: 916} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7258,7 +7395,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 654, y: 1023} + m_UIPosition: {x: 371, y: 1046} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7427,7 +7564,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -9, y: 981} + m_UIPosition: {x: -292, y: 1004} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -7526,7 +7663,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 183, y: 1023} + m_UIPosition: {x: -100, y: 1046} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -7732,7 +7869,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1993, y: 1357} + m_UIPosition: {x: 2325, y: 1352} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -7789,7 +7926,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2165, y: 1357} + m_UIPosition: {x: 2497, y: 1352} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -8163,7 +8300,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661616097} - {fileID: 8926484042661616103} - m_UIPosition: {x: 2312, y: 947} + m_UIPosition: {x: 2643, y: 942} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8190,6 +8327,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616118} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -8462,7 +8600,7 @@ MonoBehaviour: - {fileID: 8926484042661616129} - {fileID: 8926484042661616132} - {fileID: 8926484042661616139} - m_UIPosition: {x: 847, y: 710} + m_UIPosition: {x: 607, y: 709} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8491,6 +8629,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616151} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -8672,7 +8811,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661616119} m_Children: [] - m_UIPosition: {x: 0, y: 190} + m_UIPosition: {x: 0, y: 189} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8770,7 +8909,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661616119} m_Children: [] - m_UIPosition: {x: 0, y: 321} + m_UIPosition: {x: 0, y: 318} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8832,7 +8971,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661616119} m_Children: [] - m_UIPosition: {x: 0, y: 456} + m_UIPosition: {x: 0, y: 415} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -11531,3 +11670,301 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] +--- !u!114 &8926484042661616241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3022e18cf9c74cc49be91d7f5cb63567, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.Operator.Normalize + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: 729, y: -503} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661616242} + m_OutputSlots: + - {fileID: 8926484042661616246} + m_Type: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + safeNormalize: 1 +--- !u!114 &8926484042661616242 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat3 + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661616243} + - {fileID: 8926484042661616244} + - {fileID: 8926484042661616245} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661616242} + m_MasterData: + m_Owner: {fileID: 8926484042661616241} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":1.0,"y":1.0,"z":1.0}' + m_Space: -1 + m_Property: + name: x + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661616243 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661616242} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661616242} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661616244 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661616242} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661616242} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661616245 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661616242} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661616242} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661616246 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat3 + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661616247} + - {fileID: 8926484042661616248} + - {fileID: 8926484042661616249} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661616246} + m_MasterData: + m_Owner: {fileID: 8926484042661616241} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: + m_Space: -1 + m_Property: + name: + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 1 + m_LinkedSlots: [] +--- !u!114 &8926484042661616247 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661616246} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661616246} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: [] +--- !u!114 &8926484042661616248 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661616246} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661616246} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: [] +--- !u!114 &8926484042661616249 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661616246} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661616246} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: [] diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/OrientFixedAxis.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/OrientFixedAxis.vfx index 1eb40115437..b513849f9cf 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/OrientFixedAxis.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/OrientFixedAxis.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Flower Opening Animation position: serializedVersion: 2 - x: -853 - y: -459 - width: 1147 - height: 330 + x: -1171 + y: -464 + width: 1394 + height: 247 contents: - model: {fileID: 8926484042661617763} id: 0 @@ -42,13 +42,16 @@ MonoBehaviour: - model: {fileID: 8926484042661617788} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 - title: Init Mesh Sampling position: serializedVersion: 2 - x: -304 - y: -828 - width: 617 - height: 256 + x: -681 + y: -800 + width: 879 + height: 258 contents: - model: {fileID: 8926484042661617912} id: 0 @@ -59,13 +62,16 @@ MonoBehaviour: - model: {fileID: 8926484042661617505} id: 3 isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 - title: Index position: serializedVersion: 2 - x: -174 - y: -1023 - width: 487 - height: 184 + x: -549 + y: -1073 + width: 746 + height: 255 contents: - model: {fileID: 8926484042661615225} id: 0 @@ -73,13 +79,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616096} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 - title: Set Particle Position position: serializedVersion: 2 - x: -1409 - y: -97 - width: 1693 - height: 782 + x: -1685 + y: -145 + width: 1964 + height: 751 contents: - model: {fileID: 8926484042661616777} id: 0 @@ -129,13 +138,25 @@ MonoBehaviour: - model: {fileID: 8926484042661618808} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 - title: Axis Direction position: serializedVersion: 2 - x: -2027 - y: 1157 - width: 2089 - height: 730 + x: -2223 + y: 963 + width: 2227 + height: 724 contents: - model: {fileID: 8926484042661617188} id: 0 @@ -191,13 +212,19 @@ MonoBehaviour: - model: {fileID: 8926484042661619131} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 - title: Body position: serializedVersion: 2 - x: 3925 - y: -1502 - width: 1071 - height: 1398 + x: 3910 + y: -1613 + width: 1086 + height: 1494 contents: - model: {fileID: 8926484042661615240} id: 0 @@ -214,13 +241,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615238} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 14 + isStickyNote: 1 - title: Flower Opening Animation position: serializedVersion: 2 - x: 1383 - y: -541 - width: 1147 - height: 246 + x: 1086 + y: -549 + width: 1368 + height: 255 contents: - model: {fileID: 8926484042661618947} id: 0 @@ -243,13 +273,16 @@ MonoBehaviour: - model: {fileID: 8926484042661618972} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 15 + isStickyNote: 1 - title: Mesh Sample position: serializedVersion: 2 - x: 1743 - y: -903 - width: 869 - height: 240 + x: 1410 + y: -919 + width: 1191 + height: 254 contents: - model: {fileID: 8926484042661616585} id: 0 @@ -263,6 +296,9 @@ MonoBehaviour: - model: {fileID: 8926484042661617505} id: 1 isStickyNote: 0 + - model: {fileID: 0} + id: 16 + isStickyNote: 1 - title: Index position: serializedVersion: 2 @@ -280,10 +316,10 @@ MonoBehaviour: - title: Eyes Size position: serializedVersion: 2 - x: 1631 - y: -144 - width: 1039 - height: 457 + x: 1364 + y: -224 + width: 1229 + height: 538 contents: - model: {fileID: 8926484042661616456} id: 0 @@ -315,12 +351,168 @@ MonoBehaviour: - model: {fileID: 8926484042661616446} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 11 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 288 + y: -1727 + width: 483 + height: 1223 + contents: + - model: {fileID: 8926484042661614555} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614861} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614558} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619048} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619052} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619059} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617958} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 12 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 30 + y: 647 + width: 1629 + height: 1355 + contents: + - model: {fileID: 8926484042661616342} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616369} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617087} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616354} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616366} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617440} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616360} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616357} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618508} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618539} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618546} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618550} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618553} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618556} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618560} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618566} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615878} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619137} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 2676 + y: -1568 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661616544} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616547} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616551} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619106} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618976} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616573} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616576} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616578} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619120} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619015} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619016} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619019} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619025} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661619028} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 13 + isStickyNote: 1 + - model: {fileID: 0} + id: 10 + isStickyNote: 1 stickyNoteInfos: - title: 'Mesh Sample:' position: serializedVersion: 2 - x: -705 - y: -813 + x: -655 + y: -730 width: 379 height: 144 contents: 'We''re sampling the mesh to get the position and normal of the eye''s @@ -334,13 +526,14 @@ MonoBehaviour: when the particles are born. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Index:' position: serializedVersion: 2 - x: -433 - y: -1028 + x: -523 + y: -1014 width: 253 height: 170 contents: 'The socket for each eye has been baked in the first 100 triangles @@ -354,41 +547,44 @@ MonoBehaviour: in. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Opening Animation:' position: serializedVersion: 2 - x: -1207 - y: -447 - width: 336 - height: 174 + x: -1145 + y: -386 + width: 353 + height: 113 contents: "The opening animation is a per-particle value from 0 (close) to 1 (open). We're using the VFX time to sample a curve and drive the flower animation. As we don't want each flower to open at the same time, we're offsetting the time thanks to our \u201CIndex\u201D attribute that has been calculated in the Initialize Context." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Set Position:' position: serializedVersion: 2 - x: -1816 - y: -99 + x: -1660 + y: -85 width: 401 - height: 265 + height: 100 contents: 'We want to spawn our Particles Feathers in a Circle. The circle center should be the Eye Socket position, and the Circle Should also be oriented in the Eye''s Socket Normal Direction. ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 2 - title: Radius position: serializedVersion: 2 - x: -481 - y: 401 + x: -311 + y: 387 width: 399 height: 193 contents: "The size of each \u201Ccircle\u201D cannot be the same for each particle, @@ -398,40 +594,43 @@ MonoBehaviour: mesh.\r\n\r\nWe're also animating the circle radius based on the flower opening 0-1 animation value. When the flower is closed, the circle is bigger, and when the flower is open, the circle radius shrinks slightly.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Transform:' position: serializedVersion: 2 - x: -1262 - y: 467 + x: -1255 + y: 439 width: 379 height: 100 contents: 'We''re changing the Z component of the transform to be able to push or pull the circle position based on the flower animation. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'LookAt:' position: serializedVersion: 2 - x: -1031 - y: -35 + x: -1086 + y: -41 width: 262 height: 100 contents: "The LookAt operator allows us to create a transform so that we can properly \u201Clocate\u201D and \u201Corient\u201D each circle on every eye's socket.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Axis Direction:' position: serializedVersion: 2 - x: -2013 - y: 819 - width: 840 - height: 346 + x: -1077 + y: 1039 + width: 377 + height: 193 contents: "The \u201Cinitial direction\u201D attribute is the normal pointing outward of each eye's socket. The \u201CDirection\u201D attribute is set by the \u201CPosition\u201D arc circle block in the update context and corresponds @@ -439,26 +638,28 @@ MonoBehaviour: interpolating (lerping) between the initial direction and direction attribute.\r\nTo lerp between the two, the \u201Copen\u201D attribute value (from the Flower Animation) is used.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Open+Noise:' position: serializedVersion: 2 - x: -993 - y: 1739 + x: -2178 + y: 1339 width: 282 height: 145 contents: "The lerp between the Initial Direction and Direction attribute is driven by the \u201Copen\u201D attribute. But to create some nice, subtle movement, we're adding some noise.\r\nThis creates an impression of \u201Cbreathing\u201D eyelashes.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Orient Fixed Axis:' position: serializedVersion: 2 - x: 195 - y: 2064 + x: 951 + y: 1603 width: 682 height: 327 contents: "Again, we're using the orient block to orient our particles. This @@ -466,15 +667,16 @@ MonoBehaviour: the particles along an \u201Cup\u201D vector while still facing the camera. \n\nIt is often used for grass on the ground or flames. This way, the particles are not rotating when looked at from above. \r\n" - theme: Black + theme: textSize: Medium + colorTheme: 2 - title: 'ORIENT: FACE CAMERA' position: serializedVersion: 2 - x: 2445 - y: 600 - width: 798 - height: 417 + x: 3123 + y: 317 + width: 569 + height: 194 contents: "The Orient Block is very useful and can frequently be found in the output context. It is responsible for \u201Corienting\u201D the particles.\r\nDifferent modes are available, but the most common ones are Face Camera Position and @@ -482,13 +684,14 @@ MonoBehaviour: orient the particles so that they're facing the camera (position or plane).\r\n\r\nUnder the hood, this block is setting the AxisX, AxisY, AxisZ attributes that are used to represent particle orientation.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Noise operator:' position: serializedVersion: 2 - x: 1287 - y: -99 + x: 1389 + y: -165 width: 339 height: 248 contents: 'The value noise operator can be very useful to add some life or animation @@ -513,18 +716,20 @@ MonoBehaviour: and number of octaves low. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: FEATHERS position: serializedVersion: 2 - x: 323 - y: -1737 + x: 313 + y: -1673 width: 433 - height: 101 + height: 106 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: EYES position: serializedVersion: 2 @@ -533,23 +738,25 @@ MonoBehaviour: width: 234 height: 101 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: BODY position: serializedVersion: 2 - x: 4395 - y: -1662 + x: 4374 + y: -1553 width: 252 - height: 101 + height: 117 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: 'Opening Animation:' position: serializedVersion: 2 - x: 1090 - y: -545 + x: 1111 + y: -490 width: 288 height: 160 contents: "The opening animation is a per-particle value from 0 (close) to 1 @@ -557,13 +764,14 @@ MonoBehaviour: As we don't want each flower to open at the same time, we're offsetting the time thanks to our \u201CIndex\u201D attribute that has been calculated in the Initialize Context." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Mesh Sample:' position: serializedVersion: 2 - x: 1417 - y: -899 + x: 1435 + y: -859 width: 323 height: 139 contents: 'We''re sampling the mesh to get the position and normal of the eye''s @@ -577,15 +785,16 @@ MonoBehaviour: when the particles are born. ' - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -2027 - y: -1737 - width: 7021 - height: 4128 + x: -2223 + y: -1771 + width: 7219 + height: 3773 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -693,7 +902,7 @@ MonoBehaviour: - {fileID: 8926484042661619076} m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -709,10 +918,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -1326,7 +1531,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -149, y: -923} + m_UIPosition: {x: -266, y: -913} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -1933,6 +2138,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615273} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -2058,7 +2264,6 @@ MonoBehaviour: - 2 - 1 renderQueue: -1 - useBaseColorMap: 0 useMaskMap: 0 useNormalMap: 0 useEmissiveMap: 0 @@ -2286,7 +2491,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -227, y: 1960} + m_UIPosition: {x: 245, y: 1947} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -2658,7 +2863,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 123, y: 286} + m_UIPosition: {x: 94, y: 215} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -2795,7 +3000,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 133, y: -964} + m_UIPosition: {x: 16, y: -954} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2932,7 +3137,7 @@ MonoBehaviour: - {fileID: 8926484042661617440} - {fileID: 8926484042661616360} - {fileID: 8926484042661616357} - m_UIPosition: {x: 58, y: 709} + m_UIPosition: {x: 58, y: 707} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2962,6 +3167,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616347} + useBaseColorMap: 2 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -2987,7 +3193,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 2 useMaskMap: 0 useNormalMap: 1 useEmissiveMap: 0 @@ -3629,7 +3834,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2425, y: -85} + m_UIPosition: {x: 2357, y: -84} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3653,7 +3858,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1656, y: 93} + m_UIPosition: {x: 1587, y: 94} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -3710,7 +3915,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1828, y: 93} + m_UIPosition: {x: 1759, y: 94} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -3846,7 +4051,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2008, y: 39} + m_UIPosition: {x: 1939, y: 40} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -3913,7 +4118,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2152, y: 51} + m_UIPosition: {x: 2083, y: 52} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -4216,7 +4421,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2152, y: -40} + m_UIPosition: {x: 2083, y: -39} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -5268,7 +5473,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1768, y: -833} + m_UIPosition: {x: 1768, y: -835} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -5292,7 +5497,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2042, y: -844} + m_UIPosition: {x: 2042, y: -846} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -6451,7 +6656,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -859, y: 274} + m_UIPosition: {x: -632, y: 229} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -7364,7 +7569,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -203, y: 44} + m_UIPosition: {x: -202, y: 47} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7900,7 +8105,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -533, y: 18} + m_UIPosition: {x: -588, y: 13} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8880,7 +9085,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1023, y: 286} + m_UIPosition: {x: -796, y: 241} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -9017,7 +9222,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -227, y: 1330} + m_UIPosition: {x: -300, y: 1137} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9495,7 +9700,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -589, y: 1385} + m_UIPosition: {x: -662, y: 1193} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -9582,7 +9787,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2450, y: -718} + m_UIPosition: {x: 2450, y: -720} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -9718,7 +9923,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -673, y: 1622} + m_UIPosition: {x: -746, y: 1429} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9887,7 +10092,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1215, y: 290} + m_UIPosition: {x: -988, y: 245} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -10056,7 +10261,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -57, y: 334} + m_UIPosition: {x: -90, y: 245} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -10225,7 +10430,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -465, y: 1571} + m_UIPosition: {x: -538, y: 1379} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -10362,7 +10567,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -995, y: 1702} + m_UIPosition: {x: -1068, y: 1509} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -10499,9 +10704,9 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1813, y: 1726} - m_UICollapsed: 0 - m_UISuperCollapsed: 1 + m_UIPosition: {x: -2030, y: 1489} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 m_InputSlots: - {fileID: 8926484042661617335} - {fileID: 8926484042661617336} @@ -10871,7 +11076,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1345, y: 1786} + m_UIPosition: {x: -1418, y: 1593} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -10966,7 +11171,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1501, y: 1786} + m_UIPosition: {x: -1574, y: 1593} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -11103,7 +11308,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1649, y: 1662} + m_UIPosition: {x: -1710, y: 1469} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -11240,7 +11445,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1805, y: 1786} + m_UIPosition: {x: -1878, y: 1593} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -11471,7 +11676,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -681, y: 1466} + m_UIPosition: {x: -754, y: 1273} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -11640,7 +11845,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2510, y: 130} + m_UIPosition: {x: 2441, y: 131} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -11777,7 +11982,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2318, y: 170} + m_UIPosition: {x: 2249, y: 171} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -11946,7 +12151,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -847, y: 1702} + m_UIPosition: {x: -920, y: 1509} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -12041,7 +12246,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1217, y: 1742} + m_UIPosition: {x: -1290, y: 1549} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -12204,7 +12409,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661617506} inputSlot: {fileID: 8926484042661616593} - position: {x: 1872, y: -763.3333} + position: {x: 1872, y: -765.3333} expandedSlots: [] expanded: 0 supecollapsed: 0 @@ -12218,7 +12423,7 @@ MonoBehaviour: inputSlot: {fileID: 8926484042661619152} - outputSlot: {fileID: 8926484042661617515} inputSlot: {fileID: 8926484042661619157} - position: {x: 3950.6667, y: -356} + position: {x: 3935.3333, y: -422} expandedSlots: [] expanded: 0 supecollapsed: 0 @@ -12226,7 +12431,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661617506} inputSlot: {fileID: 8926484042661617918} - position: {x: -254.66666, y: -649.3333} + position: {x: -253.33333, y: -637.3333} expandedSlots: [] expanded: 0 supecollapsed: 0 @@ -12236,7 +12441,7 @@ MonoBehaviour: inputSlot: {fileID: 8926484042661616783} - outputSlot: {fileID: 8926484042661617515} inputSlot: {fileID: 8926484042661616787} - position: {x: -1026, y: 358} + position: {x: -800.6667, y: 314.66666} expandedSlots: - {fileID: 8926484042661617506} expanded: 0 @@ -12245,11 +12450,11 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661617507} inputSlot: {fileID: 8926484042661616826} - position: {x: -728.6666, y: 68.666664} + position: {x: -782.6667, y: 60.666668} expandedSlots: - {fileID: 8926484042661617506} expanded: 0 - supecollapsed: 0 + supecollapsed: 1 --- !u!114 &8926484042661617506 MonoBehaviour: m_ObjectHideFlags: 0 @@ -12716,7 +12921,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -100, y: -298} + m_UIPosition: {x: -97, y: -303} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -12811,7 +13016,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 56, y: -340} + m_UIPosition: {x: 59, y: -345} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -12938,9 +13143,9 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -828, y: -400} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 + m_UIPosition: {x: -783, y: -368} + m_UICollapsed: 0 + m_UISuperCollapsed: 1 m_InputSlots: [] m_OutputSlots: - {fileID: 8926484042661617771} @@ -13205,7 +13410,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -468, y: -400} + m_UIPosition: {x: -465, y: -405} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13341,7 +13546,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -662, y: -400} + m_UIPosition: {x: -659, y: -405} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13471,7 +13676,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -272, y: -340} + m_UIPosition: {x: -269, y: -345} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -13608,7 +13813,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -91, y: -753} + m_UIPosition: {x: -89, y: -741} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -14488,7 +14693,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -909, y: 1549} + m_UIPosition: {x: -982, y: 1357} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -14580,7 +14785,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -249, y: 286} + m_UIPosition: {x: -107, y: 185} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -14604,7 +14809,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1297, y: 238} + m_UIPosition: {x: -988, y: 199} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -14628,7 +14833,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1797, y: 1632} + m_UIPosition: {x: -1844, y: 1439} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -15304,7 +15509,7 @@ MonoBehaviour: - {fileID: 8926484042661618556} - {fileID: 8926484042661618560} - {fileID: 8926484042661618566} - m_UIPosition: {x: 482, y: 708} + m_UIPosition: {x: 482, y: 706} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -15335,6 +15540,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661618513} + useBaseColorMap: 2 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -15363,7 +15569,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 2 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -16427,6 +16632,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661618727} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -16555,7 +16761,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 0 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -16964,8 +17169,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 77, y: 490} - m_UICollapsed: 0 + m_UIPosition: {x: 86, y: 262} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: - {fileID: 8926484042661619223} @@ -17405,7 +17610,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2136, y: -381} + m_UIPosition: {x: 2134, y: -379} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -17500,7 +17705,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2292, y: -423} + m_UIPosition: {x: 2290, y: -421} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -17627,7 +17832,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1408, y: -483} + m_UIPosition: {x: 1406, y: -481} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -17894,7 +18099,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1768, y: -483} + m_UIPosition: {x: 1766, y: -481} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -18030,7 +18235,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1574, y: -483} + m_UIPosition: {x: 1572, y: -481} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -18160,7 +18365,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1964, y: -423} + m_UIPosition: {x: 1962, y: -421} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -18546,6 +18751,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661619040} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -21667,9 +21873,9 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2001, y: 1702} + m_UIPosition: {x: -2198, y: 1593} m_UICollapsed: 0 - m_UISuperCollapsed: 0 + m_UISuperCollapsed: 1 m_InputSlots: [] m_OutputSlots: - {fileID: 8926484042661619124} @@ -21727,7 +21933,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -468, y: -268} + m_UIPosition: {x: -465, y: -273} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -21786,7 +21992,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1383, y: 372} + m_UIPosition: {x: -1156, y: 327} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -21810,7 +22016,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -315, y: 357} + m_UIPosition: {x: -288, y: 323} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -21834,7 +22040,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1207, y: 1565} + m_UIPosition: {x: -1280, y: 1373} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -21858,7 +22064,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2136, y: 176} + m_UIPosition: {x: 2067, y: 177} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -21882,7 +22088,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -279, y: -769} + m_UIPosition: {x: -271, y: -739} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -21941,7 +22147,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -531, y: 1960} + m_UIPosition: {x: 55, y: 1947} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -22000,7 +22206,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1810, y: 9} + m_UIPosition: {x: 1741, y: 10} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -22777,7 +22983,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -465, y: 1216} + m_UIPosition: {x: -538, y: 1023} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -22801,7 +23007,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -775, y: 126} + m_UIPosition: {x: -830, y: 121} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -22825,7 +23031,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -760, y: -38} + m_UIPosition: {x: -816, y: -43} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -22849,7 +23055,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1768, y: -351} + m_UIPosition: {x: 1766, y: -349} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/PivotAdvanced.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/PivotAdvanced.vfx index ca410e8d630..06a896d4740 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/PivotAdvanced.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/PivotAdvanced.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Flower Rotate distribution position: serializedVersion: 2 - x: 345 - y: -61 - width: 830 - height: 421 + x: 311 + y: -38 + width: 849 + height: 473 contents: - model: {fileID: 8926484042661615258} id: 0 @@ -36,13 +36,19 @@ MonoBehaviour: - model: {fileID: 8926484042661614792} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 8926484042661615268} + id: 0 + isStickyNote: 0 - title: Random Var Size per Flower * Rand Size per Petal * Size Overlife position: serializedVersion: 2 - x: -393 - y: 1668 - width: 1339 - height: 548 + x: -123 + y: 1591 + width: 1343 + height: 559 contents: - model: {fileID: 8926484042661615862} id: 0 @@ -71,13 +77,19 @@ MonoBehaviour: - model: {fileID: 8926484042661616197} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 + - model: {fileID: 8926484042661615438} + id: 0 + isStickyNote: 0 - title: SG Bend Animation position: serializedVersion: 2 - x: 542 - y: 1232 - width: 673 - height: 412 + x: 396 + y: 1156 + width: 806 + height: 406 contents: - model: {fileID: 8926484042661616224} id: 0 @@ -94,13 +106,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615528} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 - title: Pivot Offset Animation position: serializedVersion: 2 - x: 430 - y: 2266 - width: 713 - height: 204 + x: 126 + y: 2211 + width: 1021 + height: 253 contents: - model: {fileID: 8926484042661615000} id: 0 @@ -111,13 +126,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616234} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 - title: Tip Position Sampling position: serializedVersion: 2 - x: 0 - y: 0 - width: 100 - height: 100 + x: 405 + y: -340 + width: 790 + height: 250 contents: - model: {fileID: 8926484042661615787} id: 0 @@ -125,13 +143,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615791} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 - title: Bend Animation Logic position: serializedVersion: 2 - x: 510 - y: 649 - width: 711 - height: 258 + x: 288 + y: 577 + width: 918 + height: 455 contents: - model: {fileID: 8926484042661614952} id: 0 @@ -145,13 +166,22 @@ MonoBehaviour: - model: {fileID: 8926484042661616222} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - model: {fileID: 8926484042661615029} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615031} + id: 0 + isStickyNote: 0 - title: Animated Noise Rotation values position: serializedVersion: 2 - x: 2440 - y: 626 - width: 1347 - height: 299 + x: 2608 + y: 689 + width: 1125 + height: 365 contents: - model: {fileID: 8926484042661616042} id: 0 @@ -174,10 +204,10 @@ MonoBehaviour: - title: Random Rotation Distribution position: serializedVersion: 2 - x: 3206 - y: 196 - width: 573 - height: 428 + x: 3165 + y: 165 + width: 882 + height: 517 contents: - model: {fileID: 8926484042661615962} id: 0 @@ -188,22 +218,193 @@ MonoBehaviour: - model: {fileID: 8926484042661616068} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 12 + isStickyNote: 1 + - model: {fileID: 8926484042661616002} + id: 0 + isStickyNote: 0 + - title: + position: + serializedVersion: 2 + x: 4950 + y: -855 + width: 1078 + height: 1705 + contents: + - model: {fileID: 8926484042661616108} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616110} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 13 + isStickyNote: 1 + - model: {fileID: 8926484042661615677} + id: 1 + isStickyNote: 0 + - model: {fileID: 8926484042661616073} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616092} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616674} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616681} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616694} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616687} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616769} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616775} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616781} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616785} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 14 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 3948 + y: -875 + width: 797 + height: 1669 + contents: + - model: {fileID: 8926484042661615677} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615805} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615984} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615810} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615918} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616528} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616529} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616535} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616541} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 10 + isStickyNote: 1 + - model: {fileID: 0} + id: 11 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 1246 + y: 641 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661614583} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615450} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614938} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615008} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615802} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616580} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616603} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 1220 + y: -948 + width: 857 + height: 1367 + contents: + - model: {fileID: 8926484042661614555} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614816} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614558} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615761} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614819} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615248} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615085} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 stickyNoteInfos: - title: Flower Blossom position: serializedVersion: 2 - x: 1162 - y: -890 + x: 1245 + y: -889 width: 639 height: 101 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: 'Pivot Offset Animation:' position: serializedVersion: 2 - x: 130 - y: 2303 + x: 151 + y: 2270 width: 295 height: 166 contents: 'The initial pivot of the petal mesh is on its root. This has been @@ -220,13 +421,14 @@ MonoBehaviour: falling. ' - theme: Black + theme: textSize: Small + colorTheme: 3 - title: 'Tip Position:' position: serializedVersion: 2 - x: 411 - y: -303 + x: 430 + y: -281 width: 326 height: 165 contents: "We want to position the petals particles at the tips of the stem mesh. @@ -234,38 +436,41 @@ MonoBehaviour: and their indices were set to be the firsts of the mesh.\r\nSo by sampling only the first three triangles of the stem mesh, we can place the particles at the correct position.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Flower Rotate distribution:' position: serializedVersion: 2 - x: 55 - y: -57 + x: 384 + y: 185 width: 295 height: 156 contents: "By rotating the petals around the X axis, we can create a flower.\r\nWe distribute the petals with ParticleId % 3 *120 degree and add some randomness to cover the full 360\xB0 circle.\r\n\r\nParticleID % 3 will distribute all of our particles on the three first triangles.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Angular Velocity position: serializedVersion: 2 - x: 1677 - y: 277 + x: 1763 + y: 239 width: 289 height: 112 contents: We want our petals to rotate while they fall. We're setting an angular velocity that will be integrated by the update context later on. The update context will use this angular velocity to rotate the particles. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Bend Anim Bool position: serializedVersion: 2 - x: 251 - y: 659 + x: 313 + y: 637 width: 272 height: 167 contents: "We're sampling a 0\u20131 curve over the lifetime of the particles. @@ -273,15 +478,16 @@ MonoBehaviour: bend animation is ending at 0.5 of the total life of the particles.\r\nWe're doing a logic statement to drive the activation of gravity, turbulence force, and rotation integration.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Activation Port position: serializedVersion: 2 - x: 1686 - y: 669 - width: 488 - height: 258 + x: 1680 + y: 737 + width: 376 + height: 130 contents: 'We want the particles to only fall down, and rotate when they finished blooming. @@ -290,8 +496,9 @@ MonoBehaviour: forces. ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 2 - title: Collide Blocks position: serializedVersion: 2 @@ -307,27 +514,29 @@ MonoBehaviour: it. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Bend Animation position: serializedVersion: 2 - x: -1 - y: 1240 - width: 528 - height: 284 + x: 421 + y: 1237 + width: 346 + height: 123 contents: "We're sampling the curve thanks to the particle's age over its lifetime to shape the bend animation. \n\nThe value is passed to the shader, and the bend is done thanks to the RotateAboutAxis node in the vertex shader." - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 2 - title: 'Size:' position: serializedVersion: 2 - x: -1035 - y: 1673 - width: 635 - height: 394 + x: -87 + y: 1917 + width: 547 + height: 158 contents: 'ParticleID % 3 * X is used as a seed for a constant random number. Thanks to the seed, we can get a random variation per flower. @@ -343,35 +552,38 @@ MonoBehaviour: the particles grow when born and shrink when dying ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 2 - title: Green Leaf position: serializedVersion: 2 - x: 4053 - y: -797 + x: 4040 + y: -815 width: 489 - height: 102 + height: 113 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Spawn On Mesh position: serializedVersion: 2 - x: 4529 - y: -75 + x: 4533 + y: -49 width: 187 height: 100 contents: The leaf particles are positioned randomly on the stem mesh. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Rotation Distribution position: serializedVersion: 2 - x: 2757 - y: 213 - width: 433 - height: 261 + x: 3391 + y: 225 + width: 422 + height: 119 contents: 'We''re rotating randomly from -180 to 180 degrees around the X axis to fully revolve around the stem mesh. @@ -380,35 +592,38 @@ MonoBehaviour: back and forth. ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 2 - title: Spiness position: serializedVersion: 2 - x: 5006 - y: -802 + x: 5335 + y: -795 width: 275 height: 101 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Spawn On Mesh position: serializedVersion: 2 - x: 5347 - y: -37 + x: 5677 + y: -61 width: 187 height: 100 contents: The spines particles are positioned randomly on the stem mesh. - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -1035 - y: -890 - width: 6707 - height: 3361 + x: -123 + y: -948 + width: 6151 + height: 3411 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -484,7 +699,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -500,10 +715,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -527,7 +738,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661614816} - m_UIPosition: {x: 1243, y: -766} + m_UIPosition: {x: 1327, y: -765} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -564,7 +775,7 @@ MonoBehaviour: - {fileID: 8926484042661614819} - {fileID: 8926484042661615248} - {fileID: 8926484042661615085} - m_UIPosition: {x: 1246, y: -441} + m_UIPosition: {x: 1329, y: -439} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -993,7 +1204,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1035, y: 1449} + m_UIPosition: {x: 1031, y: 1373} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1219,7 +1430,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 371, y: -3} + m_UIPosition: {x: 336, y: 21} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -1525,7 +1736,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 615, y: 31} + m_UIPosition: {x: 580, y: 55} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1655,7 +1866,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 468, y: 2091} + m_UIPosition: {x: 738, y: 2027} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3051,7 +3262,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 901, y: 965} + m_UIPosition: {x: 847, y: 894} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3108,7 +3319,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1073, y: 965} + m_UIPosition: {x: 1019, y: 894} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3368,7 +3579,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 793, y: 31} + m_UIPosition: {x: 758, y: 55} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3469,7 +3680,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 995, y: 124} + m_UIPosition: {x: 960, y: 149} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3606,7 +3817,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 769, y: 184} + m_UIPosition: {x: 734, y: 209} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3670,7 +3881,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1013, y: 397} + m_UIPosition: {x: 909, y: 337} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -3877,7 +4088,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 979, y: 1673} + m_UIPosition: {x: 922, y: 1650} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3958,7 +4169,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 803, y: 1291} + m_UIPosition: {x: 799, y: 1215} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4084,18 +4295,18 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661615678} inputSlot: {fileID: 8926484042661615919} - position: {x: 3971.3333, y: 2.666668} + position: {x: 3973.3333, y: 21.333332} expandedSlots: [] expanded: 0 - supecollapsed: 0 + supecollapsed: 1 - m_Id: 1 linkedSlots: - outputSlot: {fileID: 8926484042661615678} inputSlot: {fileID: 8926484042661616093} - position: {x: 4744, y: -28.666668} + position: {x: 5109.3335, y: -22.666666} expandedSlots: [] expanded: 0 - supecollapsed: 0 + supecollapsed: 1 --- !u!114 &8926484042661615678 MonoBehaviour: m_ObjectHideFlags: 0 @@ -5499,7 +5710,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -368, y: 1779} + m_UIPosition: {x: -98, y: 1715} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -5523,7 +5734,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -118, y: 1813} + m_UIPosition: {x: 152, y: 1749} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -5653,7 +5864,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 240, y: 1727} + m_UIPosition: {x: 510, y: 1663} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -5753,7 +5964,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 64, y: 1813} + m_UIPosition: {x: 334, y: 1749} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6435,7 +6646,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3231, y: 255} + m_UIPosition: {x: 3190, y: 255} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6534,8 +6745,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3115, y: 735} - m_UICollapsed: 1 + m_UIPosition: {x: 3173, y: 795} + m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: - {fileID: 8926484042661615968} @@ -7239,8 +7450,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2543, y: 685} - m_UICollapsed: 0 + m_UIPosition: {x: 2785, y: 749} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] m_OutputSlots: @@ -7263,7 +7474,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3489, y: 375} + m_UIPosition: {x: 3448, y: 375} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7563,7 +7774,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3801, y: 552} + m_UIPosition: {x: 3743, y: 543} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7869,9 +8080,9 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3497, y: 735} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 + m_UIPosition: {x: 3564, y: 903} + m_UICollapsed: 0 + m_UISuperCollapsed: 1 m_InputSlots: - {fileID: 8926484042661616018} - {fileID: 8926484042661616026} @@ -8448,7 +8659,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2465, y: 821} + m_UIPosition: {x: 2633, y: 845} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -8715,9 +8926,9 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2817, y: 737} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 + m_UIPosition: {x: 3003, y: 841} + m_UICollapsed: 0 + m_UISuperCollapsed: 1 m_InputSlots: - {fileID: 8926484042661616046} - {fileID: 8926484042661616054} @@ -9226,7 +9437,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2625, y: 817} + m_UIPosition: {x: 2793, y: 841} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -9362,7 +9573,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3231, y: 429} + m_UIPosition: {x: 3190, y: 429} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9462,7 +9673,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661616092} - m_UIPosition: {x: 4916, y: -309} + m_UIPosition: {x: 5245, y: -333} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -10378,7 +10589,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661616110} - m_UIPosition: {x: 4916, y: -675} + m_UIPosition: {x: 5245, y: -669} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -10596,7 +10807,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 251, y: 2111} + m_UIPosition: {x: 521, y: 2047} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -10788,7 +10999,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 468, y: 1825} + m_UIPosition: {x: 738, y: 1761} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -10925,7 +11136,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 240, y: 1903} + m_UIPosition: {x: 510, y: 1839} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -11059,10 +11270,10 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661616223} inputSlot: {fileID: 8926484042661616227} - position: {x: 611.3333, y: 1456} + position: {x: 594, y: 1403.3333} expandedSlots: [] expanded: 0 - supecollapsed: 0 + supecollapsed: 1 --- !u!114 &8926484042661616223 MonoBehaviour: m_ObjectHideFlags: 0 @@ -11114,7 +11325,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 567, y: 1539} + m_UIPosition: {x: 563, y: 1463} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -11170,7 +11381,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 771, y: 1479} + m_UIPosition: {x: 767, y: 1403} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -11298,7 +11509,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 762, y: 1903} + m_UIPosition: {x: 1032, y: 1839} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -11522,6 +11733,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616527} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -11932,6 +12144,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616554} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -14966,7 +15179,7 @@ MonoBehaviour: - {fileID: 8926484042661616681} - {fileID: 8926484042661616694} - {fileID: 8926484042661616687} - m_UIPosition: {x: 4645, y: 231} + m_UIPosition: {x: 4975, y: 207} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -14993,6 +15206,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616679} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -15018,7 +15232,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 3 useMaskMap: 0 useNormalMap: 0 useEmissiveMap: 0 @@ -15213,7 +15426,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661616674} m_Children: [] - m_UIPosition: {x: 0, y: 210} + m_UIPosition: {x: 0, y: 2} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -15411,7 +15624,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661616674} m_Children: [] - m_UIPosition: {x: 0, y: 2} + m_UIPosition: {x: 0, y: 198} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -15609,7 +15822,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661616674} m_Children: [] - m_UIPosition: {x: 0, y: 113} + m_UIPosition: {x: 0, y: 101} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -15743,7 +15956,7 @@ MonoBehaviour: - {fileID: 8926484042661616775} - {fileID: 8926484042661616781} - {fileID: 8926484042661616785} - m_UIPosition: {x: 5247, y: 207} + m_UIPosition: {x: 5577, y: 183} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -15770,6 +15983,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616774} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -15798,7 +16012,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 3 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -15953,7 +16166,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661616769} m_Children: [] - m_UIPosition: {x: 294.1587, y: 246.1712} + m_UIPosition: {x: 0, y: 2} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -16151,7 +16364,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661616769} m_Children: [] - m_UIPosition: {x: 294.1587, y: 149.1712} + m_UIPosition: {x: 0, y: 101} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -16282,7 +16495,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661616769} m_Children: [] - m_UIPosition: {x: 294.1587, y: 38.171204} + m_UIPosition: {x: 0, y: 198} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/PivotAttribute.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/PivotAttribute.vfx index 44500cc9721..a702ad781d3 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/PivotAttribute.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/PivotAttribute.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Debug outputs position: serializedVersion: 2 - x: -45 - y: 1414 + x: -798 + y: 1743 width: 902 - height: 1105 + height: 1129 contents: - model: {fileID: 8926484042661615133} id: 0 @@ -30,10 +30,10 @@ MonoBehaviour: - title: Pivot Offset position: serializedVersion: 2 - x: -3 - y: 555 - width: 674 - height: 295 + x: 103 + y: 517 + width: 571 + height: 321 contents: - model: {fileID: 8926484042661615812} id: 0 @@ -41,13 +41,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615763} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 - title: Angular Velocity position: serializedVersion: 2 - x: -3 - y: 943 - width: 639 - height: 294 + x: 71 + y: 847 + width: 579 + height: 352 contents: - model: {fileID: 8926484042661615755} id: 0 @@ -55,14 +58,78 @@ MonoBehaviour: - model: {fileID: 8926484042661615717} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 696 + y: -331 + width: 993 + height: 1587 + contents: + - model: {fileID: 8926484042661615656} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615703} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615678} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615757} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615681} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615911} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615684} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615686} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615692} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 526 + y: 1437 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661614639} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614937} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614652} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614939} + id: 0 + isStickyNote: 0 stickyNoteInfos: - title: 'Pivot:' position: serializedVersion: 2 - x: 1159 - y: 212 - width: 744 - height: 550 + x: 1155 + y: 624 + width: 508 + height: 243 contents: "The pivot is the origin position of a rendered element (quad, mesh, strip, etc.). This means that we can offset a rendered \u201Cquad\u201D from the particle position.\r\n\r\nPivot.X lets you offset the rendered quad on @@ -73,24 +140,26 @@ MonoBehaviour: so that the scale and rotation happens on the bottom edges of a quad.\n\nIt's also useful to offset the Pivot.Z axis with billboard facing quad as it allows you to push or pull along the camera plane.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Pivot Offset:' position: serializedVersion: 2 - x: 27 - y: 581 + x: 135 + y: 698 width: 182 height: 115 contents: The particleId is used to switch between three different pivots offset. This offsets the pivot of each particle on a different axis. - theme: Black + theme: textSize: Small + colorTheme: 3 - title: 'Pivot Offset:' position: serializedVersion: 2 - x: 7 - y: 951 + x: 97 + y: 1044 width: 200 height: 129 contents: 'Each particle is assigned a different angular velocity based on its @@ -100,25 +169,27 @@ MonoBehaviour: the pivot attribute values. ' - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Pivot Leaf position: serializedVersion: 2 - x: 696 - y: -261 + x: 731 + y: -272 width: 409 - height: 101 + height: 120 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -44 - y: -261 - width: 1947 - height: 2809 + x: -798 + y: -323 + width: 2487 + height: 3195 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -152,7 +223,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -168,10 +239,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 1 shadowCastingMode: 0 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -195,7 +262,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661614937} - m_UIPosition: {x: 897, y: 1473} + m_UIPosition: {x: 526, y: 1437} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -228,6 +295,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661614644} - {fileID: 8926484042661615958} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -253,7 +321,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 3 useMaskMap: 1 useNormalMap: 1 useEmissiveMap: 0 @@ -551,7 +618,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661614939} - m_UIPosition: {x: 1337, y: 1473} + m_UIPosition: {x: 966, y: 1437} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -584,6 +651,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661614657} - {fileID: 8926484042661615959} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -612,7 +680,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 1 - useBaseColorMap: 3 useOcclusionMap: 0 useMetallicMap: 1 useSpecularMap: 0 @@ -1774,7 +1841,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615140} - m_UIPosition: {x: 407, y: 1473} + m_UIPosition: {x: -347, y: 1802} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1800,6 +1867,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661615136} - {fileID: 8926484042661615960} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -2304,7 +2372,7 @@ MonoBehaviour: - {fileID: 8926484042661615178} - {fileID: 8926484042661615162} - {fileID: 8926484042661615166} - m_UIPosition: {x: -19, y: 1473} + m_UIPosition: {x: -773, y: 1802} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2330,6 +2398,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661615165} - {fileID: 8926484042661615961} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -3018,7 +3087,7 @@ MonoBehaviour: - {fileID: 8926484042661615757} - {fileID: 8926484042661615681} - {fileID: 8926484042661615911} - m_UIPosition: {x: 685, y: 175} + m_UIPosition: {x: 721, y: 172} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3514,7 +3583,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615686} - m_UIPosition: {x: 685, y: -129} + m_UIPosition: {x: 721, y: -132} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3765,7 +3834,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 685, y: 1081} + m_UIPosition: {x: 721, y: 1078} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4282,7 +4351,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 321, y: 1001} + m_UIPosition: {x: 320, y: 906} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4893,7 +4962,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 22, y: 1097} + m_UIPosition: {x: 98, y: 906} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4979,7 +5048,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 356, y: 614} + m_UIPosition: {x: 345, y: 576} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -5107,7 +5176,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 22, y: 711} + m_UIPosition: {x: 129, y: 576} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/RotationAngle.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/RotationAngle.vfx index 8cdde18f20f..dd7c8be755d 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/RotationAngle.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/RotationAngle.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: 'Angle Value:' position: serializedVersion: 2 - x: -55 - y: 2159 - width: 588 - height: 204 + x: -266 + y: 2085 + width: 803 + height: 271 contents: - model: {fileID: 8926484042661616432} id: 0 @@ -30,13 +30,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616430} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 - title: OUTPUTS position: serializedVersion: 2 - x: 676 - y: 2790 + x: 628 + y: 2885 width: 1012 - height: 566 + height: 591 contents: - model: {fileID: 8926484042661617097} id: 0 @@ -47,10 +50,10 @@ MonoBehaviour: - title: 0-1 position: serializedVersion: 2 - x: 471 - y: 1836 + x: 458 + y: 1691 width: 481 - height: 237 + height: 391 contents: - model: {fileID: 8926484042661617173} id: 0 @@ -58,13 +61,16 @@ MonoBehaviour: - model: {fileID: 8926484042661617175} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 - title: Switch Axis position: serializedVersion: 2 - x: -77 - y: 2407 - width: 973 - height: 315 + x: -190 + y: 2371 + width: 1097 + height: 454 contents: - model: {fileID: 8926484042661617225} id: 0 @@ -75,6 +81,50 @@ MonoBehaviour: - model: {fileID: 8926484042661617237} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 926 + y: 1023 + width: 787 + height: 1593 + contents: + - model: {fileID: 8926484042661615920} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615985} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615925} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616477} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617312} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617186} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616412} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617306} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 stickyNoteInfos: - title: Set Color Custom position: @@ -88,23 +138,25 @@ MonoBehaviour: mode exist, and we cases either use the age over lifetime, the speed, random value or custom ones.\r\n\r\nIn this example, we're using a custom 0-1 value to sample our color gradient.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Rotation & Angle position: serializedVersion: 2 - x: 831 - y: 1086 + x: 962 + y: 1083 width: 665 - height: 101 + height: 115 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Switch Axis position: serializedVersion: 2 - x: -545 - y: 2469 + x: -165 + y: 2561 width: 369 height: 239 contents: "To have each particle rotate on around a different axis, we use a @@ -116,25 +168,27 @@ MonoBehaviour: axis value is then multiplied by an incremental value driven by time. This value is then used to set the \u201CAngle\u201D attribute value of our particles, which is responsible for driving the rotation of our particles.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Angle Value position: serializedVersion: 2 - x: -465 - y: 2221 + x: -241 + y: 2145 width: 369 height: 100 contents: "We're using Time * Value to determine how fast the particle should be rotated around the desired angle. \r\nThe modulo operation makes the value cycle between 0-359\xB0. \r\n" - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Normalized 0-1 spawnIndex position: serializedVersion: 2 - x: 44 - y: 1877 + x: 499 + y: 1750 width: 377 height: 155 contents: 'It''s often useful to have a 0-1 normalized value as it can be used @@ -150,8 +204,9 @@ MonoBehaviour: to control the color of the particle. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Position Sequential Line position: serializedVersion: 2 @@ -163,15 +218,16 @@ MonoBehaviour: line.\r\n\r\nFirst, we define the start and end position of the line.\r\n\r\nThen we set the \u201CCount\u201D that divides the line into X positions. The particleID is used to determine on which position of the line to spawn, from.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -545 - y: 1086 - width: 3846 - height: 2834 + x: -266 + y: 1023 + width: 1979 + height: 2452 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -208,7 +264,7 @@ MonoBehaviour: - {fileID: 8926484042661617039} m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -224,10 +280,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -1280,7 +1332,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661617119} - m_UIPosition: {x: 701, y: 2859} + m_UIPosition: {x: 653, y: 2954} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1310,6 +1362,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661617114} - {fileID: 8926484042661617115} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -1335,7 +1388,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 0 useMaskMap: 0 useNormalMap: 1 useEmissiveMap: 0 @@ -2017,7 +2069,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 496, y: 1895} + m_UIPosition: {x: 483, y: 1909} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2041,7 +2093,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 772, y: 1928} + m_UIPosition: {x: 759, y: 1943} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3604,7 +3656,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -51, y: 2523} + m_UIPosition: {x: 20, y: 2431} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3629,7 +3681,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661617292} - m_UIPosition: {x: 1237, y: 2849} + m_UIPosition: {x: 1189, y: 2944} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3658,6 +3710,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661617281} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -3686,7 +3739,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 0 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleMesh.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleMesh.vfx index 526862f7ae5..670ec2a8144 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleMesh.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleMesh.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Lifetime based on Plane Distance position: serializedVersion: 2 - x: 546 - y: -97 - width: 1174 - height: 390 + x: 723 + y: -254 + width: 1162 + height: 397 contents: - model: {fileID: 8926484042661617120} id: 0 @@ -39,13 +39,16 @@ MonoBehaviour: - model: {fileID: 8926484042661617869} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 - title: Sample Mesh Operator position: serializedVersion: 2 - x: -46 - y: -684 - width: 1041 - height: 569 + x: 39 + y: -794 + width: 960 + height: 531 contents: - model: {fileID: 8926484042661615097} id: 0 @@ -59,19 +62,19 @@ MonoBehaviour: - model: {fileID: 8926484042661614949} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661614971} - id: 0 - isStickyNote: 0 - model: {fileID: 8926484042661614902} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 - title: Distance to Plane position: serializedVersion: 2 - x: 1057 - y: -684 - width: 772 - height: 226 + x: 1029 + y: -773 + width: 785 + height: 322 contents: - model: {fileID: 8926484042661616448} id: 0 @@ -82,13 +85,16 @@ MonoBehaviour: - model: {fileID: 8926484042661617117} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 - title: Dissolve Animation position: serializedVersion: 2 x: -258 - y: 896 - width: 1061 - height: 348 + y: 878 + width: 1065 + height: 363 contents: - model: {fileID: 8926484042661616560} id: 0 @@ -108,13 +114,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616565} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 - title: Wind Force position: serializedVersion: 2 - x: 1119 - y: 372 - width: 603 - height: 372 + x: 1125 + y: 421 + width: 671 + height: 374 contents: - model: {fileID: 8926484042661616522} id: 0 @@ -125,6 +134,9 @@ MonoBehaviour: - model: {fileID: 8926484042661617188} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 - title: Turbulence position: serializedVersion: 2 @@ -148,10 +160,10 @@ MonoBehaviour: - title: Color position: serializedVersion: 2 - x: 673 - y: 1322 - width: 990 - height: 416 + x: 520 + y: 1321 + width: 1142 + height: 398 contents: - model: {fileID: 8926484042661617264} id: 0 @@ -168,6 +180,9 @@ MonoBehaviour: - model: {fileID: 8926484042661617560} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 - title: Size Over Life position: serializedVersion: 2 @@ -191,10 +206,10 @@ MonoBehaviour: - title: Rotate position: serializedVersion: 2 - x: -634 - y: 2382 - width: 2126 - height: 813 + x: -728 + y: 2257 + width: 2191 + height: 809 contents: - model: {fileID: 8926484042661617750} id: 0 @@ -262,14 +277,40 @@ MonoBehaviour: - model: {fileID: 8926484042661617727} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 1631 + y: -1457 + width: 983 + height: 564 + contents: + - model: {fileID: 8926484042661614555} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616455} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 stickyNoteInfos: - title: 'Sample Mesh Operator:' position: serializedVersion: 2 - x: -556 - y: -797 - width: 493 - height: 837 + x: 199 + y: -735 + width: 381 + height: 280 contents: "The sample mesh operator allows you to get the position of triangles, vertices, and edges of the sampled mesh.\r\n\r\nFirst, we reference the mesh we want to sample.\r\nThen we set the placement mode to \u201Csurface,\u201D @@ -280,25 +321,27 @@ MonoBehaviour: be used directly to set the particle's position.\r\n\r\nWe're also getting the color.x component, which contains ambient occlusion values that have been baked into the mesh.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Distance to Plane:' position: serializedVersion: 2 - x: 1055 - y: -787 + x: 1089 + y: -714 width: 336 height: 100 contents: We're using a distance-to-plane operator. This operator computes the distance value from the plane to each particle's position, creating a gradient that will be used to dissolve our particles - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Lifetime:' position: serializedVersion: 2 - x: 241 - y: -91 + x: 782 + y: -35 width: 297 height: 153 contents: 'As we want our mesh to gradually dissolve, we''re adjusting the lifetime @@ -308,72 +351,78 @@ MonoBehaviour: particles closer to the plane will die before those that are further away. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Dissolve Animation:' position: serializedVersion: 2 - x: -525 - y: 925 + x: -222 + y: 937 width: 259 height: 121 contents: With the help of a smoothstep operator, we're creating an animated mask based on the lifetime of our particles. This mask is used to drive the wind strength, turbulence amplitude, and color of our particles. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Wind Force:' position: serializedVersion: 2 - x: 869 - y: 379 + x: 1509 + y: 513 width: 247 height: 100 contents: A strong wind force affects the particles when the dissolve mask is on. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Dissolve Sampled Mesh position: serializedVersion: 2 - x: 1655 - y: -1394 + x: 1656 + y: -1409 width: 932 - height: 100 - contents: type something here - theme: Black + height: 128 + contents: + theme: textSize: Huge + colorTheme: 2 - title: Color position: serializedVersion: 2 - x: 376 - y: 1319 + x: 545 + y: 1564 width: 257 height: 130 contents: "The ambient occlusion of the mesh has been baked into its vertex colors. \r\nThis data has been sampled and stored in a custom particle attribute named \"AO.\u201D\r\nWe use this data to sample a color gradient and set our particle's colors.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Rotate Center Distance position: serializedVersion: 2 - x: -577 - y: 2473 + x: -637 + y: 2342 width: 326 height: 146 contents: "We first calculate the distance from a rotation's center point. This float value will be used to drive the rotation of our particles\u2019 position around this rotation\u2019s center. The closer the particles are to the center, the faster they will rotate." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Rotation Amount position: serializedVersion: 2 - x: 849 - y: 3002 + x: 767 + y: 2882 width: 292 height: 140 contents: "The rotation amount is also modulated by age over lifetime. This allows @@ -381,28 +430,30 @@ MonoBehaviour: is used by multiplying the previously calculated distance to the rotation center. In the end, the rotation amount is modulated by the distance to the rotation center and also by its age over its lifetime." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Rotate 3D position: serializedVersion: 2 - x: 1131 - y: 2691 + x: 1053 + y: 2567 width: 290 height: 129 contents: The Rotate 3D operator allows us to rotate the particle's position around a position. Doing this in the update is practical as we're not interfering with the forces in the update context, but are adding some post-transformation to our particles positions. - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -634 - y: -1394 - width: 3223 - height: 4589 + x: -728 + y: -1469 + width: 3341 + height: 4535 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -424,7 +475,6 @@ MonoBehaviour: - {fileID: 8926484042661614949} - {fileID: 8926484042661614952} - {fileID: 8926484042661614955} - - {fileID: 8926484042661614971} - {fileID: 8926484042661615097} - {fileID: 8926484042661616394} - {fileID: 8926484042661617867} @@ -521,7 +571,7 @@ MonoBehaviour: enumValues: [] descendantCount: 0 m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -537,10 +587,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -564,7 +610,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661616455} - m_UIPosition: {x: 1898, y: -1240} + m_UIPosition: {x: 1899, y: -1243} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -608,7 +654,6 @@ MonoBehaviour: m_UISuperCollapsed: 0 m_InputSlots: - {fileID: 8926484042661614559} - - {fileID: 8926484042661614596} m_OutputSlots: [] m_Label: m_Data: {fileID: 8926484042661614568} @@ -638,7 +683,7 @@ MonoBehaviour: - {fileID: 8926484042661614560} - {fileID: 8926484042661614564} m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 + m_UICollapsed: 0 m_UISuperCollapsed: 0 m_MasterSlot: {fileID: 8926484042661614559} m_MasterData: @@ -647,7 +692,7 @@ MonoBehaviour: m_Type: m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"center":{"x":0.0000883340835571289,"y":0.7851393222808838,"z":-0.012984305620193482},"size":{"x":0.7505642175674439,"y":0.6712563037872315,"z":0.8198959827423096}}' + m_SerializableObject: '{"center":{"x":0.0,"y":1.5,"z":0.0},"size":{"x":4.0,"y":3.0,"z":4.0}}' m_Space: 0 m_Property: name: bounds @@ -955,7 +1000,7 @@ MonoBehaviour: stripCapacity: 16 particlePerStripCount: 16 needsComputeBounds: 0 - boundsMode: 0 + boundsMode: 1 m_Space: 0 --- !u!114 &8926484042661614580 MonoBehaviour: @@ -1006,142 +1051,6 @@ MonoBehaviour: title: m_Owners: - {fileID: 8926484042661614555} ---- !u!114 &8926484042661614596 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: - - {fileID: 8926484042661614597} - - {fileID: 8926484042661614598} - - {fileID: 8926484042661614599} - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614596} - m_MasterData: - m_Owner: {fileID: 8926484042661614558} - m_Value: - m_Type: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"x":0.5,"y":0.5,"z":0.5}' - m_Space: -1 - m_Property: - name: boundsPadding - m_serializedType: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614597 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614596} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614596} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: x - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614598 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614596} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614596} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: y - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614599 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614596} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614596} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: z - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] --- !u!114 &8926484042661614602 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1191,7 +1100,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 611, y: -535} + m_UIPosition: {x: 611, y: -561} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1702,7 +1611,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661614919} m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 0 + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_MasterSlot: {fileID: 8926484042661614918} m_MasterData: @@ -1741,7 +1650,7 @@ MonoBehaviour: - {fileID: 8926484042661614921} - {fileID: 8926484042661614922} m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 0 + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_MasterSlot: {fileID: 8926484042661614918} m_MasterData: @@ -1877,7 +1786,7 @@ MonoBehaviour: - {fileID: 8926484042661614926} - {fileID: 8926484042661614927} m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 + m_UICollapsed: 0 m_UISuperCollapsed: 0 m_MasterSlot: {fileID: 8926484042661614923} m_MasterData: @@ -2078,7 +1987,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -21, y: -625} + m_UIPosition: {x: 64, y: -483} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2173,7 +2082,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 209, y: -585} + m_UIPosition: {x: 239, y: -413} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -2266,7 +2175,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 413, y: -585} + m_UIPosition: {x: 443, y: -413} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -2350,70 +2259,6 @@ MonoBehaviour: m_Direction: 1 m_LinkedSlots: - {fileID: 8926484042661614933} ---- !u!114 &8926484042661614971 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c42128e17c583714a909b4997c80c916, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} - m_Children: [] - m_UIPosition: {x: 381, y: -290} - m_UICollapsed: 0 - m_UISuperCollapsed: 0 - m_InputSlots: - - {fileID: 8926484042661617919} - - {fileID: 8926484042661617920} - m_OutputSlots: - - {fileID: 8926484042661614975} - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - seed: 0 - constant: 0 - independentSeed: 0 ---- !u!114 &8926484042661614975 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614975} - m_MasterData: - m_Owner: {fileID: 8926484042661614971} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 - m_Space: -1 - m_Property: - name: r - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661614987} --- !u!114 &8926484042661614985 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2449,7 +2294,8 @@ MonoBehaviour: m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null m_Direction: 0 - m_LinkedSlots: [] + m_LinkedSlots: + - {fileID: 8926484042661617948} --- !u!114 &8926484042661614986 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2482,8 +2328,7 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661615100} + m_LinkedSlots: [] --- !u!114 &8926484042661614987 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2516,8 +2361,7 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661614975} + m_LinkedSlots: [] --- !u!114 &8926484042661615097 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2533,55 +2377,20 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 381, y: -453} + m_UIPosition: {x: 427, y: -383} m_UICollapsed: 0 - m_UISuperCollapsed: 0 + m_UISuperCollapsed: 1 m_InputSlots: - - {fileID: 8926484042661617921} - - {fileID: 8926484042661617922} + - {fileID: 8926484042661617942} + - {fileID: 8926484042661617945} m_OutputSlots: - - {fileID: 8926484042661615100} + - {fileID: 8926484042661617948} m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 + m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null seed: 0 constant: 0 independentSeed: 0 ---- !u!114 &8926484042661615100 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615100} - m_MasterData: - m_Owner: {fileID: 8926484042661615097} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 - m_Space: -1 - m_Property: - name: r - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661614986} --- !u!114 &8926484042661616245 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2922,7 +2731,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1082, y: -625} + m_UIPosition: {x: 1054, y: -603} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3628,7 +3437,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1488, y: -603} + m_UIPosition: {x: 1485, y: -590} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4874,7 +4683,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1455, y: 579} + m_UIPosition: {x: 1462, y: 629} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4946,7 +4755,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1144, y: 431} + m_UIPosition: {x: 1151, y: 481} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6685,7 +6494,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1664, y: -563} + m_UIPosition: {x: 1659, y: -551} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -6780,7 +6589,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 874, y: -36} + m_UIPosition: {x: 1051, y: -193} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6950,7 +6759,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1378, y: 82} + m_UIPosition: {x: 1555, y: -75} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7049,7 +6858,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1018, y: 148} + m_UIPosition: {x: 1195, y: -9} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7186,7 +6995,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1192, y: 48} + m_UIPosition: {x: 1369, y: -109} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7322,7 +7131,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1540, y: -38} + m_UIPosition: {x: 1717, y: -195} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7459,7 +7268,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1177, y: 549} + m_UIPosition: {x: 1184, y: 599} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9006,6 +8815,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661617489} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -9031,7 +8841,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 0 useMaskMap: 0 useNormalMap: 0 useEmissiveMap: 0 @@ -9406,6 +9215,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661617536} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -9434,7 +9244,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 0 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -9772,7 +9581,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 815, y: 1617} + m_UIPosition: {x: 823, y: 1521} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -10779,7 +10588,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 805, y: 2441} + m_UIPosition: {x: 711, y: 2316} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -10803,7 +10612,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1110, y: 2525} + m_UIPosition: {x: 1016, y: 2400} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -11547,7 +11356,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 805, y: 2595} + m_UIPosition: {x: 711, y: 2470} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -11914,7 +11723,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -285, y: 2683} + m_UIPosition: {x: -379, y: 2558} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -12249,7 +12058,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 827, y: 2809} + m_UIPosition: {x: 733, y: 2684} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -12396,7 +12205,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 625, y: 3067} + m_UIPosition: {x: 531, y: 2942} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -12526,7 +12335,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 527, y: 2933} + m_UIPosition: {x: 433, y: 2808} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -12653,7 +12462,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 277, y: 2953} + m_UIPosition: {x: 183, y: 2828} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -12744,7 +12553,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 27, y: 2743} + m_UIPosition: {x: -67, y: 2618} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -12881,7 +12690,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 185, y: 2741} + m_UIPosition: {x: 91, y: 2616} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -12976,7 +12785,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 353, y: 2741} + m_UIPosition: {x: 259, y: 2616} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13071,7 +12880,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -160, y: 2819} + m_UIPosition: {x: -254, y: 2694} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13240,7 +13049,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -609, y: 2877} + m_UIPosition: {x: -703, y: 2752} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -13296,7 +13105,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -391, y: 2857} + m_UIPosition: {x: -485, y: 2732} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13423,7 +13232,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 565, y: 2719} + m_UIPosition: {x: 471, y: 2594} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13550,7 +13359,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 565, y: 2833} + m_UIPosition: {x: 471, y: 2708} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -13649,7 +13458,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -542, y: 2725} + m_UIPosition: {x: -636, y: 2600} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -13700,7 +13509,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661617823} inputSlot: {fileID: 8926484042661617619} - position: {x: 588.6667, y: 2623.3333} + position: {x: 494.66666, y: 2499.3335} expandedSlots: [] expanded: 0 supecollapsed: 0 @@ -13708,7 +13517,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661617823} inputSlot: {fileID: 8926484042661617644} - position: {x: -523.3333, y: 2665.3333} + position: {x: -617.3333, y: 2541.3335} expandedSlots: [] expanded: 0 supecollapsed: 0 @@ -13899,7 +13708,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -29, y: 3089} + m_UIPosition: {x: -123, y: 2964} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -13955,7 +13764,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 189, y: 3069} + m_UIPosition: {x: 95, y: 2944} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -14082,7 +13891,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 412, y: 3069} + m_UIPosition: {x: 318, y: 2944} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -14804,7 +14613,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 571, y: -30} + m_UIPosition: {x: 748, y: -187} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -15602,7 +15411,7 @@ MonoBehaviour: m_Direction: 0 m_LinkedSlots: - {fileID: 8926484042661614954} ---- !u!114 &8926484042661617919 +--- !u!114 &8926484042661617923 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -15620,9 +15429,9 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617919} + m_MasterSlot: {fileID: 8926484042661617923} m_MasterData: - m_Owner: {fileID: 8926484042661614971} + m_Owner: {fileID: 8926484042661617137} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, @@ -15635,8 +15444,9 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617920 + m_LinkedSlots: + - {fileID: 8926484042661617150} +--- !u!114 &8926484042661617924 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -15654,9 +15464,9 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617920} + m_MasterSlot: {fileID: 8926484042661617924} m_MasterData: - m_Owner: {fileID: 8926484042661614971} + m_Owner: {fileID: 8926484042661617137} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, @@ -15669,9 +15479,10 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617921 -MonoBehaviour: + m_LinkedSlots: + - {fileID: 8926484042661617145} +--- !u!114 &8926484042661617925 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -15688,14 +15499,14 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617921} + m_MasterSlot: {fileID: 8926484042661617925} m_MasterData: - m_Owner: {fileID: 8926484042661615097} + m_Owner: {fileID: 8926484042661617188} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 + m_SerializableObject: 0.2 m_Space: -1 m_Property: name: Min @@ -15704,7 +15515,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617922 +--- !u!114 &8926484042661617926 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -15722,14 +15533,14 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617922} + m_MasterSlot: {fileID: 8926484042661617926} m_MasterData: - m_Owner: {fileID: 8926484042661615097} + m_Owner: {fileID: 8926484042661617188} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 1 + m_SerializableObject: 2 m_Space: -1 m_Property: name: Max @@ -15738,7 +15549,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617923 +--- !u!114 &8926484042661617927 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -15756,14 +15567,14 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617923} + m_MasterSlot: {fileID: 8926484042661617927} m_MasterData: - m_Owner: {fileID: 8926484042661617137} + m_Owner: {fileID: 8926484042661617193} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 + m_SerializableObject: 2.5 m_Space: -1 m_Property: name: Min @@ -15771,9 +15582,8 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661617150} ---- !u!114 &8926484042661617924 + m_LinkedSlots: [] +--- !u!114 &8926484042661617928 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -15791,14 +15601,14 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617924} + m_MasterSlot: {fileID: 8926484042661617928} m_MasterData: - m_Owner: {fileID: 8926484042661617137} + m_Owner: {fileID: 8926484042661617193} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 1 + m_SerializableObject: 10 m_Space: -1 m_Property: name: Max @@ -15806,9 +15616,8 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661617145} ---- !u!114 &8926484042661617925 + m_LinkedSlots: [] +--- !u!114 &8926484042661617929 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -15826,14 +15635,14 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617925} + m_MasterSlot: {fileID: 8926484042661617929} m_MasterData: - m_Owner: {fileID: 8926484042661617188} + m_Owner: {fileID: 8926484042661617305} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0.2 + m_SerializableObject: 0.1 m_Space: -1 m_Property: name: Min @@ -15842,7 +15651,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617926 +--- !u!114 &8926484042661617930 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -15860,14 +15669,14 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617926} + m_MasterSlot: {fileID: 8926484042661617930} m_MasterData: - m_Owner: {fileID: 8926484042661617188} + m_Owner: {fileID: 8926484042661617305} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 2 + m_SerializableObject: 0.2 m_Space: -1 m_Property: name: Max @@ -15876,7 +15685,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617927 +--- !u!114 &8926484042661617931 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -15894,23 +15703,95 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617927} + m_MasterSlot: {fileID: 8926484042661617931} m_MasterData: - m_Owner: {fileID: 8926484042661617193} + m_Owner: {fileID: 8926484042661617869} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 2.5 + m_SerializableObject: 0 m_Space: -1 m_Property: - name: Min + name: Init Distance m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661617123} +--- !u!114 &8926484042661617932 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661617933} + - {fileID: 8926484042661617934} + - {fileID: 8926484042661617935} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617932} + m_MasterData: + m_Owner: {fileID: 8926484042661617591} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' + m_Space: -1 + m_Property: + name: Position + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661617597} +--- !u!114 &8926484042661617933 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617932} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617932} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617928 +--- !u!114 &8926484042661617934 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -15923,28 +15804,27 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 8926484042661617932} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617928} + m_MasterSlot: {fileID: 8926484042661617932} m_MasterData: - m_Owner: {fileID: 8926484042661617193} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 10 + m_SerializableType: + m_SerializableObject: m_Space: -1 m_Property: - name: Max + name: y m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 + m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617929 +--- !u!114 &8926484042661617935 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -15957,28 +15837,27 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 8926484042661617932} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617929} + m_MasterSlot: {fileID: 8926484042661617932} m_MasterData: - m_Owner: {fileID: 8926484042661617305} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0.1 + m_SerializableType: + m_SerializableObject: m_Space: -1 m_Property: - name: Min + name: z m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 + m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617930 +--- !u!114 &8926484042661617936 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -15996,23 +15875,23 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617930} + m_MasterSlot: {fileID: 8926484042661617936} m_MasterData: - m_Owner: {fileID: 8926484042661617305} + m_Owner: {fileID: 8926484042661617809} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0.2 + m_SerializableObject: -6 m_Space: -1 m_Property: - name: Max + name: Min m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617931 +--- !u!114 &8926484042661617937 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -16030,24 +15909,23 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617931} + m_MasterSlot: {fileID: 8926484042661617937} m_MasterData: - m_Owner: {fileID: 8926484042661617869} + m_Owner: {fileID: 8926484042661617809} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 + m_SerializableObject: 6 m_Space: -1 m_Property: - name: Init Distance + name: Max m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661617123} ---- !u!114 &8926484042661617932 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617938 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -16062,15 +15940,15 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: - - {fileID: 8926484042661617933} - - {fileID: 8926484042661617934} - - {fileID: 8926484042661617935} + - {fileID: 8926484042661617939} + - {fileID: 8926484042661617940} + - {fileID: 8926484042661617941} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617932} + m_MasterSlot: {fileID: 8926484042661617938} m_MasterData: - m_Owner: {fileID: 8926484042661617591} + m_Owner: {fileID: 8926484042661617817} m_Value: m_Type: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, @@ -16084,8 +15962,8 @@ MonoBehaviour: Culture=neutral, PublicKeyToken=null m_Direction: 1 m_LinkedSlots: - - {fileID: 8926484042661617597} ---- !u!114 &8926484042661617933 + - {fileID: 8926484042661617648} +--- !u!114 &8926484042661617939 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -16098,12 +15976,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617932} + m_Parent: {fileID: 8926484042661617938} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617932} + m_MasterSlot: {fileID: 8926484042661617938} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -16118,7 +15996,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617934 +--- !u!114 &8926484042661617940 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -16131,12 +16009,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617932} + m_Parent: {fileID: 8926484042661617938} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617932} + m_MasterSlot: {fileID: 8926484042661617938} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -16151,7 +16029,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617935 +--- !u!114 &8926484042661617941 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -16164,12 +16042,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617932} + m_Parent: {fileID: 8926484042661617938} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617932} + m_MasterSlot: {fileID: 8926484042661617938} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -16184,7 +16062,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617936 +--- !u!114 &8926484042661617942 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -16193,32 +16071,67 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Script: {fileID: 11500000, guid: 1b2b751071c7fc14f9fa503163991826, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat2 m_UIIgnoredErrors: [] m_Parent: {fileID: 0} - m_Children: [] + m_Children: + - {fileID: 8926484042661617943} + - {fileID: 8926484042661617944} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617936} + m_MasterSlot: {fileID: 8926484042661617942} m_MasterData: - m_Owner: {fileID: 8926484042661617809} + m_Owner: {fileID: 8926484042661615097} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: -6 + m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":0.0,"y":0.0}' m_Space: -1 m_Property: name: Min + m_serializedType: + m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617943 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617942} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617942} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: x m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617937 +--- !u!114 &8926484042661617944 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -16229,30 +16142,29 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 8926484042661617942} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617937} + m_MasterSlot: {fileID: 8926484042661617942} m_MasterData: - m_Owner: {fileID: 8926484042661617809} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 6 + m_SerializableType: + m_SerializableObject: m_Space: -1 m_Property: - name: Max + name: y m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617938 +--- !u!114 &8926484042661617945 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -16261,36 +16173,34 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Script: {fileID: 11500000, guid: 1b2b751071c7fc14f9fa503163991826, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat2 m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: - - {fileID: 8926484042661617939} - - {fileID: 8926484042661617940} - - {fileID: 8926484042661617941} + - {fileID: 8926484042661617946} + - {fileID: 8926484042661617947} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617938} + m_MasterSlot: {fileID: 8926484042661617945} m_MasterData: - m_Owner: {fileID: 8926484042661617817} + m_Owner: {fileID: 8926484042661615097} m_Value: m_Type: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' + m_SerializableObject: '{"x":1.0,"y":1.0}' m_Space: -1 m_Property: - name: Position + name: Max m_serializedType: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661617648} ---- !u!114 &8926484042661617939 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617946 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -16301,14 +16211,14 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617938} + m_Parent: {fileID: 8926484042661617945} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617938} + m_MasterSlot: {fileID: 8926484042661617945} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -16321,9 +16231,9 @@ MonoBehaviour: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 + m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617940 +--- !u!114 &8926484042661617947 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -16334,14 +16244,14 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617938} + m_Parent: {fileID: 8926484042661617945} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617938} + m_MasterSlot: {fileID: 8926484042661617945} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -16354,9 +16264,79 @@ MonoBehaviour: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617948 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1b2b751071c7fc14f9fa503163991826, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat2 + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661617949} + - {fileID: 8926484042661617950} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617948} + m_MasterData: + m_Owner: {fileID: 8926484042661615097} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: + m_Space: -1 + m_Property: + name: r + m_serializedType: + m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661614985} +--- !u!114 &8926484042661617949 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617948} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617948} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617941 +--- !u!114 &8926484042661617950 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -16367,14 +16347,14 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617938} + m_Parent: {fileID: 8926484042661617948} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617938} + m_MasterSlot: {fileID: 8926484042661617948} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -16383,7 +16363,7 @@ MonoBehaviour: m_SerializableObject: m_Space: -1 m_Property: - name: z + name: y m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleSDF.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleSDF.vfx index 0dc9f62d98c..c2b997a62cb 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleSDF.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleSDF.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Push position: serializedVersion: 2 - x: 357 - y: 427 - width: 562 - height: 231 + x: 117 + y: 403 + width: 816 + height: 249 contents: - model: {fileID: 8926484042661614687} id: 0 @@ -27,13 +27,16 @@ MonoBehaviour: - model: {fileID: 8926484042661614692} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 - title: Sample SDF position: serializedVersion: 2 - x: 157 - y: 1297 - width: 694 - height: 330 + x: -40 + y: 1343 + width: 748 + height: 679 contents: - model: {fileID: 8926484042661614856} id: 0 @@ -44,13 +47,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615356} id: 1 isStickyNote: 0 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 - title: Orient position: serializedVersion: 2 - x: 1733 - y: 2844 - width: 289 - height: 180 + x: 1576 + y: 2818 + width: 451 + height: 210 contents: - model: {fileID: 8926484042661614922} id: 0 @@ -58,13 +64,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615021} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 - title: Random perStrip position: serializedVersion: 2 - x: 1769 - y: 3050 - width: 243 - height: 392 + x: 1517 + y: 3045 + width: 505 + height: 393 contents: - model: {fileID: 8926484042661615000} id: 0 @@ -72,12 +81,122 @@ MonoBehaviour: - model: {fileID: 8926484042661615009} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 733 + y: 654 + width: 1214 + height: 1142 + contents: + - model: {fileID: 8926484042661614583} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614792} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614704} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615106} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615014} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615396} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614991} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615356} + id: 2 + isStickyNote: 0 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 12 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 2222 + y: 1337 + width: 695 + height: 333 + contents: + - model: {fileID: 8926484042661614817} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 11 + isStickyNote: 1 + - model: {fileID: 0} + id: 13 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 752 + y: -554 + width: 829 + height: 397 + contents: + - model: {fileID: 8926484042661614555} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614556} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 10 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 1947 + y: 1697 + width: 796 + height: 819 + contents: + - model: {fileID: 8926484042661614820} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614836} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614911} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614882} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614849} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - model: {fileID: 8926484042661614838} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 stickyNoteInfos: - title: 'Push Positon:' position: serializedVersion: 2 - x: 123 - y: 423 + x: 143 + y: 463 width: 228 height: 164 contents: 'Sometimes, particles can be too close to the SDF surface, making them @@ -88,26 +207,28 @@ MonoBehaviour: direction attribute is calculated by the position (SDF) block. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: SDF Bounds SIZE position: serializedVersion: 2 - x: 528 - y: 225 + x: 515 + y: 271 width: 225 height: 100 contents: To get a proper SDF transform, don't forget to store the bounds, scale, and position values given by your SDF baking tool. - theme: Black + theme: textSize: Small + colorTheme: 3 - title: 'Position SDF:' position: serializedVersion: 2 - x: 1401 - y: 169 - width: 402 - height: 255 + x: 1383 + y: 257 + width: 295 + height: 115 contents: 'The Position SDF block allows you to position particles randomly on an SDF surface or volume. @@ -115,36 +236,39 @@ MonoBehaviour: of the provided SDF. ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: Turbulence Noise position: serializedVersion: 2 - x: 1393 - y: 903 + x: 1390 + y: 927 width: 194 height: 100 contents: This node adds a curl noise force, making particles move in random directions. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Conform SDF position: serializedVersion: 2 - x: 1372 - y: 1045 + x: 1369 + y: 1069 width: 552 height: 203 contents: While the turbulence block is creating organic motion by moving particles, this block creates forces to attract particles and make them stick to the SDF surface - theme: Black + theme: textSize: Medium + colorTheme: 3 - title: Sample SDF:Direction/Gradient position: serializedVersion: 2 - x: 169 - y: 1639 + x: -15 + y: 1686 width: 693 height: 311 contents: 'We need to know the gradient, or normal, of the SDF at the current @@ -160,24 +284,26 @@ MonoBehaviour: attribute. ' - theme: Black + theme: textSize: Medium + colorTheme: 3 - title: 'Inherit Attributes:' position: serializedVersion: 2 - x: 2043 - y: 2007 + x: 2020 + y: 2027 width: 256 height: 114 contents: "We are inheriting the parent's position to spawn our particles.\n\r\nVelocity and direction attributes are used to \u201Corient\u201D the child particles.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Velocity Integration position: serializedVersion: 2 - x: 1979 - y: 2317 + x: 1972 + y: 2312 width: 306 height: 171 contents: "The Velocity integration has been \u201Cturned off\u201D in the inspector @@ -186,13 +312,14 @@ MonoBehaviour: by the update context to update the position.\r\n\r\nIf you select the update context, in the inspector, you'll see that the \u201Cupdate position\u201D has been turned off.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Orient:' position: serializedVersion: 2 - x: 1489 - y: 2867 + x: 1601 + y: 2877 width: 233 height: 125 contents: 'The orientation is done thanks to the particle''s parent velocity @@ -204,46 +331,50 @@ MonoBehaviour: the direction is the facing vector. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Random per Strip position: serializedVersion: 2 - x: 1491 - y: 3077 + x: 1543 + y: 3113 width: 283 height: 104 contents: "We used the \u201Cper particle strip\u201D seed option in the random operator to get a random value per strip instead of a random value per particle." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Sample SDF Parent position: serializedVersion: 2 x: 777 - y: -492 + y: -509 width: 778 - height: 100 - contents: type something here - theme: Black + height: 113 + contents: + theme: textSize: Huge + colorTheme: 2 - title: Child Trails position: serializedVersion: 2 - x: 2252 - y: 1347 - width: 507 - height: 100 - contents: type something here - theme: Black + x: 2247 + y: 1396 + width: 444 + height: 101 + contents: + theme: textSize: Huge + colorTheme: 2 - title: Trigger Event position: serializedVersion: 2 - x: 1163 - y: 1619 + x: 1084 + y: 1635 width: 262 - height: 119 + height: 135 contents: 'The trigger event allows you to trigger events. Those events can be used to spawn new particles. @@ -253,25 +384,27 @@ MonoBehaviour: distance, over time, collision, etc. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: GPU Event position: serializedVersion: 2 - x: 2724 - y: 1499 + x: 2725 + y: 1522 width: 166 height: 100 contents: The GPU event can be used to spawn new particles. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Create an SDF position: serializedVersion: 2 - x: -25 - y: -303 + x: 104 + y: -153 width: 476 - height: 289 + height: 334 contents: 'VFX Graph provides an SDF baker tool that allows you to bake an SDF representation of your mesh inside Unity. @@ -283,15 +416,16 @@ MonoBehaviour: Window>Visual Effects>Utilities>SDF Bake Tool ' - theme: Black + theme: textSize: Medium + colorTheme: 3 categories: [] uiBounds: serializedVersion: 2 - x: -25 - y: -492 - width: 3044 - height: 3935 + x: -40 + y: -569 + width: 3059 + height: 4007 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -332,7 +466,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -348,10 +482,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -375,7 +505,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661614556} - m_UIPosition: {x: 941, y: -394} + m_UIPosition: {x: 941, y: -397} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -936,7 +1066,7 @@ MonoBehaviour: - {fileID: 8926484042661615106} - {fileID: 8926484042661615014} - {fileID: 8926484042661615396} - m_UIPosition: {x: 941, y: 688} + m_UIPosition: {x: 938, y: 713} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2871,7 +3001,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2292, y: 1433} + m_UIPosition: {x: 2287, y: 1484} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3389,7 +3519,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2292, y: 2309} + m_UIPosition: {x: 2291, y: 2338} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3488,7 +3618,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 449, y: 1367} + m_UIPosition: {x: 271, y: 1414} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4489,7 +4619,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1764, y: 2969} + m_UIPosition: {x: 1840, y: 2953} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -4513,7 +4643,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 183, y: 1487} + m_UIPosition: {x: 5, y: 1534} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4537,7 +4667,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 761, y: 839} + m_UIPosition: {x: 758, y: 863} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4804,7 +4934,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1798, y: 3109} + m_UIPosition: {x: 1819, y: 3104} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4904,7 +5034,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1794, y: 3263} + m_UIPosition: {x: 1815, y: 3258} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -5066,7 +5196,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1758, y: 2903} + m_UIPosition: {x: 1834, y: 2887} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -5213,6 +5343,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615254} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -5338,7 +5469,6 @@ MonoBehaviour: - 2 - 1 renderQueue: -1 - useBaseColorMap: 3 useMaskMap: 0 useNormalMap: 0 useEmissiveMap: 0 @@ -5969,6 +6099,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615332} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -5997,7 +6128,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 3 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -6911,7 +7041,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661615357} inputSlot: {fileID: 8926484042661615372} - position: {x: 754.6667, y: 218.66667} + position: {x: 742, y: 265.3333} expandedSlots: - {fileID: 8926484042661615357} expanded: 1 @@ -6920,7 +7050,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661615357} inputSlot: {fileID: 8926484042661614858} - position: {x: 232.66667, y: 1355.3334} + position: {x: 54, y: 1402.6666} expandedSlots: [] expanded: 1 supecollapsed: 0 @@ -6928,7 +7058,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661615357} inputSlot: {fileID: 8926484042661614706} - position: {x: 761.3333, y: 1092} + position: {x: 758, y: 1117.3333} expandedSlots: [] expanded: 0 supecollapsed: 0 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleSkinnedMesh.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleSkinnedMesh.vfx index 55d47efd7b9..7f37e7c8f4c 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleSkinnedMesh.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleSkinnedMesh.vfx @@ -16,27 +16,30 @@ MonoBehaviour: - title: Mesh Coordinates position: serializedVersion: 2 - x: 696 - y: 182 - width: 227 - height: 178 + x: 101 + y: 217 + width: 809 + height: 334 contents: - - model: {fileID: 8926484042661614633} + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 8926484042661617213} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661615627} - id: 0 + - model: {fileID: 8926484042661614627} + id: 3 isStickyNote: 0 - - model: {fileID: 8926484042661615632} + - model: {fileID: 8926484042661617227} id: 0 isStickyNote: 0 - title: Skinned Mesh position: serializedVersion: 2 - x: 614 - y: 467 - width: 319 - height: 275 + x: 405 + y: 546 + width: 507 + height: 230 contents: - model: {fileID: 8926484042661617163} id: 0 @@ -44,13 +47,16 @@ MonoBehaviour: - model: {fileID: 8926484042661614627} id: 2 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 - title: Position Noise based Size & Color position: serializedVersion: 2 - x: -64 - y: 762 - width: 961 - height: 312 + x: -54 + y: 781 + width: 962 + height: 325 contents: - model: {fileID: 8926484042661616212} id: 0 @@ -67,13 +73,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616220} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 - title: Sample Skinned Mesh position: serializedVersion: 2 - x: -137 - y: 1141 - width: 1031 - height: 255 + x: -459 + y: 1119 + width: 1383 + height: 254 contents: - model: {fileID: 8926484042661614674} id: 0 @@ -90,13 +99,16 @@ MonoBehaviour: - model: {fileID: 8926484042661617153} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 - title: Noise Direction position: serializedVersion: 2 - x: 264 - y: 1423 - width: 655 - height: 199 + x: 24 + y: 1439 + width: 881 + height: 217 contents: - model: {fileID: 8926484042661616326} id: 0 @@ -104,49 +116,103 @@ MonoBehaviour: - model: {fileID: 8926484042661617104} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 936 + y: -267 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661614555} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - title: Blend Direction + position: + serializedVersion: 2 + x: 291 + y: 1675 + width: 599 + height: 343 + contents: + - model: {fileID: 8926484042661617158} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614627} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661616347} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - title: update + position: + serializedVersion: 2 + x: 916 + y: 1439 + width: 841 + height: 591 + contents: + - model: {fileID: 8926484042661617028} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 stickyNoteInfos: - title: Sample Skinned Mesh position: serializedVersion: 2 x: 756 - y: -393 + y: -421 width: 876 - height: 100 - contents: type something here - theme: Black + height: 136 + contents: + theme: textSize: Huge + colorTheme: 2 - title: Skinned Mesh Coordinates position: serializedVersion: 2 - x: -152 - y: -35 - width: 802 - height: 370 + x: 241 + y: 339 + width: 318 + height: 186 contents: "To sample a mesh or a skinned mesh surface, we usually need \u201Ccoordinates\u201D: a triangle index and XY coordinates to know where to spawn on the desired triangle.\r\n\r\nWe want our particles to stick to the skinned mesh surface, and those coordinates' information will be needed at different stages of the simulation. \n\nWe're creating the needed coordinates and storing them in a custom Vector3 attribute.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Skinned Mesh:' position: serializedVersion: 2 - x: 1371 - y: 462 - width: 680 - height: 266 + x: 431 + y: 605 + width: 243 + height: 145 contents: "We're using the \u201Cset position on skinned mesh\u201D block.\r\nWe're inputting a skinned mesh property to be able to reference a skinned mesh from the scene. \n\nTo know where to spawn on the mesh, we're using the previously created coordinates.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: Position Noise based Size & Color position: serializedVersion: 2 - x: -469 - y: 764 + x: -29 + y: 841 width: 403 height: 144 contents: 'We''re using the current particle position to sample Perlin noise. @@ -162,39 +228,42 @@ MonoBehaviour: values, which often look more organic and natural than pure random. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Sample Skinned Mesh position: serializedVersion: 2 - x: -929 - y: 1150 - width: 712 - height: 316 + x: -434 + y: 1178 + width: 455 + height: 169 contents: "We're using the previously stored coordinates to sample the skinned mesh with the sample skinned mesh operator. \r\n\r\nThis allows us to get the UV coordinates. With the UV from the skinned mesh, we can sample its textures.\r\nThe alpha channel of its texture is then used to kill particles with an alpha value lower than 0.1.\r\nThis method is usually called \u201Crejection sampling.\u201D\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: Noise Direction position: serializedVersion: 2 - x: 13 - y: 1429 + x: 49 + y: 1499 width: 247 height: 132 contents: "The \u201Cset position\u201D block is getting the direction from the skinned mesh normals.\r\nWe want to use those normals to orient our feathers.\r\nTo give some fake bouncy motion, we're adding noise to the direction attribute.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Blend Direction position: serializedVersion: 2 - x: 377 - y: 1660 + x: 316 + y: 1825 width: 273 height: 148 contents: 'We''re randomizing the blend value between the correct skinned mesh @@ -204,30 +273,32 @@ MonoBehaviour: This adds some fake secondary motion to give more life to the feathers, so they don''t look too static or stiff.' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Stick Skinned Mesh position: serializedVersion: 2 - x: 1364 - y: 1579 - width: 755 - height: 351 + x: 1370 + y: 1722 + width: 361 + height: 183 contents: "By using a \u201Cset position skinned mesh\u201D block in the Update Context, we're able to make our particles stick to the geometry.\n\r\nAs we're using from frame to frame the same coordinates that we stored previously in the initialize context, we can be sure that each particle will sample the same triangle from frame to frame.\n\r\nIf you enter play mode, you should see the creature moving and the feather sticking to its surface.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 categories: [] uiBounds: serializedVersion: 2 - x: -929 - y: -393 - width: 3048 - height: 3288 + x: -459 + y: -481 + width: 2216 + height: 3407 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -246,14 +317,11 @@ MonoBehaviour: - {fileID: 8926484042661614555} - {fileID: 8926484042661614558} - {fileID: 8926484042661614627} - - {fileID: 8926484042661614633} - {fileID: 8926484042661614674} - {fileID: 8926484042661614881} - {fileID: 8926484042661616207} - {fileID: 8926484042661615164} - {fileID: 8926484042661615183} - - {fileID: 8926484042661615627} - - {fileID: 8926484042661615632} - {fileID: 8926484042661617153} - {fileID: 8926484042661617158} - {fileID: 8926484042661616212} @@ -267,6 +335,8 @@ MonoBehaviour: - {fileID: 8926484042661616954} - {fileID: 8926484042661617028} - {fileID: 8926484042661617104} + - {fileID: 8926484042661617213} + - {fileID: 8926484042661617227} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 @@ -291,7 +361,7 @@ MonoBehaviour: enumValues: [] descendantCount: 0 m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -307,10 +377,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 1 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -788,26 +854,34 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661614628} inputSlot: {fileID: 8926484042661617042} - position: {x: 651.3333, y: 1819.3334} + position: {x: 654.6667, y: 1905.3333} expandedSlots: [] expanded: 0 - supecollapsed: 0 + supecollapsed: 1 - m_Id: 1 linkedSlots: - outputSlot: {fileID: 8926484042661614628} inputSlot: {fileID: 8926484042661614675} - position: {x: -65.333336, y: 1199.3334} + position: {x: 43.333332, y: 1180} expandedSlots: [] expanded: 0 - supecollapsed: 0 + supecollapsed: 1 - m_Id: 2 linkedSlots: - outputSlot: {fileID: 8926484042661614628} inputSlot: {fileID: 8926484042661616272} - position: {x: 692, y: 526} + position: {x: 676.6667, y: 612.6667} expandedSlots: [] expanded: 0 - supecollapsed: 0 + supecollapsed: 1 + - m_Id: 3 + linkedSlots: + - outputSlot: {fileID: 8926484042661614628} + inputSlot: {fileID: 8926484042661617228} + position: {x: 126, y: 276} + expandedSlots: [] + expanded: 1 + supecollapsed: 1 --- !u!114 &8926484042661614628 MonoBehaviour: m_ObjectHideFlags: 0 @@ -845,105 +919,7 @@ MonoBehaviour: - {fileID: 8926484042661614675} - {fileID: 8926484042661617042} - {fileID: 8926484042661616272} ---- !u!114 &8926484042661614633 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c42128e17c583714a909b4997c80c916, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} - m_Children: [] - m_UIPosition: {x: 721, y: 241} - m_UICollapsed: 0 - m_UISuperCollapsed: 1 - m_InputSlots: - - {fileID: 8926484042661617181} - - {fileID: 8926484042661617182} - - {fileID: 8926484042661614636} - m_OutputSlots: - - {fileID: 8926484042661614637} - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - seed: 0 - constant: 1 - independentSeed: 0 ---- !u!114 &8926484042661614636 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614636} - m_MasterData: - m_Owner: {fileID: 8926484042661614633} - m_Value: - m_Type: - m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 - m_Space: -1 - m_Property: - name: seed - m_serializedType: - m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614637 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614637} - m_MasterData: - m_Owner: {fileID: 8926484042661614633} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 - m_Space: -1 - m_Property: - name: r - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661617143} + - {fileID: 8926484042661617228} --- !u!114 &8926484042661614674 MonoBehaviour: m_ObjectHideFlags: 0 @@ -959,7 +935,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 173, y: 1209} + m_UIPosition: {x: 271, y: 1188} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -1948,7 +1924,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 570, y: 1251} + m_UIPosition: {x: 643, y: 1230} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -2314,7 +2290,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 763, y: 1251} + m_UIPosition: {x: 800, y: 1230} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -2445,7 +2421,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 243, y: 1019} + m_UIPosition: {x: 315, y: 1040} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -3007,7 +2983,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661615627 +--- !u!114 &8926484042661615804 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3016,28 +2992,25 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c42128e17c583714a909b4997c80c916, type: 3} + m_Script: {fileID: 11500000, guid: 5e382412bb691334bb79457a6c127924, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} + m_Parent: {fileID: 8926484042661614555} m_Children: [] - m_UIPosition: {x: 721, y: 275} + m_UIPosition: {x: 0, y: 0} m_UICollapsed: 0 - m_UISuperCollapsed: 1 + m_UISuperCollapsed: 0 m_InputSlots: - - {fileID: 8926484042661617187} - - {fileID: 8926484042661617188} - - {fileID: 8926484042661615630} - m_OutputSlots: - - {fileID: 8926484042661615631} - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - seed: 0 - constant: 1 - independentSeed: 0 ---- !u!114 &8926484042661615630 + - {fileID: 8926484042661615805} + - {fileID: 8926484042661615806} + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661615807} + repeat: 0 + spawnMode: 0 + delayMode: 0 +--- !u!114 &8926484042661615805 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3046,7 +3019,7 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] @@ -3055,23 +3028,23 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615630} + m_MasterSlot: {fileID: 8926484042661615805} m_MasterData: - m_Owner: {fileID: 8926484042661615627} + m_Owner: {fileID: 8926484042661615804} m_Value: m_Type: - m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 221 + m_SerializableObject: 45000 m_Space: -1 m_Property: - name: seed + name: Count m_serializedType: - m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661615631 +--- !u!114 &8926484042661615806 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3089,9 +3062,9 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615631} + m_MasterSlot: {fileID: 8926484042661615806} m_MasterData: - m_Owner: {fileID: 8926484042661615627} + m_Owner: {fileID: 8926484042661615804} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, @@ -3099,14 +3072,13 @@ MonoBehaviour: m_SerializableObject: 0 m_Space: -1 m_Property: - name: r + name: Delay m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661617144} ---- !u!114 &8926484042661615632 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661615807 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3115,28 +3087,79 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c42128e17c583714a909b4997c80c916, type: 3} + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661615807} + m_MasterData: + m_Owner: {fileID: 8926484042661615804} + m_Value: + m_Type: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: True + m_Space: -1 + m_Property: + name: _vfx_enabled + m_serializedType: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661616207 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 486e063e1ed58c843942ea4122829ab1, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 721, y: 305} + m_UIPosition: {x: 421, y: 2836} m_UICollapsed: 0 m_UISuperCollapsed: 1 + m_InputSlots: [] + m_OutputSlots: + - {fileID: 8926484042661617183} + attribute: direction + location: 0 + mask: xyz +--- !u!114 &8926484042661616212 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a07d13b909432284193a1aeec3c9f533, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: 651, y: 985} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 m_InputSlots: - - {fileID: 8926484042661617189} - - {fileID: 8926484042661617190} - - {fileID: 8926484042661615635} + - {fileID: 8926484042661616213} + - {fileID: 8926484042661616214} m_OutputSlots: - - {fileID: 8926484042661615636} - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - seed: 0 - constant: 1 - independentSeed: 0 ---- !u!114 &8926484042661615635 + - {fileID: 8926484042661616215} +--- !u!114 &8926484042661616213 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3145,7 +3168,7 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} + m_Script: {fileID: 11500000, guid: 76f778ff57c4e8145b9681fe3268d8e9, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] @@ -3154,23 +3177,23 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615635} + m_MasterSlot: {fileID: 8926484042661616213} m_MasterData: - m_Owner: {fileID: 8926484042661615632} + m_Owner: {fileID: 8926484042661616212} m_Value: m_Type: - m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 899 + m_SerializableType: UnityEngine.Gradient, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"colorKeys":[{"color":{"r":0.9245283007621765,"g":0.09303422272205353,"b":0.31746387481689455,"a":1.0},"time":0.45000380277633669},{"color":{"r":0.10736317932605744,"g":0.29550617933273318,"b":0.7264150977134705,"a":1.0},"time":0.6029449701309204}],"alphaKeys":[{"alpha":1.0,"time":0.0},{"alpha":1.0,"time":1.0}],"gradientMode":0}' m_Space: -1 m_Property: - name: seed + name: gradient m_serializedType: - m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 + m_SerializableType: UnityEngine.Gradient, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661615636 +--- !u!114 &8926484042661616214 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3188,254 +3211,9 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615636} + m_MasterSlot: {fileID: 8926484042661616214} m_MasterData: - m_Owner: {fileID: 8926484042661615632} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 - m_Space: -1 - m_Property: - name: r - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661617145} ---- !u!114 &8926484042661615804 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5e382412bb691334bb79457a6c127924, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614555} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 0 - m_UISuperCollapsed: 0 - m_InputSlots: - - {fileID: 8926484042661615805} - - {fileID: 8926484042661615806} - m_OutputSlots: [] - m_Disabled: 0 - m_ActivationSlot: {fileID: 8926484042661615807} - repeat: 0 - spawnMode: 0 - delayMode: 0 ---- !u!114 &8926484042661615805 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615805} - m_MasterData: - m_Owner: {fileID: 8926484042661615804} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 45000 - m_Space: -1 - m_Property: - name: Count - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661615806 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615806} - m_MasterData: - m_Owner: {fileID: 8926484042661615804} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 - m_Space: -1 - m_Property: - name: Delay - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661615807 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615807} - m_MasterData: - m_Owner: {fileID: 8926484042661615804} - m_Value: - m_Type: - m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: True - m_Space: -1 - m_Property: - name: _vfx_enabled - m_serializedType: - m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661616207 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 486e063e1ed58c843942ea4122829ab1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} - m_Children: [] - m_UIPosition: {x: 421, y: 2836} - m_UICollapsed: 0 - m_UISuperCollapsed: 1 - m_InputSlots: [] - m_OutputSlots: - - {fileID: 8926484042661617183} - attribute: direction - location: 0 - mask: xyz ---- !u!114 &8926484042661616212 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a07d13b909432284193a1aeec3c9f533, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} - m_Children: [] - m_UIPosition: {x: 631, y: 949} - m_UICollapsed: 0 - m_UISuperCollapsed: 0 - m_InputSlots: - - {fileID: 8926484042661616213} - - {fileID: 8926484042661616214} - m_OutputSlots: - - {fileID: 8926484042661616215} ---- !u!114 &8926484042661616213 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 76f778ff57c4e8145b9681fe3268d8e9, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661616213} - m_MasterData: - m_Owner: {fileID: 8926484042661616212} - m_Value: - m_Type: - m_SerializableType: UnityEngine.Gradient, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"colorKeys":[{"color":{"r":0.9245283007621765,"g":0.09303422272205353,"b":0.31746387481689455,"a":1.0},"time":0.45000380277633669},{"color":{"r":0.10736317932605744,"g":0.29550617933273318,"b":0.7264150977134705,"a":1.0},"time":0.6029449701309204}],"alphaKeys":[{"alpha":1.0,"time":0.0},{"alpha":1.0,"time":1.0}],"gradientMode":0}' - m_Space: -1 - m_Property: - name: gradient - m_serializedType: - m_SerializableType: UnityEngine.Gradient, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661616214 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661616214} - m_MasterData: - m_Owner: {fileID: 8926484042661616212} + m_Owner: {fileID: 8926484042661616212} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, @@ -3636,7 +3414,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 717, y: 821} + m_UIPosition: {x: 737, y: 857} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3985,7 +3763,7 @@ MonoBehaviour: - {fileID: 8926484042661616275} - {fileID: 8926484042661616276} m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 0 + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_MasterSlot: {fileID: 8926484042661616274} m_MasterData: @@ -4562,7 +4340,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -39, y: 1019} + m_UIPosition: {x: 33, y: 1040} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -4586,7 +4364,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 543, y: 1517} + m_UIPosition: {x: 499, y: 1539} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -5162,7 +4940,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 686, y: 1654} + m_UIPosition: {x: 644, y: 1734} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -5202,7 +4980,7 @@ MonoBehaviour: m_Type: m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 + m_SerializableObject: 132 m_Space: -1 m_Property: name: seed @@ -5261,7 +5039,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 493, y: 829} + m_UIPosition: {x: 513, y: 865} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -5423,6 +5201,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616656} + useBaseColorMap: 2 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -5448,7 +5227,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 2 useMaskMap: 0 useNormalMap: 1 useEmissiveMap: 0 @@ -6266,6 +6044,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616959} + useBaseColorMap: 2 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -6294,7 +6073,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 2 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -7073,7 +6851,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661617094} - {fileID: 8926484042661617040} - m_UIPosition: {x: 936, y: 1419} + m_UIPosition: {x: 941, y: 1498} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -7110,7 +6888,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661617028} m_Children: [] - m_UIPosition: {x: 0, y: 155} + m_UIPosition: {x: 0, y: 77} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7158,7 +6936,7 @@ MonoBehaviour: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0.79 + m_SerializableObject: 0.27 m_Space: -1 m_Property: name: blendDirection @@ -8019,8 +7797,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 289, y: 1481} - m_UICollapsed: 0 + m_UIPosition: {x: 303, y: 1543} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] m_OutputSlots: @@ -8374,7 +8152,8 @@ MonoBehaviour: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null m_Direction: 0 - m_LinkedSlots: [] + m_LinkedSlots: + - {fileID: 8926484042661617223} --- !u!114 &8926484042661617143 MonoBehaviour: m_ObjectHideFlags: 0 @@ -8407,8 +8186,7 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661614637} + m_LinkedSlots: [] --- !u!114 &8926484042661617144 MonoBehaviour: m_ObjectHideFlags: 0 @@ -8441,8 +8219,7 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661615631} + m_LinkedSlots: [] --- !u!114 &8926484042661617145 MonoBehaviour: m_ObjectHideFlags: 0 @@ -8475,8 +8252,7 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661615636} + m_LinkedSlots: [] --- !u!114 &8926484042661617146 MonoBehaviour: m_ObjectHideFlags: 0 @@ -8733,9 +8509,9 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -112, y: 1251} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 + m_UIPosition: {x: 43, y: 1270} + m_UICollapsed: 0 + m_UISuperCollapsed: 1 m_InputSlots: [] m_OutputSlots: - {fileID: 8926484042661617191} @@ -8757,7 +8533,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 615, y: 1871} + m_UIPosition: {x: 656, y: 1963} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -8781,7 +8557,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 639, y: 687} + m_UIPosition: {x: 668, y: 679} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -9233,74 +9009,6 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617181 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617181} - m_MasterData: - m_Owner: {fileID: 8926484042661614633} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 - m_Space: -1 - m_Property: - name: Min - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617182 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617182} - m_MasterData: - m_Owner: {fileID: 8926484042661614633} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 16000 - m_Space: -1 - m_Property: - name: Max - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] --- !u!114 &8926484042661617183 MonoBehaviour: m_ObjectHideFlags: 0 @@ -9439,142 +9147,6 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617187 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617187} - m_MasterData: - m_Owner: {fileID: 8926484042661615627} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 - m_Space: -1 - m_Property: - name: Min - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617188 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617188} - m_MasterData: - m_Owner: {fileID: 8926484042661615627} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 1 - m_Space: -1 - m_Property: - name: Max - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617189 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617189} - m_MasterData: - m_Owner: {fileID: 8926484042661615632} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 - m_Space: -1 - m_Property: - name: Min - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617190 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617190} - m_MasterData: - m_Owner: {fileID: 8926484042661615632} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 1 - m_Space: -1 - m_Property: - name: Max - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] --- !u!114 &8926484042661617191 MonoBehaviour: m_ObjectHideFlags: 0 @@ -10334,3 +9906,570 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] +--- !u!114 &8926484042661617213 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c42128e17c583714a909b4997c80c916, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.Operator.Random + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: 592, y: 282} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661617214} + - {fileID: 8926484042661617218} + - {fileID: 8926484042661617222} + m_OutputSlots: + - {fileID: 8926484042661617223} + m_Type: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + seed: 0 + constant: 1 + independentSeed: 0 +--- !u!114 &8926484042661617214 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat3 + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661617215} + - {fileID: 8926484042661617216} + - {fileID: 8926484042661617217} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617214} + m_MasterData: + m_Owner: {fileID: 8926484042661617213} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' + m_Space: -1 + m_Property: + name: Min + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617215 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617214} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617214} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617216 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617214} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617214} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617217 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617214} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617214} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617218 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat3 + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661617219} + - {fileID: 8926484042661617220} + - {fileID: 8926484042661617221} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617218} + m_MasterData: + m_Owner: {fileID: 8926484042661617213} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":1.0,"y":1.0,"z":1.0}' + m_Space: -1 + m_Property: + name: Max + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617219 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617218} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617218} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: + - {fileID: 8926484042661617229} +--- !u!114 &8926484042661617220 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617218} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617218} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617221 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617218} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617218} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617222 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotUint + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617222} + m_MasterData: + m_Owner: {fileID: 8926484042661617213} + m_Value: + m_Type: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 533 + m_Space: -1 + m_Property: + name: seed + m_serializedType: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617223 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat3 + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661617224} + - {fileID: 8926484042661617225} + - {fileID: 8926484042661617226} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617223} + m_MasterData: + m_Owner: {fileID: 8926484042661617213} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: + m_Space: -1 + m_Property: + name: r + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661617142} +--- !u!114 &8926484042661617224 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617223} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617223} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: [] +--- !u!114 &8926484042661617225 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617223} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617223} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: [] +--- !u!114 &8926484042661617226 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617223} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617223} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: [] +--- !u!114 &8926484042661617227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 933d16b72796b6e4bb7d57f030258c92, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.Operator.MeshTriangleCount + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: 354, y: 282} + m_UICollapsed: 0 + m_UISuperCollapsed: 1 + m_InputSlots: + - {fileID: 8926484042661617228} + m_OutputSlots: + - {fileID: 8926484042661617229} + source: 1 +--- !u!114 &8926484042661617228 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d66abc5b83d0f8f47a6d26c1af7be4b2, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotSkinnedMeshRenderer + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617228} + m_MasterData: + m_Owner: {fileID: 8926484042661617227} + m_Value: + m_Type: + m_SerializableType: UnityEngine.SkinnedMeshRenderer, UnityEngine.CoreModule, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_SerializableObject: + m_Space: -1 + m_Property: + name: skinnedMesh + m_serializedType: + m_SerializableType: UnityEngine.SkinnedMeshRenderer, UnityEngine.CoreModule, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: + - {fileID: 8926484042661614628} +--- !u!114 &8926484042661617229 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotUint + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617229} + m_MasterData: + m_Owner: {fileID: 8926484042661617227} + m_Value: + m_Type: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 0 + m_Space: -1 + m_Property: + name: count + m_serializedType: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661617219} diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleTexture2D.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleTexture2D.vfx index a1819d00654..e01e1c00821 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleTexture2D.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SampleTexture2D.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Spawn Count position: serializedVersion: 2 - x: 0 - y: 0 - width: 100 - height: 100 + x: 351 + y: -165 + width: 667 + height: 206 contents: - model: {fileID: 8926484042661614788} id: 0 @@ -27,28 +27,31 @@ MonoBehaviour: - model: {fileID: 8926484042661615510} id: 1 isStickyNote: 0 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 - title: Position 3D Sequential position: serializedVersion: 2 - x: 929 - y: 486 - width: 275 - height: 204 + x: 659 + y: 446 + width: 493 + height: 243 contents: - model: {fileID: 8926484042661615510} id: 2 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 - title: Sample Texture2D position: serializedVersion: 2 - x: -192 + x: 34 y: 695 - width: 1395 - height: 358 + width: 1143 + height: 469 contents: - - model: {fileID: 8926484042661615514} - id: 0 - isStickyNote: 0 - model: {fileID: 8926484042661614827} id: 0 isStickyNote: 0 @@ -64,13 +67,19 @@ MonoBehaviour: - model: {fileID: 8926484042661615529} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 8926484042661615557} + id: 0 + isStickyNote: 0 - title: Turbulence position: serializedVersion: 2 - x: 553 - y: 1341 - width: 661 - height: 272 + x: 239 + y: 1312 + width: 941 + height: 624 contents: - model: {fileID: 8926484042661615137} id: 0 @@ -87,49 +96,127 @@ MonoBehaviour: - model: {fileID: 8926484042661615203} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - model: {fileID: 8926484042661615255} + id: 0 + isStickyNote: 0 + - title: + position: + serializedVersion: 2 + x: 1202 + y: 99 + width: 868 + height: 987 + contents: + - model: {fileID: 8926484042661614558} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614580} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615062} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615249} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615088} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615097} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 1212 + y: 1263 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661614583} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615104} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615174} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615162} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 1039 + y: -456 + width: 757 + height: 541 + contents: + - model: {fileID: 8926484042661614555} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614685} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 stickyNoteInfos: - title: Sample 2DTexture position: serializedVersion: 2 - x: 1059 - y: -426 - width: 721 - height: 101 + x: 1065 + y: -397 + width: 707 + height: 144 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Spawn Count position: serializedVersion: 2 - x: 557 - y: -158 + x: 376 + y: -105 width: 236 height: 101 contents: We're going to spawn our particles on a 2D grid. We created a vector2 property to be able to tie the grid resolution with the number of particles to spawn. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Position 3D Sequential position: serializedVersion: 2 - x: 665 - y: 429 + x: 684 + y: 505 width: 265 height: 158 contents: Position 3D sequential block is very useful to evenly distribute particles on a 1, 2, or 3-dimensional grid. In our case, we spawn particles on a 2D grid by setting the count X and count Y but leaving the count Z to 1. After this block, the particles are positioned on a 2D grid facing the Z axis. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Sample Texture 2D position: serializedVersion: 2 - x: -955 - y: 442 - width: 757 - height: 552 + x: 115 + y: 957 + width: 474 + height: 182 contents: "The positions of our particles range from -1 to 1.\r\nWe're remapping this from (-1,1) to (0,1) to be able to easily sample our texture.\r\n\r\nThose remapped 0\u20131 positions (XY) can be used as UVs for sampling our Texture2D.\r\n\r\nWe're @@ -139,13 +226,14 @@ MonoBehaviour: attribute is a boolean-type attribute that determines whether a particle is alive or not.\r\nSo, in simple terms, we're killing particles based on the value samples from Texture2D.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: Alive position: serializedVersion: 2 - x: 1637 - y: 874 + x: 1670 + y: 786 width: 375 height: 254 contents: "Alive is a boolean attribute (0 or 1).\r\nParticles with a value of @@ -156,13 +244,14 @@ MonoBehaviour: an implicit computation that is responsible for updating the age of particles (Age += deltaTime)\r\n\r\nReap Particles: Kill the particles by setting their alive attribute to false if their age exceeds their lifetime.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Turbulence:' position: serializedVersion: 2 - x: 286 - y: 1343 + x: 265 + y: 1371 width: 260 height: 209 contents: 'It''s pretty common to animate the transform of the turbulence block. @@ -177,8 +266,9 @@ MonoBehaviour: when the particles are born and slowly get pushed away by the turbulence force. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Conform to Sphere position: serializedVersion: 2 @@ -188,15 +278,16 @@ MonoBehaviour: height: 100 contents: The conform to sphere block is used to attract the particles to the center of a sphere. - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -955 - y: -426 - width: 2967 - height: 3098 + x: 34 + y: -457 + width: 2037 + height: 3122 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -229,8 +320,8 @@ MonoBehaviour: - {fileID: 8926484042661615439} - {fileID: 8926484042661615492} - {fileID: 8926484042661615510} - - {fileID: 8926484042661615514} - {fileID: 8926484042661615529} + - {fileID: 8926484042661615557} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 @@ -238,7 +329,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -254,10 +345,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -281,7 +368,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661614685} - m_UIPosition: {x: 1198, y: -262} + m_UIPosition: {x: 1241, y: -265} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -320,12 +407,11 @@ MonoBehaviour: - {fileID: 8926484042661615249} - {fileID: 8926484042661615088} - {fileID: 8926484042661615097} - m_UIPosition: {x: 1212, y: 174} + m_UIPosition: {x: 1227, y: 159} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: - {fileID: 8926484042661614559} - - {fileID: 8926484042661614596} m_OutputSlots: [] m_Label: m_Data: {fileID: 8926484042661614568} @@ -355,7 +441,7 @@ MonoBehaviour: - {fileID: 8926484042661614560} - {fileID: 8926484042661614564} m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 + m_UICollapsed: 0 m_UISuperCollapsed: 0 m_MasterSlot: {fileID: 8926484042661614559} m_MasterData: @@ -364,7 +450,7 @@ MonoBehaviour: m_Type: m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"center":{"x":-0.008661508560180664,"y":1.4014217853546143,"z":-0.018482446670532228},"size":{"x":3.004997730255127,"y":3.960069179534912,"z":3.0607447624206545}}' + m_SerializableObject: '{"center":{"x":0.0,"y":1.5,"z":0.0},"size":{"x":3.0,"y":4.0,"z":3.0}}' m_Space: 0 m_Property: name: bounds @@ -672,7 +758,7 @@ MonoBehaviour: stripCapacity: 16 particlePerStripCount: 16 needsComputeBounds: 0 - boundsMode: 0 + boundsMode: 1 m_Space: 0 --- !u!114 &8926484042661614580 MonoBehaviour: @@ -689,7 +775,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614558} m_Children: [] - m_UIPosition: {x: 233.38269, y: 57.572144} + m_UIPosition: {x: 0, y: 2} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -832,142 +918,6 @@ MonoBehaviour: title: m_Owners: - {fileID: 8926484042661614555} ---- !u!114 &8926484042661614596 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: - - {fileID: 8926484042661614597} - - {fileID: 8926484042661614598} - - {fileID: 8926484042661614599} - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614596} - m_MasterData: - m_Owner: {fileID: 8926484042661614558} - m_Value: - m_Type: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"x":0.5,"y":0.5,"z":0.5}' - m_Space: -1 - m_Property: - name: boundsPadding - m_serializedType: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614597 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614596} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614596} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: x - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614598 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614596} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614596} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: y - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614599 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614596} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614596} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: z - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] --- !u!114 &8926484042661614602 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1181,7 +1131,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1019, y: -84} + m_UIPosition: {x: 830, y: -81} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -1359,7 +1309,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: - - {fileID: 8926484042661615527} + - {fileID: 8926484042661615566} --- !u!114 &8926484042661614821 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1582,8 +1532,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -167, y: 776} - m_UICollapsed: 0 + m_UIPosition: {x: 59, y: 843} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] m_OutputSlots: @@ -2006,7 +1956,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614558} m_Children: [] - m_UIPosition: {x: 0, y: 0} + m_UIPosition: {x: 0, y: 97} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2896,7 +2846,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614558} m_Children: [] - m_UIPosition: {x: 0, y: 0} + m_UIPosition: {x: 0, y: 504} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2958,7 +2908,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614558} m_Children: [] - m_UIPosition: {x: 0, y: 0} + m_UIPosition: {x: 0, y: 577} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3699,7 +3649,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 799, y: 1468} + m_UIPosition: {x: 757, y: 1467} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3826,7 +3776,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 578, y: 1488} + m_UIPosition: {x: 536, y: 1487} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4377,7 +4327,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1030, y: 1468} + m_UIPosition: {x: 988, y: 1467} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4513,7 +4463,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 867, y: 1400} + m_UIPosition: {x: 825, y: 1399} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -4570,7 +4520,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1041, y: 1400} + m_UIPosition: {x: 999, y: 1399} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -4845,7 +4795,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614558} m_Children: [] - m_UIPosition: {x: 0, y: 0} + m_UIPosition: {x: 0, y: 403} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4907,7 +4857,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1017, y: 1741} + m_UIPosition: {x: 988, y: 1739} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -5038,6 +4988,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615444} + useBaseColorMap: 2 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -5163,7 +5114,6 @@ MonoBehaviour: - 2 - 1 renderQueue: -1 - useBaseColorMap: 2 useMaskMap: 0 useNormalMap: 0 useEmissiveMap: 0 @@ -5610,6 +5560,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615497} + useBaseColorMap: 2 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -5638,7 +5589,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 2 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 @@ -6178,9 +6128,10 @@ MonoBehaviour: inputSlot: {fileID: 8926484042661615246} - outputSlot: {fileID: 8926484042661615513} inputSlot: {fileID: 8926484042661615248} - position: {x: 823.3333, y: -105.333336} - expandedSlots: [] - expanded: 1 + position: {x: 643.3333, y: -81.33333} + expandedSlots: + - {fileID: 8926484042661615511} + expanded: 0 supecollapsed: 0 - m_Id: 2 linkedSlots: @@ -6299,7 +6250,7 @@ MonoBehaviour: m_LinkedSlots: - {fileID: 8926484042661615248} - {fileID: 8926484042661615065} ---- !u!114 &8926484042661615514 +--- !u!114 &8926484042661615529 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6308,36 +6259,23 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0a02ebe9815b1084495277ae39c6c270, type: 3} + m_Script: {fileID: 11500000, guid: c8ac0ebcb5fd27b408f3700034222acb, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 73, y: 776} + m_UIPosition: {x: 456, y: 848} m_UICollapsed: 0 - m_UISuperCollapsed: 0 + m_UISuperCollapsed: 1 m_InputSlots: - - {fileID: 8926484042661615521} - - {fileID: 8926484042661615516} - - {fileID: 8926484042661615517} - - {fileID: 8926484042661615518} - - {fileID: 8926484042661615519} + - {fileID: 8926484042661615530} m_OutputSlots: - - {fileID: 8926484042661615525} + - {fileID: 8926484042661615531} m_Type: - - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Clamp: 0 ---- !u!114 &8926484042661615516 +--- !u!114 &8926484042661615530 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6355,23 +6293,24 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615516} + m_MasterSlot: {fileID: 8926484042661615530} m_MasterData: - m_Owner: {fileID: 8926484042661615514} + m_Owner: {fileID: 8926484042661615529} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: -1 + m_SerializableObject: 0 m_Space: -1 m_Property: - name: oldRangeMin + name: x m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661615517 + m_LinkedSlots: + - {fileID: 8926484042661615565} +--- !u!114 &8926484042661615531 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6389,23 +6328,24 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615517} + m_MasterSlot: {fileID: 8926484042661615531} m_MasterData: - m_Owner: {fileID: 8926484042661615514} + m_Owner: {fileID: 8926484042661615529} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 1 + m_SerializableObject: m_Space: -1 m_Property: - name: oldRangeMax + name: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661615518 + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661614819} +--- !u!114 &8926484042661615532 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6414,32 +6354,36 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] m_Parent: {fileID: 0} - m_Children: [] + m_Children: + - {fileID: 8926484042661615533} + - {fileID: 8926484042661615534} + - {fileID: 8926484042661615535} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615518} + m_MasterSlot: {fileID: 8926484042661615532} m_MasterData: - m_Owner: {fileID: 8926484042661615514} + m_Owner: {fileID: 8926484042661615249} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":1.0,"y":1.0,"z":1.0}' m_Space: -1 m_Property: - name: newRangeMin + name: _Color m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661615519 + m_LinkedSlots: + - {fileID: 8926484042661614874} +--- !u!114 &8926484042661615533 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6452,28 +6396,27 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 8926484042661615532} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615519} + m_MasterSlot: {fileID: 8926484042661615532} m_MasterData: - m_Owner: {fileID: 8926484042661615514} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 1 + m_SerializableType: + m_SerializableObject: m_Space: -1 m_Property: - name: newRangeMax + name: x m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661615521 +--- !u!114 &8926484042661615534 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -6482,448 +6425,7 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: - - {fileID: 8926484042661615522} - - {fileID: 8926484042661615523} - - {fileID: 8926484042661615524} - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615521} - m_MasterData: - m_Owner: {fileID: 8926484042661615514} - m_Value: - m_Type: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' - m_Space: -1 - m_Property: - name: input - m_serializedType: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661615551} ---- !u!114 &8926484042661615522 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661615521} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615521} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: x - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661615523 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661615521} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615521} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: y - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661615524 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661615521} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615521} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: z - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661615525 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: - - {fileID: 8926484042661615526} - - {fileID: 8926484042661615527} - - {fileID: 8926484042661615528} - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 0 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615525} - m_MasterData: - m_Owner: {fileID: 8926484042661615514} - m_Value: - m_Type: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_SerializableObject: - m_Space: -1 - m_Property: - name: - m_serializedType: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_Direction: 1 - m_LinkedSlots: [] ---- !u!114 &8926484042661615526 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661615525} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615525} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: x - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661615530} ---- !u!114 &8926484042661615527 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661615525} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615525} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: y - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661614820} ---- !u!114 &8926484042661615528 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661615525} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615525} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: z - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: [] ---- !u!114 &8926484042661615529 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c8ac0ebcb5fd27b408f3700034222acb, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} - m_Children: [] - m_UIPosition: {x: 429, y: 804} - m_UICollapsed: 0 - m_UISuperCollapsed: 0 - m_InputSlots: - - {fileID: 8926484042661615530} - m_OutputSlots: - - {fileID: 8926484042661615531} - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 ---- !u!114 &8926484042661615530 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615530} - m_MasterData: - m_Owner: {fileID: 8926484042661615529} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 - m_Space: -1 - m_Property: - name: x - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661615526} ---- !u!114 &8926484042661615531 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615531} - m_MasterData: - m_Owner: {fileID: 8926484042661615529} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: - m_Space: -1 - m_Property: - name: - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661614819} ---- !u!114 &8926484042661615532 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: - - {fileID: 8926484042661615533} - - {fileID: 8926484042661615534} - - {fileID: 8926484042661615535} - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615532} - m_MasterData: - m_Owner: {fileID: 8926484042661615249} - m_Value: - m_Type: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"x":1.0,"y":1.0,"z":1.0}' - m_Space: -1 - m_Property: - name: _Color - m_serializedType: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661614874} ---- !u!114 &8926484042661615533 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661615532} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661615532} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: x - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661615534 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] @@ -7358,7 +6860,7 @@ MonoBehaviour: Culture=neutral, PublicKeyToken=null m_Direction: 1 m_LinkedSlots: - - {fileID: 8926484042661615521} + - {fileID: 8926484042661615560} --- !u!114 &8926484042661615552 MonoBehaviour: m_ObjectHideFlags: 0 @@ -7526,3 +7028,304 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] +--- !u!114 &8926484042661615557 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1186f6f75023a5547a3641827e825642, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.Operator.RemapToZeroOne + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: 253, y: 887} + m_UICollapsed: 0 + m_UISuperCollapsed: 1 + m_InputSlots: + - {fileID: 8926484042661615560} + m_OutputSlots: + - {fileID: 8926484042661615564} + m_Type: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Clamp: 0 +--- !u!114 &8926484042661615560 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat3 + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661615561} + - {fileID: 8926484042661615562} + - {fileID: 8926484042661615563} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661615560} + m_MasterData: + m_Owner: {fileID: 8926484042661615557} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' + m_Space: -1 + m_Property: + name: input + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: + - {fileID: 8926484042661615551} +--- !u!114 &8926484042661615561 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661615560} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661615560} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661615562 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661615560} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661615560} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661615563 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661615560} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661615560} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661615564 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat3 + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661615565} + - {fileID: 8926484042661615566} + - {fileID: 8926484042661615567} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661615564} + m_MasterData: + m_Owner: {fileID: 8926484042661615557} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: + m_Space: -1 + m_Property: + name: + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 1 + m_LinkedSlots: [] +--- !u!114 &8926484042661615565 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661615564} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661615564} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661615530} +--- !u!114 &8926484042661615566 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661615564} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661615564} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661614820} +--- !u!114 &8926484042661615567 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661615564} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661615564} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: [] diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SpawnContext.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SpawnContext.vfx index d206a45ce63..d2b9d6ae9a6 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SpawnContext.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/SpawnContext.vfx @@ -12,7 +12,96 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d01270efd3285ea4a9d6c555cb0a8027, type: 3} m_Name: VFXUI m_EditorClassIdentifier: - groupInfos: [] + groupInfos: + - title: + position: + serializedVersion: 2 + x: 1237 + y: -791 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661614649} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615855} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615709} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615788} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614558} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614953} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615795} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615858} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615839} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615821} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614585} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614589} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615822} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615475} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615704} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615730} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615767} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615791} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615819} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615827} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 stickyNoteInfos: - title: 'Spawn Context Options :' position: @@ -26,8 +115,9 @@ MonoBehaviour: the loops.\r\n\r\nIn the Inspector Window, we change the \u201CLoop Duration\u201D to constant and \u201CDelay Mode.\u201D\r\nWith this, we were able to adjust the loop duration and delay.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Spawn Burst :' position: serializedVersion: 2 @@ -40,8 +130,9 @@ MonoBehaviour: for \u201Cbursting\u201D a constant number of particles in one frame at the start (+ delay) of each loop.\r\n\r\nWith each new loop, several particles are generated based on the \u201Cloop index.\u201D\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Spawn State :' position: serializedVersion: 2 @@ -54,8 +145,9 @@ MonoBehaviour: press the Space Bar and search for \u201Cspawn state.\u201D\r\nNotice that you can reduce the size of the node so that it shows only the connected pin by clicking the arrow in the upper-right corner of any block.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 3 - title: 'Setting Spawn Event Attributes:' position: serializedVersion: 2 @@ -69,8 +161,9 @@ MonoBehaviour: example, we set the \u201Clifetime\u201D to be equal to the loop duration + delay so that our particle's lifetime matches the loop duration.\r\n\r\nWe also get a random color for each new loop.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Get Attribute:' position: serializedVersion: 2 @@ -84,8 +177,9 @@ MonoBehaviour: context\u201D or a \u201CGPU event.\u201D\r\nIn this case, we're retrieving the lifetime data set in the \u201Cspawn context.\u201D\r\nYou can also drag and drop attributes from the blackboard." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Inherit Source Color:' position: serializedVersion: 2 @@ -97,8 +191,9 @@ MonoBehaviour: actually doing the same.\r\n\r\nWhen clicking on it, in the inspector, we get access to \u201CSource attribute data.\u201D By changing this option to \u201CSource,\u201D we can directly \u201Cinherit\u201D the data from the Spawn Context.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Block Operator:' position: serializedVersion: 2 @@ -111,8 +206,9 @@ MonoBehaviour: to perform math operations, sample textures, or even more advanced ones. \r\n\r\nYou can search for them by pressing the \u201Cspace bar.\u201D From here, you can either search for them, or dive into the different categories.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 @@ -153,7 +249,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -169,10 +265,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 0 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -594,6 +686,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661614590} - {fileID: 8926484042661615863} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/StripGPUEvent.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/StripGPUEvent.vfx index 9c43649e6ec..7a086b04c48 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/StripGPUEvent.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/StripGPUEvent.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Add Upward Velocity position: serializedVersion: 2 - x: -1456 - y: 561 - width: 793 - height: 363 + x: -1583 + y: 385 + width: 865 + height: 504 contents: - model: {fileID: 8926484042661615049} id: 0 @@ -36,13 +36,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616261} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 - title: MushRoom Foot Size position: serializedVersion: 2 - x: 462 - y: 2888 - width: 1207 - height: 502 + x: 438 + y: 2844 + width: 1221 + height: 541 contents: - model: {fileID: 8926484042661616183} id: 0 @@ -74,13 +77,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616251} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 13 + isStickyNote: 1 - title: Fake Gravity position: serializedVersion: 2 - x: -155 - y: 3572 - width: 2035 - height: 554 + x: -141 + y: 3575 + width: 2081 + height: 556 contents: - model: {fileID: 8926484042661615630} id: 0 @@ -121,13 +127,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615644} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 14 + isStickyNote: 1 - title: Fake Gravity position: serializedVersion: 2 x: -2647 - y: 2935 - width: 1975 - height: 469 + y: 2865 + width: 1977 + height: 540 contents: - model: {fileID: 8926484042661615692} id: 0 @@ -162,6 +171,9 @@ MonoBehaviour: - model: {fileID: 8926484042661615792} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 - title: Dust Powder position: serializedVersion: 2 @@ -176,9 +188,6 @@ MonoBehaviour: - model: {fileID: 8926484042661616561} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661616982} - id: 0 - isStickyNote: 0 - model: {fileID: 8926484042661616688} id: 0 isStickyNote: 0 @@ -220,10 +229,10 @@ MonoBehaviour: - title: Trigger Logic position: serializedVersion: 2 - x: -1574 - y: 1486 - width: 873 - height: 377 + x: -1925 + y: 1616 + width: 1204 + height: 378 contents: - model: {fileID: 8926484042661616348} id: 0 @@ -243,13 +252,16 @@ MonoBehaviour: - model: {fileID: 8926484042661617011} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 - title: Rotten Attribute position: serializedVersion: 2 - x: -1722 - y: 977 - width: 487 - height: 227 + x: -1969 + y: 898 + width: 701 + height: 317 contents: - model: {fileID: 8926484042661616131} id: 0 @@ -260,13 +272,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616281} id: 1 isStickyNote: 0 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 - title: Blend Velocity position: serializedVersion: 2 - x: -1207 - y: 1135 - width: 499 - height: 352 + x: -1540 + y: 1224 + width: 805 + height: 364 contents: - model: {fileID: 8926484042661616002} id: 0 @@ -280,13 +295,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615088} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 - title: Random Scale position: serializedVersion: 2 - x: -2500 - y: 2418 - width: 1779 - height: 430 + x: -2526 + y: 2313 + width: 1726 + height: 534 contents: - model: {fileID: 8926484042661615349} id: 0 @@ -312,13 +330,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616738} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 - title: Rotten position: serializedVersion: 2 - x: 1669 - y: 2119 - width: 497 - height: 201 + x: 1458 + y: 1963 + width: 679 + height: 308 contents: - model: {fileID: 8926484042661616257} id: 0 @@ -329,13 +350,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616281} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 11 + isStickyNote: 1 - title: Strip Ratio position: serializedVersion: 2 - x: 0 - y: 0 - width: 100 - height: 100 + x: 1295 + y: 2285 + width: 809 + height: 425 contents: - model: {fileID: 8926484042661615246} id: 0 @@ -349,13 +373,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616178} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 12 + isStickyNote: 1 - title: Random Angular VelocityZ position: serializedVersion: 2 - x: 4244 - y: 2225 - width: 503 - height: 339 + x: 3966 + y: 2223 + width: 778 + height: 340 contents: - model: {fileID: 8926484042661616444} id: 0 @@ -366,13 +393,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616438} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 15 + isStickyNote: 1 - title: Position Based Velocity position: serializedVersion: 2 - x: 4217 + x: 3938 y: 1901 - width: 540 - height: 291 + width: 821 + height: 292 contents: - model: {fileID: 8926484042661616466} id: 0 @@ -383,82 +413,122 @@ MonoBehaviour: - model: {fileID: 8926484042661616461} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 16 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: -685 + y: -321 + width: 781 + height: 863 + contents: + - model: {fileID: 8926484042661614707} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - title: Random Selector Weighted + position: + serializedVersion: 2 + x: 5667 + y: 3843 + width: 567 + height: 436 + contents: + - model: {fileID: 8926484042661616982} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 17 + isStickyNote: 1 stickyNoteInfos: - title: Mushroom Cap position: serializedVersion: 2 - x: -202 - y: -330 + x: -195 + y: -228 width: 265 height: 100 contents: This system is bursting particles. Those particles will be parents and spawn other particles along their path. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Initialize Context position: serializedVersion: 2 - x: -203 - y: 157 + x: -197 + y: 161 width: 245 height: 100 contents: In this context, we set the initial position of our parent particles, their initial velocity, and a random size. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Add Upward Velocity position: serializedVersion: 2 - x: -1771 - y: 562 + x: -1557 + y: 445 width: 299 height: 124 contents: "We\u2019re using the age over lifetime 0-1 to sample a curve.\nThis curve helps us determine when the particles should have some upward velocity.\n\r\nThe intensity is then randomized per particle.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Rotten Attribute position: serializedVersion: 2 - x: -2003 - y: 950 + x: -1943 + y: 957 width: 269 height: 145 contents: "We\u2019re setting a custom attribute value during the particle\u2019s lifetime.\n\nThis corresponds to when the mushroom will start to rot.\n\r\nThis 0-1 value will help us drive the appearance and behavior of our mushroom.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Blend Velocity position: serializedVersion: 2 - x: -1493 - y: 1263 + x: -1515 + y: 1283 width: 271 height: 153 contents: "The mushroom should stop growing at some point.\r\nTo achieve this, we use a Blend Velocity block.\n\nThis node smoothly reduces the particle\u2019s velocity to 0, which will stop the mushroom caps' growth movement.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Trigger Over Distance position: serializedVersion: 2 - x: -220 - y: 1264 - width: 312 - height: 131 + x: -215 + y: 1244 + width: 336 + height: 130 contents: "The Trigger over distance Block triggers the creation of particles via a GPU Event using a specified rate. \n\nYou can set the rate to spawn particles over time (per second) or over distance (parent particle distance change).\r\n" - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Trigger Logic position: serializedVersion: 2 - x: -1921 - y: 1485 + x: -1900 + y: 1687 width: 336 height: 155 contents: "To get lovely visual feedback on the mushroom blossom, we want to @@ -466,8 +536,9 @@ MonoBehaviour: age over lifetime value with 0.5 which corresponds to when the mushroom stops. \n\nThe result of this boolean statement drives the activation port of the trigger event nodes.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: ShaderGraph Control position: serializedVersion: 2 @@ -479,64 +550,69 @@ MonoBehaviour: exposed. \n\nThis means that we can drive those values per particle.\n\r\nIt is possible to control the UV scale and offset to add some per-particle randomization. \n\nBut we can also control the \u201Crotten\u201D appearance of our mushrooms.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Scale position: serializedVersion: 2 - x: -2751 - y: 2417 + x: -2501 + y: 2372 width: 248 height: 155 contents: "To get more randomization, we\u2019re playing with the scale attribute value. \nThese operations make the mushroom hats grow over their lifetime. \n\nThe \u201CRotten\u201D attribute is also used to shrink the scale value.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Fake Gravity position: serializedVersion: 2 - x: -2919 - y: 2943 + x: -2607 + y: 2924 width: 262 height: 167 contents: "To achieve a more convincing rotting effect, we offset the particle\u2019s position using the rotten attribute value.\r\n\r\nThis is done by using the Rotate3D operator.\r\n\r\nThe rotation axis is calculated by a cross-product operation, and the rotation amount is driven by the rotten value.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Source Attribute and GPU Event position: serializedVersion: 2 - x: 1847 - y: 1832 + x: 2605 + y: 1833 width: 321 height: 152 contents: "Particles spawned with GPU events can retrieve their parents\u2019 attribute values in the initialize context.\n\r\nThe \u201Csource\u201D location lets you get the value from the parent particle.\n\r\nHere, we inherit the parent\u2019s position, size, lifetime, and age.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Rotten position: serializedVersion: 2 - x: 1433 - y: 2129 + x: 1483 + y: 2023 width: 220 height: 179 contents: "The particles inherits their parents\u2019 lifetime and age. \nThe age and lifetime is in sync with their parent. \n\nThis allows us to use the same sample curve operation and have rotten values in sync between the mushroom hats and the mushroom Strips/feet.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Strip Ratio position: serializedVersion: 2 - x: 1105 - y: 2371 + x: 1320 + y: 2344 width: 336 height: 187 contents: "Getting a 0<>1 normalized value along the strip is always valuable @@ -545,63 +621,68 @@ MonoBehaviour: minus 1.\r\n\r\nThis will give us a 0<>1 value across the strip that we can store in a custom attribute. This way, we can access this value at any time to drive the behavior or appearance of our Strips/trails.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 3 - title: MushRoom Stem Size position: serializedVersion: 2 - x: 243 - y: 2891 + x: 463 + y: 2903 width: 210 height: 156 contents: "We\u2019re driving the width of the strips (mushroom foot) based on our 0<>1 strip ratio value. \n\nWe also modulate this value with a noise and our rotten value." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Fake Gravity position: serializedVersion: 2 - x: -435 - y: 3587 + x: -88 + y: 3913 width: 262 height: 193 contents: "To achieve a more convincing rotting effect, we offset the particle\u2019s position using the rotten attribute value.\r\n\r\nThis is done by using the Rotate3D operator.\r\n\r\nThe rotation axis is calculated by a cross-product operation, and the rotation amount is driven by the rotten value.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Random Angular VelocityZ position: serializedVersion: 2 - x: 3959 - y: 2236 + x: 3991 + y: 2305 width: 268 height: 188 contents: "Adding some angular velocity can help to get a nice rotational motion.\n\r\nHere, we\u2019re randomizing the angular velocity Z and multiplying it with a Random Selector.\n\r\nThis random selector is very practical and can help us get specific values.\n\nIn this case, it allows us to rotate either positively or negatively.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Position-based velocity position: serializedVersion: 2 - x: 3919 - y: 1905 + x: 3963 + y: 1972 width: 241 height: 127 contents: "When dealing with local space systems, using the particle\u2019s position as a velocity vector is pretty standard.\n\r\nThis allows us to get outward velocity.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Random Selector Weighted position: serializedVersion: 2 - x: 5706 - y: 3992 + x: 5692 + y: 3920 width: 276 height: 265 contents: "The random operator is the simplest solution to generate randomization.\nWhile @@ -611,15 +692,16 @@ MonoBehaviour: Random Selector Weighted. It provides the capability to select a specified number of values and assign a weight to each entry.\n\nThis gives you great control over your random distribution to get more appealing results.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -2919 + x: -2646 y: -755 - width: 9663 - height: 5047 + width: 9390 + height: 5035 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -769,7 +851,7 @@ MonoBehaviour: enumValues: [] descendantCount: 0 m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -785,10 +867,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -1000,7 +1078,7 @@ MonoBehaviour: - {fileID: 8926484042661614995} - {fileID: 8926484042661615031} - {fileID: 8926484042661615286} - m_UIPosition: {x: -657, y: -309} + m_UIPosition: {x: -660, y: -262} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1100,7 +1178,7 @@ MonoBehaviour: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 13.5 + m_SerializableObject: 7 m_Space: -1 m_Property: name: A @@ -1134,7 +1212,7 @@ MonoBehaviour: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 15 + m_SerializableObject: 8 m_Space: -1 m_Property: name: B @@ -1245,7 +1323,7 @@ MonoBehaviour: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 16 + m_SerializableObject: 9 m_Space: -1 m_Property: name: LoopDuration @@ -2554,7 +2632,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1431, y: 644} + m_UIPosition: {x: -1503, y: 619} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2843,7 +2921,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1199, y: 620} + m_UIPosition: {x: -1271, y: 586} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2970,7 +3048,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -949, y: 717} + m_UIPosition: {x: -1021, y: 683} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3355,7 +3433,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1137, y: 756} + m_UIPosition: {x: -1209, y: 722} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3716,7 +3794,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1175, y: 1387} + m_UIPosition: {x: -1221, y: 1487} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3772,7 +3850,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -959, y: 1365} + m_UIPosition: {x: -1005, y: 1465} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3937,6 +4015,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661615096} - {fileID: 8926484042661617148} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -5105,7 +5184,7 @@ MonoBehaviour: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 30 + m_SerializableObject: 20 m_Space: -1 m_Property: name: Rate @@ -5688,6 +5767,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661615193} - {fileID: 8926484042661617149} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -5713,7 +5793,6 @@ MonoBehaviour: m_PropertyNames: [] m_PropertyValues: [] renderQueue: -1 - useBaseColorMap: 0 useMaskMap: 0 useNormalMap: 0 useEmissiveMap: 0 @@ -6621,7 +6700,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1702, y: 2422} + m_UIPosition: {x: 1661, y: 2427} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -6680,7 +6759,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1469, y: 2534} + m_UIPosition: {x: 1428, y: 2539} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -6739,7 +6818,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1966, y: 2496} + m_UIPosition: {x: 1925, y: 2501} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6876,7 +6955,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 695, y: 3055} + m_UIPosition: {x: 687, y: 3051} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8083,7 +8162,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 695, y: 3227} + m_UIPosition: {x: 687, y: 3223} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -8455,7 +8534,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1315, y: 3055} + m_UIPosition: {x: 1307, y: 3051} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8921,7 +9000,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -129, y: 3631} + m_UIPosition: {x: -116, y: 3635} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -9083,7 +9162,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 953, y: 3667} + m_UIPosition: {x: 966, y: 3671} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -9826,7 +9905,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 343, y: 3765} + m_UIPosition: {x: 356, y: 3769} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -10126,7 +10205,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 59, y: 3765} + m_UIPosition: {x: 72, y: 3769} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -10568,7 +10647,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 671, y: 3955} + m_UIPosition: {x: 684, y: 3959} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -10943,7 +11022,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 623, y: 3765} + m_UIPosition: {x: 636, y: 3769} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -11413,7 +11492,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1593, y: 3667} + m_UIPosition: {x: 1606, y: 3671} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -11788,7 +11867,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1415, y: 3909} + m_UIPosition: {x: 1428, y: 3913} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -11930,7 +12009,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1169, y: 3849} + m_UIPosition: {x: 1182, y: 3853} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -15768,7 +15847,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1181, y: 1194} + m_UIPosition: {x: -1227, y: 1295} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -15929,7 +16008,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -993, y: 1228} + m_UIPosition: {x: -1039, y: 1329} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -18433,7 +18512,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1477, y: 1036} + m_UIPosition: {x: -1477, y: 1047} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -18561,7 +18640,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1697, y: 1106} + m_UIPosition: {x: -1697, y: 1117} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -18891,7 +18970,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1694, y: 2221} + m_UIPosition: {x: 1699, y: 2173} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -19175,7 +19254,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1065, y: 3253} + m_UIPosition: {x: 1057, y: 3249} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -19234,7 +19313,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1079, y: 3139} + m_UIPosition: {x: 1071, y: 3135} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -19484,7 +19563,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1744, y: 2566} + m_UIPosition: {x: 1703, y: 2571} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -19620,7 +19699,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 487, y: 3115} + m_UIPosition: {x: 479, y: 3111} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -19680,7 +19759,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 449, y: 3865} + m_UIPosition: {x: 462, y: 3869} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -19739,7 +19818,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 467, y: 3989} + m_UIPosition: {x: 480, y: 3993} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -19798,7 +19877,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 951, y: 3835} + m_UIPosition: {x: 964, y: 3839} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -19857,7 +19936,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1205, y: 3967} + m_UIPosition: {x: 1218, y: 3971} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -20361,7 +20440,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1043, y: 2947} + m_UIPosition: {x: 1035, y: 2943} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -20530,7 +20609,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1243, y: 2947} + m_UIPosition: {x: 1235, y: 2943} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -20625,7 +20704,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1479, y: 2999} + m_UIPosition: {x: 1471, y: 2995} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -20763,7 +20842,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 827, y: 2991} + m_UIPosition: {x: 819, y: 2987} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -20819,7 +20898,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1924, y: 2182} + m_UIPosition: {x: 1929, y: 2135} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -20947,7 +21026,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1431, y: 727} + m_UIPosition: {x: -1503, y: 693} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -21038,7 +21117,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661616282} inputSlot: {fileID: 8926484042661616258} - position: {x: 1739.3334, y: 2177.3335} + position: {x: 1744, y: 2130} expandedSlots: [] expanded: 1 supecollapsed: 1 @@ -21046,7 +21125,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661616282} inputSlot: {fileID: 8926484042661616132} - position: {x: -1654, y: 1038.6666} + position: {x: -1653.3334, y: 1049.3333} expandedSlots: [] expanded: 1 supecollapsed: 0 @@ -21816,7 +21895,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -861, y: 1635} + m_UIPosition: {x: -864, y: 1765} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -28149,6 +28228,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661616691} - {fileID: 8926484042661617150} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -30906,7 +30986,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 5989, y: 3914} + m_UIPosition: {x: 5982, y: 3903} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -31427,7 +31507,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1549, y: 1585} + m_UIPosition: {x: -1552, y: 1715} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -31484,7 +31564,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1175, y: 1545} + m_UIPosition: {x: -1178, y: 1675} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -31615,7 +31695,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1175, y: 1681} + m_UIPosition: {x: -1178, y: 1811} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -31746,7 +31826,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1325, y: 1725} + m_UIPosition: {x: -1328, y: 1855} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -31883,7 +31963,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1497, y: 1743} + m_UIPosition: {x: -1500, y: 1873} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -32142,6 +32222,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661617047} - {fileID: 8926484042661617151} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -33020,6 +33101,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661617109} - {fileID: 8926484042661617152} + useBaseColorMap: 0 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -33048,7 +33130,6 @@ MonoBehaviour: materialType: 0 workflowMode: 0 smoothnessSource: 0 - useBaseColorMap: 0 useOcclusionMap: 0 useMetallicMap: 0 useSpecularMap: 0 diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/StripProperties.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/StripProperties.vfx index a3db1711a0e..71f83b7686e 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/StripProperties.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/StripProperties.vfx @@ -16,7 +16,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661614542} - m_UIPosition: {x: 1522, y: -1082} + m_UIPosition: {x: 1525, y: -1086} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -89,10 +89,10 @@ MonoBehaviour: - title: Debug Strips position: serializedVersion: 2 - x: -3113 - y: -1 + x: -991 + y: 656 width: 863 - height: 1597 + height: 1593 contents: - model: {fileID: 8926484042661615202} id: 0 @@ -112,64 +112,119 @@ MonoBehaviour: - model: {fileID: 8926484042661615608} id: 0 isStickyNote: 0 - - title: Strip + - title: Strip Line Debug position: serializedVersion: 2 - x: 2171 - y: -270 - width: 1022 - height: 1670 + x: 164 + y: 435 + width: 1494 + height: 1755 contents: - - model: {fileID: 8926484042661614784} + - model: {fileID: 114780028408030698} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661615538} + - model: {fileID: 8926484042661615424} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661614782} + - model: {fileID: 8926484042661615572} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661614894} + - model: {fileID: 8926484042661614650} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661614730} + - model: {fileID: 8926484042661614662} id: 0 isStickyNote: 0 - - title: Strip Line Debug + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 + - model: {fileID: 0} + id: 10 + isStickyNote: 1 + - title: Initalize position: serializedVersion: 2 - x: 334 - y: -481 - width: 1180 - height: 2731 + x: 228 + y: -441 + width: 1521 + height: 755 contents: + - model: {fileID: 114946465509916290} + id: 0 + isStickyNote: 0 - model: {fileID: 8926484042661615199} id: 0 isStickyNote: 0 - - model: {fileID: 114780028408030698} + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - title: Spawn + position: + serializedVersion: 2 + x: 1164 + y: -1145 + width: 812 + height: 410 + contents: + - model: {fileID: 114023846229194376} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661615424} + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 1826 + y: -497 + width: 1389 + height: 1595 + contents: + - model: {fileID: 8926484042661614730} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661615572} + - model: {fileID: 8926484042661614894} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661614650} + - model: {fileID: 8926484042661614784} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661614662} + - model: {fileID: 8926484042661615538} id: 0 isStickyNote: 0 - - model: {fileID: 114946465509916290} + - model: {fileID: 8926484042661614782} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 11 + isStickyNote: 1 stickyNoteInfos: - title: Spawn Master position: serializedVersion: 2 - x: 1186 - y: -1060 + x: 1189 + y: -1064 width: 329 height: 100 contents: 'You can use the same Spawn Context to trigger the Initialize Context @@ -177,13 +232,14 @@ MonoBehaviour: This can be very practical to share spawnCount or to synchonyze different System''s loop.' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Initialize Particle Strip position: serializedVersion: 2 - x: 1062 - y: -391 + x: 1195 + y: -346 width: 529 height: 307 contents: "To generate Strips, you must utilize a Particle Strip Data type. You @@ -197,13 +253,14 @@ MonoBehaviour: that this system will handle?\r\nHow many particles are going to compose each strip?\r\n\r\nNote that the number of particles per strip can have an influence over its appearance and behavior.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Strip Index position: serializedVersion: 2 - x: 287 - y: -375 + x: 424 + y: -231 width: 270 height: 180 contents: 'The Strip Index is a standard per-particle attribute. This setting @@ -217,28 +274,30 @@ MonoBehaviour: want all our particles to be included in it, so we''ll keep it at 0. ' - theme: Black + theme: textSize: Small + colorTheme: 3 - title: ParticleIndex in Strip position: serializedVersion: 2 - x: 83 - y: 37 - width: 240 - height: 120 + x: 253 + y: 78 + width: 251 + height: 116 contents: 'This attribute is a UInt that represents the Particle Index inside the Particle Strip buffer. As we''re spawning 9 particles, this index will modulate between 0-8.' - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Position Sequential Line position: serializedVersion: 2 - x: 1065 - y: 5 + x: 1235 + y: 46 width: 348 height: 221 contents: 'This block allows you to set the particle''s position on a line. @@ -247,39 +306,41 @@ MonoBehaviour: The line is divided into segments based on the count property value. - + To determine the location of each particle on the line, we set an index setting. By default, the setting uses the ParticleID. In this example, we use a custom index and feed the ParticleIndexInStrip attribute to it. - - Using - the ParticleIndexInStrip attribute, this block spreads the particles that compose + + Using the + ParticleIndexInStrip attribute, this block spreads the particles that compose the strip along a line. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Update Particle Strip position: serializedVersion: 2 - x: 341 - y: 551 + x: 509 + y: 523 width: 242 height: 112 contents: When you connect the Update Particle to the Initialize Particle Strip context, that context is converted to the Update Particle Strip context to match the data type of the system. - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Output ParticleStrip position: serializedVersion: 2 - x: 47 - y: 796 + x: 197 + y: 753 width: 304 height: 128 contents: 'The ParticleStrip Output is responsible for rendering the particles @@ -291,25 +352,27 @@ MonoBehaviour: ' - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Size position: serializedVersion: 2 - x: 52 - y: 1191 + x: 209 + y: 1183 width: 304 height: 100 contents: The size attribute can be used to modify the width of your strips. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Spawn Index in Strip position: serializedVersion: 2 - x: 39 - y: 1757 + x: 189 + y: 1710 width: 310 - height: 178 + height: 169 contents: 'This attribute is a UInt representing the Spawn Index in the strip. Unlike the ParticleIndexInStrip attribute, the SpawnIndexInStrip is not unique. Two particles born on different frames in the same strip can share the same @@ -322,44 +385,47 @@ MonoBehaviour: ' - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Debug Index position: serializedVersion: 2 - x: 333 - y: 1494 + x: 479 + y: 1450 width: 270 height: 119 contents: "This Output is used to display the SpawnIndexInStrip value ranging between 0 and 8. \n\nYou can see this value displayed in the Strip Properties showcase." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Output Quad position: serializedVersion: 2 - x: 1517 - y: 1491 + x: 1273 + y: 1986 width: 343 height: 137 contents: 'We use Particle Strip Data for a Particle Strip output, but we can connect a regular Output Quad (unlit/lit/ShaderGraph) to Particle Strip Data too. - - Here, our quad outputs help illustrate the particle''s - position within the strip and the ParticleIndexInStrip value. + + Here, our quad outputs help illustrate the particle''s position + within the strip and the ParticleIndexInStrip value. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Tiling Mode position: serializedVersion: 2 - x: 3195 - y: 827 + x: 2849 + y: 583 width: 341 height: 187 contents: "\nThe Tiling Mode setting allows you to modify how the output generates @@ -367,15 +433,16 @@ MonoBehaviour: along the whole strip.\r\n\u2022 Repeat Per Segment: Restart the mapping for every segment of the strip.\r\n\u2022 Custom: Manually provides the reference texture coordinate." - theme: Black + theme: textSize: Small + colorTheme: 3 categories: [] uiBounds: serializedVersion: 2 - x: -3112 - y: -1082 - width: 6648 - height: 3332 + x: -991 + y: -1145 + width: 4207 + height: 3394 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -418,7 +485,7 @@ MonoBehaviour: - {fileID: 8926484042661615568} m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -601,7 +668,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 617, y: 525} + m_UIPosition: {x: 761, y: 495} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -709,7 +776,7 @@ MonoBehaviour: - {fileID: 8926484042661615362} - {fileID: 8926484042661614671} - {fileID: 8926484042661615522} - m_UIPosition: {x: 591, y: -423} + m_UIPosition: {x: 761, y: -382} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -810,10 +877,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -1023,7 +1086,7 @@ MonoBehaviour: - {fileID: 8926484042661614654} - {fileID: 8926484042661614659} - {fileID: 8926484042661614656} - m_UIPosition: {x: 383, y: 766} + m_UIPosition: {x: 527, y: 736} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1047,6 +1110,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661614653} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -1398,7 +1462,7 @@ MonoBehaviour: - {fileID: 8926484042661614666} - {fileID: 8926484042661614677} - {fileID: 8926484042661614669} - m_UIPosition: {x: 1063, y: 1467} + m_UIPosition: {x: 1207, y: 1437} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1422,6 +1486,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661614665} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -1970,7 +2035,7 @@ MonoBehaviour: - {fileID: 8926484042661614916} - {fileID: 8926484042661614734} - {fileID: 8926484042661614737} - m_UIPosition: {x: 2742, y: 796} + m_UIPosition: {x: 2397, y: 500} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1994,6 +2059,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661614736} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -2071,7 +2137,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614730} m_Children: [] - m_UIPosition: {x: 2878.6277, y: 1375.1345} + m_UIPosition: {x: 0, y: 101} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2246,7 +2312,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2472, y: 557} + m_UIPosition: {x: 2125, y: 268} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2286,7 +2352,7 @@ MonoBehaviour: - {fileID: 8926484042661615369} - {fileID: 8926484042661615542} - {fileID: 8926484042661615484} - m_UIPosition: {x: 2472, y: -211} + m_UIPosition: {x: 2127, y: -437} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2692,7 +2758,7 @@ MonoBehaviour: - {fileID: 8926484042661615487} - {fileID: 8926484042661614898} - {fileID: 8926484042661614901} - m_UIPosition: {x: 2196, y: 792} + m_UIPosition: {x: 1851, y: 496} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2716,6 +2782,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661614900} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -2793,7 +2860,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614894} m_Children: [] - m_UIPosition: {x: 3030.5989, y: 1413.9896} + m_UIPosition: {x: 0, y: 101} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -2968,7 +3035,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614730} m_Children: [] - m_UIPosition: {x: 0, y: 0} + m_UIPosition: {x: 0, y: 2} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3166,7 +3233,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 363, y: 33} + m_UIPosition: {x: 533, y: 74} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3191,7 +3258,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615225} - m_UIPosition: {x: -2700, y: 58} + m_UIPosition: {x: -579, y: 715} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3247,7 +3314,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615593} - {fileID: 8926484042661615501} - m_UIPosition: {x: -2700, y: 491} + m_UIPosition: {x: -579, y: 1149} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3615,7 +3682,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661615284} - {fileID: 8926484042661615257} - m_UIPosition: {x: -2700, y: 1067} + m_UIPosition: {x: -579, y: 1725} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3642,6 +3709,7 @@ MonoBehaviour: m_SubOutputs: - {fileID: 8926484042661615229} - {fileID: 8926484042661615230} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -4646,7 +4714,7 @@ MonoBehaviour: - {fileID: 8926484042661615428} - {fileID: 8926484042661615430} - {fileID: 8926484042661615437} - m_UIPosition: {x: 617, y: 1467} + m_UIPosition: {x: 761, y: 1437} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4672,6 +4740,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615427} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -5551,7 +5620,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 8926484042661614894} m_Children: [] - m_UIPosition: {x: 2878.6277, y: 1375.1345} + m_UIPosition: {x: 0, y: 2} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6357,7 +6426,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2210, y: 141} + m_UIPosition: {x: 1865, y: -85} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -6978,7 +7047,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 359, y: 1749} + m_UIPosition: {x: 503, y: 1719} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -7612,7 +7681,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2925, y: 786} + m_UIPosition: {x: -804, y: 1443} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -7671,7 +7740,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2878, y: 1386} + m_UIPosition: {x: -757, y: 2043} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -7772,7 +7841,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -3087, y: 1349} + m_UIPosition: {x: -966, y: 2007} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/StripSpawnRate.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/StripSpawnRate.vfx index f4f6d806733..8b584ebb6de 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/StripSpawnRate.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/StripSpawnRate.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: 'Sine Wave Oscillation ' position: serializedVersion: 2 - x: -1082 - y: -597 - width: 1367 - height: 285 + x: -1029 + y: -607 + width: 1371 + height: 286 contents: - model: {fileID: 8926484042661614994} id: 0 @@ -45,10 +45,10 @@ MonoBehaviour: - title: Sine Wave Force position: serializedVersion: 2 - x: -264 - y: 418 - width: 555 - height: 197 + x: -731 + y: 379 + width: 874 + height: 249 contents: - model: {fileID: 8926484042661615172} id: 0 @@ -59,13 +59,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615178} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 - title: Trail position: serializedVersion: 2 - x: 318 - y: -736 - width: 476 - height: 2330 + x: 156 + y: -731 + width: 1047 + height: 2301 contents: - model: {fileID: 8926484042661614854} id: 0 @@ -79,32 +82,54 @@ MonoBehaviour: - model: {fileID: 8926484042661614906} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - model: {fileID: 8926484042661615196} + id: 0 + isStickyNote: 0 stickyNoteInfos: - title: SpawnEventPosition position: serializedVersion: 2 - x: -25 - y: -781 + x: 807 + y: -492 width: 310 height: 159 contents: 'Those operators make an oscillating sine wave over time on the X and Y axes. This results in an animated spawn position that will be used in the Initialize Context. - - As the output of those operations is wired - to a SpawnEvent attribute, all the calculations are evaluated for each frame - on the CPU. + + As the output of those operations is wired to + a SpawnEvent attribute, all the calculations are evaluated for each frame on + the CPU. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Initialize Particle Strip position: serializedVersion: 2 - x: 797 - y: -143 + x: 804 + y: -103 width: 373 height: 159 contents: "First, we\u2019re defining the Strip Capacity and PerStrip count. @@ -112,13 +137,14 @@ MonoBehaviour: is set relatively close to our spawn rate * Lifetime. We usually keep our memory allocation close to our VFX needs.\n\r\nWe can keep the strip index at 0 for all particles as we only want one strip.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 3 - title: Set Position Source position: serializedVersion: 2 - x: -182 - y: 79 + x: 823 + y: 147 width: 308 height: 237 contents: "To retrieve the SpawnEvent Position in the Initialize Context that @@ -128,63 +154,68 @@ MonoBehaviour: Get Position node with its location setting set to \u201CSource.\u201D\r\n \r\n2. We use the Set Position Block and change its location setting to \u201CSource\u201D in the Inspector.\r\n\r\nBoth solutions are presented here, but one is deactivated.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Sine Wave Force position: serializedVersion: 2 - x: -589 - y: 423 + x: -706 + y: 438 width: 308 height: 165 contents: "To achieve subtle and natural motion, we are adding forces in the opposite direction of the traveling SpawnEvent Position.\n\r\nOur Forces are in Sync with the up and down movement of the SpawnPosition because we\u2019re using the same expressions and values as in the SpawnEvent Position.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: UV Mode position: serializedVersion: 2 - x: 780 - y: 917 + x: 803 + y: 842 width: 249 height: 100 contents: "We\u2019re using the \u201CScale and Bias\u201D mode of our UV Mode setting. This allows us to control the tiling scale of our trail texture.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Multiply Size OverLife position: serializedVersion: 2 - x: 777 - y: 1197 + x: 809 + y: 1204 width: 339 height: 126 contents: "This block, thanks to a curve, allows us to control the width of our strip over the Particle\u2019s Lifetime.\n\r\nThis is very practical and gives us remarkable control over the shape of our strip.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Multiply Color OverLife position: serializedVersion: 2 - x: -20 - y: 1425 + x: 815 + y: 1393 width: 339 height: 124 contents: "This block allows us to control the color and alpha of our strip over the Particle\u2019s Lifetime.\n\r\nNote that the block is Set to \u201CMultiply.\u201D This means that we\u2019re multiplying the Previous value that has been set.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -1082 - y: -781 - width: 2252 - height: 2375 + x: -1029 + y: -731 + width: 2232 + height: 2301 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -222,7 +253,7 @@ MonoBehaviour: m_CustomAttributes: [] m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 m_SubgraphDependencies: [] m_CategoryPath: @@ -238,10 +269,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 3 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -266,7 +293,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661614856} - {fileID: 8926484042661614981} - m_UIPosition: {x: 343, y: -677} + m_UIPosition: {x: 365, y: -672} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -414,7 +441,7 @@ MonoBehaviour: - {fileID: 8926484042661614874} - {fileID: 8926484042661615189} - {fileID: 8926484042661614987} - m_UIPosition: {x: 343, y: -171} + m_UIPosition: {x: 365, y: -166} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -879,7 +906,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615165} - m_UIPosition: {x: 343, y: 349} + m_UIPosition: {x: 365, y: 354} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -1205,7 +1232,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1057, y: -415} + m_UIPosition: {x: -1004, y: -424} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -1263,7 +1290,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -269, y: -415} + m_UIPosition: {x: -216, y: -424} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1358,7 +1385,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -853, y: -539} + m_UIPosition: {x: -800, y: -548} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -1494,7 +1521,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -45, y: -499} + m_UIPosition: {x: 8, y: -508} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2005,7 +2032,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -405, y: -539} + m_UIPosition: {x: -352, y: -548} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2100,7 +2127,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -577, y: -539} + m_UIPosition: {x: -524, y: -548} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2236,7 +2263,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -247, y: -539} + m_UIPosition: {x: -194, y: -548} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2377,7 +2404,7 @@ MonoBehaviour: - {fileID: 8926484042661615153} - {fileID: 8926484042661615143} - {fileID: 8926484042661615157} - m_UIPosition: {x: 343, y: 646} + m_UIPosition: {x: 365, y: 651} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -2406,6 +2433,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615142} + useBaseColorMap: 3 colorMapping: 1 uvMode: 3 flipbookLayout: 0 @@ -3553,7 +3581,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -239, y: 481} + m_UIPosition: {x: -385, y: 490} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3610,7 +3638,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -69, y: 477} + m_UIPosition: {x: -215, y: 486} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3705,7 +3733,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 101, y: 477} + m_UIPosition: {x: -45, y: 486} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4074,7 +4102,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 151, y: 82} + m_UIPosition: {x: 181, y: 99} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/TexIndexAdvanced.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/TexIndexAdvanced.vfx index 7fc72dfd636..40fd18701b7 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/TexIndexAdvanced.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/TexIndexAdvanced.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Adjust Time base on Loop Spawntime position: serializedVersion: 2 - x: -2303 - y: -4702 - width: 631 - height: 410 + x: -2232 + y: -4627 + width: 549 + height: 311 contents: - model: {fileID: 8926484042661616693} id: 0 @@ -36,23 +36,6 @@ MonoBehaviour: - model: {fileID: 8926484042661616697} id: 0 isStickyNote: 0 - - title: 0.0-1.0 Particle index - position: - serializedVersion: 2 - x: -2363 - y: -3776 - width: 665 - height: 236 - contents: - - model: {fileID: 8926484042661617858} - id: 0 - isStickyNote: 0 - - model: {fileID: 8926484042661617879} - id: 0 - isStickyNote: 0 - - model: {fileID: 8926484042661617872} - id: 0 - isStickyNote: 0 - title: Size Animation position: serializedVersion: 2 @@ -79,10 +62,10 @@ MonoBehaviour: - title: Brush Stroke position: serializedVersion: 2 - x: -1930 - y: -3172 + x: -1954 + y: -3145 width: 1009 - height: 892 + height: 850 contents: - model: {fileID: 8926484042661616486} id: 0 @@ -90,13 +73,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616376} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 - title: Adjust Time base on Loop Spawntime position: serializedVersion: 2 - x: 1173 - y: -4953 - width: 645 - height: 431 + x: 1157 + y: -4925 + width: 633 + height: 429 contents: - model: {fileID: 8926484042661616755} id: 0 @@ -116,10 +102,10 @@ MonoBehaviour: - title: 'Sequential 3D ' position: serializedVersion: 2 - x: 969 - y: -4322 - width: 870 - height: 208 + x: 761 + y: -4349 + width: 1069 + height: 245 contents: - model: {fileID: 8926484042661617056} id: 0 @@ -133,13 +119,16 @@ MonoBehaviour: - model: {fileID: 8926484042661617129} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 - title: Half Tube Distribution position: serializedVersion: 2 - x: 1537 - y: -4096 - width: 266 - height: 467 + x: 1345 + y: -4081 + width: 473 + height: 505 contents: - model: {fileID: 8926484042661619363} id: 0 @@ -147,13 +136,19 @@ MonoBehaviour: - model: {fileID: 8926484042661619379} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 5 + isStickyNote: 1 - title: Step Noise Animation SIZE position: serializedVersion: 2 - x: 390 - y: -2121 - width: 1405 - height: 252 + x: 95 + y: -2213 + width: 1687 + height: 255 contents: - model: {fileID: 8926484042661616159} id: 0 @@ -185,13 +180,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616230} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 - title: Step Noise Animation position: serializedVersion: 2 - x: -18 - y: -2860 - width: 1744 - height: 656 + x: -3 + y: -2883 + width: 1785 + height: 623 contents: - model: {fileID: 8926484042661616155} id: 0 @@ -235,13 +233,22 @@ MonoBehaviour: - model: {fileID: 8926484042661617843} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 + - model: {fileID: 0} + id: 10 + isStickyNote: 1 + - model: {fileID: 8926484042661618353} + id: 0 + isStickyNote: 0 - title: Sample Texture position: serializedVersion: 2 - x: 1024 - y: -3145 - width: 786 - height: 245 + x: 1021 + y: -3243 + width: 797 + height: 313 contents: - model: {fileID: 8926484042661617238} id: 0 @@ -252,13 +259,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616275} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 - title: 'Particle Offset Animation ' position: serializedVersion: 2 - x: 2963 - y: -3193 - width: 1163 - height: 418 + x: 2983 + y: -3185 + width: 1133 + height: 449 contents: - model: {fileID: 8926484042661618826} id: 0 @@ -287,6 +297,9 @@ MonoBehaviour: - model: {fileID: 8926484042661614985} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 12 + isStickyNote: 1 - title: Animated Noise position: serializedVersion: 2 @@ -330,10 +343,10 @@ MonoBehaviour: - title: Animated Noise position position: serializedVersion: 2 - x: 3311 - y: -2323 - width: 815 - height: 202 + x: 3376 + y: -2315 + width: 781 + height: 193 contents: - model: {fileID: 8926484042661617786} id: 0 @@ -350,10 +363,10 @@ MonoBehaviour: - title: Letter Outputs position: serializedVersion: 2 - x: 4126 - y: -2682 - width: 1431 - height: 940 + x: 4166 + y: -2692 + width: 1432 + height: 909 contents: - model: {fileID: 8926484042661617740} id: 0 @@ -367,10 +380,10 @@ MonoBehaviour: - title: 0-1 Particle Index position: serializedVersion: 2 - x: 3915 - y: -4393 - width: 718 - height: 236 + x: 3597 + y: -4419 + width: 1007 + height: 407 contents: - model: {fileID: 8926484042661614661} id: 0 @@ -381,12 +394,18 @@ MonoBehaviour: - model: {fileID: 8926484042661617727} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 + - model: {fileID: 8926484042661615003} + id: 0 + isStickyNote: 0 - title: Noise Rotation position: serializedVersion: 2 - x: 6677 - y: -3828 - width: 1201 + x: 6678 + y: -3829 + width: 1214 height: 328 contents: - model: {fileID: 8926484042661615519} @@ -407,13 +426,16 @@ MonoBehaviour: - model: {fileID: 8926484042661615508} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 19 + isStickyNote: 1 - title: Rising Cube position: serializedVersion: 2 - x: 7085 - y: -4173 - width: 789 - height: 314 + x: 6989 + y: -4187 + width: 934 + height: 329 contents: - model: {fileID: 8926484042661617989} id: 0 @@ -427,6 +449,9 @@ MonoBehaviour: - model: {fileID: 8926484042661617982} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 20 + isStickyNote: 1 - title: Base Cube Outputs position: serializedVersion: 2 @@ -453,10 +478,10 @@ MonoBehaviour: - title: Animated Noise position: serializedVersion: 2 - x: 12361 - y: -3174 - width: 467 - height: 163 + x: 12465 + y: -3133 + width: 356 + height: 162 contents: - model: {fileID: 8926484042661618927} id: 0 @@ -501,10 +526,10 @@ MonoBehaviour: - title: Size Animation Overlife position: serializedVersion: 2 - x: 9751 - y: -3911 - width: 685 - height: 311 + x: 9725 + y: -3816 + width: 689 + height: 307 contents: - model: {fileID: 8926484042661619008} id: 0 @@ -524,10 +549,10 @@ MonoBehaviour: - title: Lighting Boxes position: serializedVersion: 2 - x: 10065 - y: -3511 + x: 10062 + y: -3497 width: 1248 - height: 685 + height: 689 contents: - model: {fileID: 8926484042661616849} id: 0 @@ -538,10 +563,10 @@ MonoBehaviour: - title: Animated Noise Color position: serializedVersion: 2 - x: 14177 - y: -2516 - width: 773 - height: 220 + x: 14240 + y: -2506 + width: 697 + height: 324 contents: - model: {fileID: 8926484042661618677} id: 0 @@ -558,21 +583,24 @@ MonoBehaviour: - title: Size position: serializedVersion: 2 - x: 14689 - y: -2860 - width: 247 - height: 350 + x: 14425 + y: -2861 + width: 550 + height: 356 contents: - model: {fileID: 8926484042661618719} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 23 + isStickyNote: 1 - title: Animated Noise Angle position: serializedVersion: 2 - x: 14130 - y: -3477 - width: 816 - height: 275 + x: 14281 + y: -3641 + width: 705 + height: 270 contents: - model: {fileID: 8926484042661618567} id: 0 @@ -586,37 +614,222 @@ MonoBehaviour: - model: {fileID: 8926484042661618556} id: 0 isStickyNote: 0 + - title: Initialize + position: + serializedVersion: 2 + x: -2282 + y: -4281 + width: 1375 + height: 771 + contents: + - model: {fileID: 8926484042661616413} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617872} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617879} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617858} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 0 + isStickyNote: 1 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: -1649 + y: -5169 + width: 607 + height: 807 + contents: + - model: {fileID: 8926484042661616669} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 13 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 1797 + y: -5137 + width: 837 + height: 591 + contents: + - model: {fileID: 8926484042661615687} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 14 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 4618 + y: -4607 + width: 909 + height: 653 + contents: + - model: {fileID: 8926484042661614558} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 11 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 4641 + y: -4985 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661614555} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 15 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 7912 + y: -4973 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661615308} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 16 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 10449 + y: -4927 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661616811} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 18 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 10426 + y: -3955 + width: 857 + height: 419 + contents: + - model: {fileID: 8926484042661616847} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 21 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 13066 + y: -3931 + width: 925 + height: 454 + contents: + - model: {fileID: 8926484042661615230} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 26 + isStickyNote: 1 + - title: Dot + position: + serializedVersion: 2 + x: 13067 + y: -4910 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661615223} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 17 + isStickyNote: 1 + - title: Floating Shapes + position: + serializedVersion: 2 + x: 14983 + y: -4493 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661618484} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661618510} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 24 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 14968 + y: -3715 + width: 888 + height: 701 + contents: + - model: {fileID: 8926484042661618502} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 27 + isStickyNote: 1 stickyNoteInfos: - title: Inherit Source lifetime position: serializedVersion: 2 - x: -1217 - y: -4069 + x: -1987 + y: -3999 width: 343 height: 100 contents: "Getting the \u201Csource\u201D attribute gives us the lifetime that has been set during the spawn context." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'TexIndex:' position: serializedVersion: 2 - x: -1216 - y: -3955 - width: 411 - height: 279 + x: -1199 + y: -3953 + width: 267 + height: 115 contents: When spawned, a random value between 0 and 4 is given to the texIndex attribute. This random value determines which brush shape to use in the brush stroke's sprite sheet set in the output context. - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Double Output :' position: serializedVersion: 2 - x: -1895 - y: -2565 + x: -1913 + y: -2472 width: 372 - height: 87 + height: 100 contents: 'Here, each particle is rendered twice. This way, we have two @@ -626,13 +839,14 @@ MonoBehaviour: the first one more visible by contrast. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Sequential 3D position: serializedVersion: 2 - x: 747 - y: -4315 + x: 787 + y: -4290 width: 215 height: 161 contents: 'The Sequential 3D operator is usually used to distribute particles @@ -645,24 +859,26 @@ MonoBehaviour: so that we can reuse it later. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Position Line position: serializedVersion: 2 - x: 1297 - y: -4045 + x: 1371 + y: -3993 width: 220 height: 100 contents: We're using our previously calculated sequential value to distribute the particles on a vertical line. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Circle:' position: serializedVersion: 2 - x: 1269 - y: -3790 + x: 1397 + y: -3825 width: 256 height: 121 contents: 'While our particles are distributed, a lot of them collapse on the @@ -672,26 +888,28 @@ MonoBehaviour: to distribute our particles on the arc''s circle. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Size Animation position: serializedVersion: 2 - x: 151 - y: -2119 + x: 120 + y: -2154 width: 232 height: 157 contents: We're using the time operator and manipulating it to get a stepped animation. The animation is used to sample a value-noise operator. The output noise value is used to drive our size attribute. This adds some life to the particles. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Step Noise Animation:' position: serializedVersion: 2 - x: -9 - y: -2845 + x: 29 + y: -2811 width: 330 height: 122 contents: 'A stepped animation is done thanks to the time operator that is used @@ -702,25 +920,27 @@ MonoBehaviour: color intensity, etc. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Sample Texture:' position: serializedVersion: 2 - x: 765 - y: -3140 + x: 1049 + y: -3184 width: 244 - height: 152 + height: 112 contents: "To sample a texture, we need some 0\u20131 UV coordinates. Fortunately, we already have them thanks to our sequential attribute. So we can use it to sample a Unity logo texture to drive the color of our particles." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 0-1 Line Sequencer position: serializedVersion: 2 - x: 3587 - y: -4380 + x: 3622 + y: -4359 width: 310 height: 218 contents: "Calculating a normalized 0-1 spawnIndex for our particles is often @@ -729,26 +949,28 @@ MonoBehaviour: will range from 0-4.\r\n\r\nNormalize 0-1 spawnIndex= spawn Index / (Number of particles - 1.0) \r\nThis 0-1 value is used in a line sequencer to distribute the particles along the line.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'TexIndex:' position: serializedVersion: 2 - x: 1117 - y: -2795 + x: 1101 + y: -2743 width: 200 height: 126 contents: This stepped animated noise value is used to set the texIndex attribute. This makes the particles change shape randomly in a stepped fashion. - theme: Black + theme: textSize: Small + colorTheme: 3 - title: TexIndex position: serializedVersion: 2 - x: 5073 - y: -4229 - width: 433 - height: 329 + x: 5083 + y: -4135 + width: 419 + height: 119 contents: 'Our U, N, I, T, and Y letters are inside a sprite sheet. We''re @@ -757,13 +979,14 @@ MonoBehaviour: in our Sprite Sheet. ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Offset Animation:' position: serializedVersion: 2 - x: 2963 - y: -3339 + x: 3008 + y: -2991 width: 230 height: 101 contents: 'The spawnIndex is used to delay the start of the size and color attribute @@ -772,98 +995,107 @@ MonoBehaviour: This is what makes each letter appear one after the other. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Brush Strokes position: serializedVersion: 2 - x: -1888 - y: -5013 + x: -1623 + y: -5109 width: 557 height: 107 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Background Pattern position: serializedVersion: 2 - x: 1171 - y: -5097 + x: 1823 + y: -5078 width: 786 height: 107 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Unity Font position: serializedVersion: 2 - x: 4135 - y: -4765 + x: 4620 + y: -5116 width: 456 height: 107 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Cubes position: serializedVersion: 2 - x: 7427 - y: -4769 + x: 7985 + y: -5099 width: 321 height: 107 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: I Dot position: serializedVersion: 2 - x: 12771 - y: -4701 + x: 13261 + y: -5027 width: 259 height: 107 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Lightning position: serializedVersion: 2 - x: 10913 - y: -4797 + x: 10641 + y: -5039 width: 408 height: 107 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Noise Rotation position: serializedVersion: 2 - x: 6480 - y: -3826 + x: 6917 + y: -3627 width: 185 height: 101 contents: Some rotation is added on top of the rotation computed by the update context, thanks to the angular velocity. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Rising Cube position: serializedVersion: 2 - x: 6852 - y: -4173 + x: 7014 + y: -4128 width: 231 height: 128 contents: We're using the age-over-lifetime 0-1 operator to sample a curve. This 0-1 value allows us to interpolate between the VFX origin (0,0,0) and an upper point in space. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'FlipBook Player:' position: serializedVersion: 2 - x: 10910 - y: -3895 - width: 665 - height: 327 + x: 10889 + y: -3811 + width: 369 + height: 141 contents: 'The Flipbook Player allows you to easily animate your flipbook or sprite sheet. @@ -876,8 +1108,9 @@ MonoBehaviour: texIndex += frameRate * delta Time ; ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Double Outputs:' position: serializedVersion: 2 @@ -886,13 +1119,14 @@ MonoBehaviour: width: 213 height: 74 contents: The Lightning particles are rendered twice at two different box positions. - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Probabilty Sampling:' position: serializedVersion: 2 - x: 14395 - y: -2834 + x: 14450 + y: -2791 width: 260 height: 171 contents: 'When using a random number operator, the distribution between the @@ -906,18 +1140,20 @@ MonoBehaviour: etc. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Floating Shapes position: serializedVersion: 2 - x: 15506 - y: -4632 + x: 15131 + y: -5038 width: 671 height: 108 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Global Spawn EVENT position: serializedVersion: 2 @@ -926,15 +1162,16 @@ MonoBehaviour: width: 840 height: 107 contents: - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: 'FlipBook Player:' position: serializedVersion: 2 - x: 13535 - y: -3847 - width: 665 - height: 327 + x: 13523 + y: -3657 + width: 443 + height: 118 contents: 'The Flipbook Player allows you to easily animate your flipbook or sprite sheet. @@ -947,15 +1184,16 @@ MonoBehaviour: texIndex += frameRate * delta Time ; ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'FlipBook Player:' position: serializedVersion: 2 - x: 15467 - y: -3475 - width: 665 - height: 327 + x: 15439 + y: -3454 + width: 392 + height: 123 contents: 'The Flipbook Player allows you to easily animate your flipbook or sprite sheet. @@ -968,15 +1206,16 @@ MonoBehaviour: texIndex += frameRate * delta Time ; ' - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 categories: [] uiBounds: serializedVersion: 2 x: -2602 y: -8727 - width: 18779 - height: 7001 + width: 18759 + height: 6944 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -1156,9 +1395,10 @@ MonoBehaviour: - {fileID: 8926484042661619248} m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 - m_SubgraphDependencies: [] + m_SubgraphDependencies: + - {fileID: 5371698748595113096, guid: bb17265ceda86d449a0a422f4a76645b, type: 3} m_CategoryPath: --- !u!2058629511 &8926484042661614527 VisualEffectResource: @@ -1172,10 +1412,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 0 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 0 m_UpdateMode: 0 m_PreWarmDeltaTime: 0.05 @@ -1238,7 +1474,7 @@ MonoBehaviour: - {fileID: 8926484042661619191} - {fileID: 8926484042661614809} - {fileID: 8926484042661618840} - m_UIPosition: {x: 4641, y: -4545} + m_UIPosition: {x: 4643, y: -4547} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1345,7 +1581,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661614655} - {fileID: 8926484042661614589} - m_UIPosition: {x: 5107, y: -2613} + m_UIPosition: {x: 5147, y: -2623} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1371,6 +1607,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661614590} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -1712,7 +1949,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 2989, y: -2915} + m_UIPosition: {x: 3048, y: -2871} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -1736,7 +1973,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3273, y: -2885} + m_UIPosition: {x: 3287, y: -2846} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -3377,7 +3614,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3041, y: -3073} + m_UIPosition: {x: 3033, y: -3095} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3433,8 +3670,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3457, y: -3005} - m_UICollapsed: 0 + m_UIPosition: {x: 3475, y: -2995} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: - {fileID: 8926484042661614815} @@ -3570,7 +3807,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3637, y: -3005} + m_UIPosition: {x: 3655, y: -2995} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -3969,7 +4206,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3889, y: -2953} + m_UIPosition: {x: 3907, y: -2943} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -4265,7 +4502,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 4363, y: -4039} + m_UIPosition: {x: 4392, y: -4067} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -5073,6 +5310,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615247} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -7674,8 +7912,8 @@ MonoBehaviour: - {fileID: 8926484042661615913} - {fileID: 8926484042661615713} - {fileID: 8926484042661618346} - - {fileID: 8926484042661616171} - {fileID: 8926484042661615991} + - {fileID: 8926484042661616171} m_UIPosition: {x: 1851, y: -3348} m_UICollapsed: 0 m_UISuperCollapsed: 0 @@ -7701,6 +7939,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615709} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -8044,7 +8283,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 815, y: -2473} + m_UIPosition: {x: 830, y: -2495} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -8111,7 +8350,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 416, y: -2059} + m_UIPosition: {x: 382, y: -2147} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -8378,7 +8617,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 631, y: -2399} + m_UIPosition: {x: 646, y: -2421} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -8576,7 +8815,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 957, y: -2513} + m_UIPosition: {x: 972, y: -2535} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -8881,7 +9120,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1341, y: -2623} + m_UIPosition: {x: 1356, y: -2645} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9017,7 +9256,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1522, y: -2623} + m_UIPosition: {x: 1537, y: -2645} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9112,7 +9351,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 331, y: -2399} + m_UIPosition: {x: 346, y: -2421} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -9207,7 +9446,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 475, y: -2399} + m_UIPosition: {x: 490, y: -2421} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -9343,7 +9582,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 175, y: -2399} + m_UIPosition: {x: 190, y: -2421} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -9479,7 +9718,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1470, y: -2056} + m_UIPosition: {x: 1436, y: -2145} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -9782,7 +10021,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1318, y: -2007} + m_UIPosition: {x: 1284, y: -2095} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -9814,7 +10053,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 602, y: -1983} + m_UIPosition: {x: 568, y: -2071} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -9881,7 +10120,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1534, y: -3087} + m_UIPosition: {x: 1531, y: -3074} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9942,7 +10181,7 @@ MonoBehaviour: - {fileID: 8926484042661616278} - {fileID: 8926484042661616279} m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 0 + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_MasterSlot: {fileID: 8926484042661616277} m_MasterData: @@ -10081,7 +10320,7 @@ MonoBehaviour: - {fileID: 8926484042661616284} - {fileID: 8926484042661616285} m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 0 + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_MasterSlot: {fileID: 8926484042661616281} m_MasterData: @@ -10452,7 +10691,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661616805} - {fileID: 8926484042661616395} - m_UIPosition: {x: -1905, y: -3113} + m_UIPosition: {x: -1929, y: -3065} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -10478,6 +10717,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616382} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -10640,7 +10880,7 @@ MonoBehaviour: - {fileID: 8926484042661616603} - {fileID: 8926484042661616993} - {fileID: 8926484042661619299} - m_UIPosition: {x: -1646, y: -4212} + m_UIPosition: {x: -1637, y: -4221} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -11361,7 +11601,7 @@ MonoBehaviour: - {fileID: 8926484042661616530} - {fileID: 8926484042661616510} - {fileID: 8926484042661616517} - m_UIPosition: {x: -1372, y: -3101} + m_UIPosition: {x: -1395, y: -3086} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -11387,6 +11627,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616497} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -12170,7 +12411,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661616718} - {fileID: 8926484042661616674} - m_UIPosition: {x: -1646, y: -4833} + m_UIPosition: {x: -1580, y: -4831} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -12323,7 +12564,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2266, y: -4476} + m_UIPosition: {x: -2207, y: -4473} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -12762,7 +13003,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2277, y: -4643} + m_UIPosition: {x: -2207, y: -4568} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -12856,7 +13097,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2062, y: -4563} + m_UIPosition: {x: -2046, y: -4567} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -12993,7 +13234,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1852, y: -4525} + m_UIPosition: {x: -1851, y: -4515} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13130,7 +13371,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2062, y: -4397} + m_UIPosition: {x: -2006, y: -4419} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13540,7 +13781,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1198, y: -4894} + m_UIPosition: {x: 1182, y: -4866} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13634,7 +13875,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1637, y: -4721} + m_UIPosition: {x: 1621, y: -4693} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13771,7 +14012,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1384, y: -4841} + m_UIPosition: {x: 1368, y: -4813} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13908,7 +14149,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1410, y: -4627} + m_UIPosition: {x: 1394, y: -4599} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -14002,7 +14243,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1208, y: -4742} + m_UIPosition: {x: 1192, y: -4714} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -15355,7 +15596,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661619331} - {fileID: 8926484042661616853} - m_UIPosition: {x: 10091, y: -3452} + m_UIPosition: {x: 10087, y: -3437} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -15380,6 +15621,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616855} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -15602,7 +15844,7 @@ MonoBehaviour: m_Children: - {fileID: 8926484042661619347} - {fileID: 8926484042661616980} - m_UIPosition: {x: 10863, y: -3428} + m_UIPosition: {x: 10859, y: -3413} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -15627,6 +15869,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661616945} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -16173,7 +16416,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1258, y: -4263} + m_UIPosition: {x: 1279, y: -4261} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -17193,7 +17436,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1082, y: -4219} + m_UIPosition: {x: 1103, y: -4217} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -17288,7 +17531,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 994, y: -4263} + m_UIPosition: {x: 1015, y: -4261} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -17312,7 +17555,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1537, y: -4219} + m_UIPosition: {x: 1558, y: -4217} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -17681,7 +17924,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1275, y: -3067} + m_UIPosition: {x: 1272, y: -3054} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -18769,7 +19012,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1117, y: -2063} + m_UIPosition: {x: 1083, y: -2151} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -19006,7 +19249,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 804, y: -1983} + m_UIPosition: {x: 770, y: -2071} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -19237,7 +19480,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 972, y: -1925} + m_UIPosition: {x: 938, y: -2013} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -19269,7 +19512,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 426, y: -1925} + m_UIPosition: {x: 392, y: -2013} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -19809,7 +20052,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1137, y: -1939} + m_UIPosition: {x: 1103, y: -2027} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: @@ -21660,7 +21903,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3239, y: -3093} + m_UIPosition: {x: 3257, y: -3083} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -21801,7 +22044,7 @@ MonoBehaviour: - {fileID: 8926484042661617924} - {fileID: 8926484042661617763} - {fileID: 8926484042661617778} - m_UIPosition: {x: 4151, y: -2623} + m_UIPosition: {x: 4191, y: -2633} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -21827,6 +22070,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661617752} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -22284,7 +22528,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3337, y: -2265} + m_UIPosition: {x: 3401, y: -2240} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -23658,7 +23902,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 7, y: -2399} + m_UIPosition: {x: 22, y: -2421} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -23987,7 +24231,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2338, y: -3717} + m_UIPosition: {x: -2257, y: -3731} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -24011,7 +24255,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -2060, y: -3685} + m_UIPosition: {x: -2051, y: -3695} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -24141,7 +24385,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1878, y: -3685} + m_UIPosition: {x: -1869, y: -3695} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -24281,7 +24525,7 @@ MonoBehaviour: - {fileID: 8926484042661617945} - {fileID: 8926484042661617942} - {fileID: 8926484042661617922} - m_UIPosition: {x: 4657, y: -2613} + m_UIPosition: {x: 4697, y: -2623} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -24307,6 +24551,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661617896} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -25766,7 +26011,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 7608, y: -4088} + m_UIPosition: {x: 7589, y: -4085} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -25832,7 +26077,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 7111, y: -3968} + m_UIPosition: {x: 7092, y: -3965} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -25888,7 +26133,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 7315, y: -3984} + m_UIPosition: {x: 7296, y: -3981} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -26015,7 +26260,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 7334, y: -4114} + m_UIPosition: {x: 7315, y: -4111} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -27172,6 +27417,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661618154} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -27627,6 +27873,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661618186} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -28764,8 +29011,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1597, y: -1840} - m_UICollapsed: 0 + m_UIPosition: {x: 1561, y: -2358} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] m_OutputSlots: @@ -28788,8 +29035,8 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1144, y: -2343} - m_UICollapsed: 0 + m_UIPosition: {x: 1269, y: -2441} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] m_OutputSlots: @@ -28812,7 +29059,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1436, y: -2369} + m_UIPosition: {x: 1477, y: -2525} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -28883,7 +29130,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1338, y: -2801} + m_UIPosition: {x: 1353, y: -2823} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -28978,7 +29225,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1546, y: -2781} + m_UIPosition: {x: 1561, y: -2803} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -29237,6 +29484,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661618404} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -31155,6 +31403,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661618528} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -31406,7 +31655,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 14155, y: -3419} + m_UIPosition: {x: 14307, y: -3582} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -31430,7 +31679,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 14437, y: -3377} + m_UIPosition: {x: 14589, y: -3540} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -31567,7 +31816,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 14620, y: -3377} + m_UIPosition: {x: 14772, y: -3540} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -31939,7 +32188,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 14191, y: -3307} + m_UIPosition: {x: 14343, y: -3470} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -33315,9 +33564,9 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 14202, y: -2457} - m_UICollapsed: 0 - m_UISuperCollapsed: 1 + m_UIPosition: {x: 14265, y: -2447} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 m_InputSlots: [] m_OutputSlots: - {fileID: 8926484042661619550} @@ -33720,7 +33969,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: [] m_UIPosition: {x: 14624, y: -2442} - m_UICollapsed: 1 + m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: - {fileID: 8926484042661618697} @@ -34323,7 +34572,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 14715, y: -2801} + m_UIPosition: {x: 14723, y: -2801} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -35842,7 +36091,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3877, y: -3105} + m_UIPosition: {x: 3895, y: -3095} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -35970,7 +36219,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 3635, y: -3135} + m_UIPosition: {x: 3653, y: -3125} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -37091,7 +37340,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 6564, y: -2771} + m_UIPosition: {x: 6695, y: -2771} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -37463,7 +37712,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 6403, y: -2771} + m_UIPosition: {x: 6535, y: -2771} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -37730,7 +37979,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 12503, y: -3115} + m_UIPosition: {x: 12606, y: -3074} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -38102,7 +38351,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 12387, y: -3073} + m_UIPosition: {x: 12490, y: -3032} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -38751,7 +39000,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 9777, y: -3852} + m_UIPosition: {x: 9751, y: -3757} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -38845,7 +39094,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 10005, y: -3830} + m_UIPosition: {x: 9979, y: -3735} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -38973,7 +39222,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 9793, y: -3770} + m_UIPosition: {x: 9767, y: -3675} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -39029,7 +39278,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 10253, y: -3790} + m_UIPosition: {x: 10227, y: -3695} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -39166,7 +39415,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 10027, y: -3703} + m_UIPosition: {x: 10001, y: -3608} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -39398,6 +39647,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661619138} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -39638,6 +39888,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661619160} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -46710,7 +46961,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1563, y: -4037} + m_UIPosition: {x: 1611, y: -4023} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -46837,7 +47088,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 509, y: -2525} + m_UIPosition: {x: 608, y: -2572} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -46964,7 +47215,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 869, y: -2063} + m_UIPosition: {x: 835, y: -2151} m_UICollapsed: 0 m_UISuperCollapsed: 1 m_InputSlots: [] @@ -47091,7 +47342,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1049, y: -3069} + m_UIPosition: {x: 1046, y: -3056} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -47218,7 +47469,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1571, y: -3733} + m_UIPosition: {x: 1575, y: -3675} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] diff --git a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/TriggerEventCollide.vfx b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/TriggerEventCollide.vfx index 074a9e54046..af61f0c5798 100644 --- a/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/TriggerEventCollide.vfx +++ b/Packages/com.unity.visualeffectgraph/Samples~/VFXLearningTemplates/VFX/TriggerEventCollide.vfx @@ -16,10 +16,10 @@ MonoBehaviour: - title: Flying Darts position: serializedVersion: 2 - x: -367 - y: -969 - width: 711 - height: 2997 + x: -214 + y: -1645 + width: 1355 + height: 3212 contents: - model: {fileID: 8926484042661614558} id: 0 @@ -33,19 +33,46 @@ MonoBehaviour: - model: {fileID: 8926484042661614555} id: 0 isStickyNote: 0 - - model: {fileID: 8926484042661614920} + - model: {fileID: 0} id: 0 - isStickyNote: 0 + isStickyNote: 1 + - model: {fileID: 0} + id: 2 + isStickyNote: 1 + - model: {fileID: 0} + id: 1 + isStickyNote: 1 + - model: {fileID: 0} + id: 3 + isStickyNote: 1 + - model: {fileID: 0} + id: 6 + isStickyNote: 1 + - model: {fileID: 0} + id: 4 + isStickyNote: 1 + - model: {fileID: 0} + id: 7 + isStickyNote: 1 - model: {fileID: 8926484042661615156} id: 0 isStickyNote: 0 + - model: {fileID: 8926484042661617531} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617536} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 22 + isStickyNote: 1 - title: Dart / DartBoard Distance Compare position: serializedVersion: 2 - x: -1257 - y: 842 - width: 1149 - height: 380 + x: -1668 + y: 239 + width: 1442 + height: 454 contents: - model: {fileID: 8926484042661616141} id: 0 @@ -62,41 +89,19 @@ MonoBehaviour: - model: {fileID: 8926484042661616091} id: 0 isStickyNote: 0 - - title: Orient Velocity - position: - serializedVersion: 2 - x: -550 - y: 1729 - width: 444 - height: 163 - contents: - - model: {fileID: 8926484042661614694} - id: 0 - isStickyNote: 0 - - model: {fileID: 8926484042661614699} - id: 0 - isStickyNote: 0 - - title: Position - position: - serializedVersion: 2 - x: 1482 - y: 1863 - width: 353 - height: 274 - contents: - - model: {fileID: 8926484042661615181} - id: 0 - isStickyNote: 0 - - model: {fileID: 8926484042661617411} + - model: {fileID: 0} + id: 5 + isStickyNote: 1 + - model: {fileID: 8926484042661614920} id: 0 isStickyNote: 0 - title: Spring Rotation position: serializedVersion: 2 - x: 886 - y: 2948 - width: 833 - height: 520 + x: 884 + y: 2877 + width: 837 + height: 585 contents: - model: {fileID: 8926484042661616800} id: 0 @@ -122,13 +127,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616751} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 12 + isStickyNote: 1 - title: Color position: serializedVersion: 2 - x: 5912 - y: 2139 - width: 1015 - height: 401 + x: 5721 + y: 2137 + width: 1209 + height: 399 contents: - model: {fileID: 8926484042661617052} id: 0 @@ -151,13 +159,16 @@ MonoBehaviour: - model: {fileID: 8926484042661617034} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 15 + isStickyNote: 1 - title: Pivot position: serializedVersion: 2 - x: 7379 - y: 3511 - width: 668 - height: 256 + x: 7380 + y: 3509 + width: 635 + height: 379 contents: - model: {fileID: 8926484042661617084} id: 0 @@ -168,13 +179,16 @@ MonoBehaviour: - model: {fileID: 8926484042661617095} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 19 + isStickyNote: 1 - title: Sin Wave Size position: serializedVersion: 2 - x: 5474 - y: 3031 - width: 649 - height: 388 + x: 5223 + y: 3029 + width: 904 + height: 386 contents: - model: {fileID: 8926484042661615866} id: 0 @@ -191,13 +205,16 @@ MonoBehaviour: - model: {fileID: 8926484042661616520} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 16 + isStickyNote: 1 - title: Tex Index & Distance position: serializedVersion: 2 - x: 6058 - y: 1741 - width: 855 - height: 329 + x: 5739 + y: 1701 + width: 1161 + height: 365 contents: - model: {fileID: 8926484042661616905} id: 0 @@ -211,13 +228,16 @@ MonoBehaviour: - model: {fileID: 8926484042661617086} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 14 + isStickyNote: 1 - title: Radial Velocity position: serializedVersion: 2 x: 6059 - y: 1408 - width: 854 - height: 337 + y: 1363 + width: 857 + height: 375 contents: - model: {fileID: 8926484042661616217} id: 0 @@ -231,13 +251,16 @@ MonoBehaviour: - model: {fileID: 8926484042661617172} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 13 + isStickyNote: 1 - title: Alive position: serializedVersion: 2 - x: 7598 - y: 3297 - width: 455 - height: 198 + x: 7595 + y: 3143 + width: 464 + height: 286 contents: - model: {fileID: 8926484042661616595} id: 0 @@ -245,13 +268,16 @@ MonoBehaviour: - model: {fileID: 8926484042661617401} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 18 + isStickyNote: 1 - title: Distance Modulation position: serializedVersion: 2 - x: 6376 + x: 6275 y: 3941 - width: 533 - height: 432 + width: 625 + height: 430 contents: - model: {fileID: 8926484042661616958} id: 0 @@ -265,13 +291,16 @@ MonoBehaviour: - model: {fileID: 8926484042661617407} id: 0 isStickyNote: 0 + - model: {fileID: 0} + id: 20 + isStickyNote: 1 - title: Pivot position: serializedVersion: 2 - x: 6020 - y: 3559 - width: 895 - height: 376 + x: 5696 + y: 3557 + width: 1223 + height: 374 contents: - model: {fileID: 8926484042661617125} id: 0 @@ -294,69 +323,123 @@ MonoBehaviour: - model: {fileID: 8926484042661617148} id: 0 isStickyNote: 0 - stickyNoteInfos: - - title: Flying Darts + - model: {fileID: 0} + id: 21 + isStickyNote: 1 + - title: position: serializedVersion: 2 - x: -143 - y: -1089 - width: 475 + x: 1842 + y: 1032 + width: 100 height: 100 - contents: type something here - theme: Black - textSize: Huge + contents: + - model: {fileID: 8926484042661614715} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 11 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 1137 + y: 1313 + width: 1547 + height: 820 + contents: + - model: {fileID: 8926484042661614733} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661614865} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661615181} + id: 0 + isStickyNote: 0 + - model: {fileID: 8926484042661617411} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 8 + isStickyNote: 1 + - model: {fileID: 0} + id: 9 + isStickyNote: 1 + - model: {fileID: 0} + id: 10 + isStickyNote: 1 + - title: + position: + serializedVersion: 2 + x: 6933 + y: 939 + width: 100 + height: 100 + contents: + - model: {fileID: 8926484042661615780} + id: 0 + isStickyNote: 0 + - model: {fileID: 0} + id: 17 + isStickyNote: 1 + stickyNoteInfos: - title: 'Init Dart Throw Area:' position: serializedVersion: 2 - x: -355 - y: -177 + x: 13 + y: -604 width: 221 height: 100 contents: "The \u201Cset position shape circle\u201D block is used to establish the initial position of the dart particles. \r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Velocity Random position: serializedVersion: 2 - x: 352 - y: 26 + x: 705 + y: -476 width: 250 height: 100 contents: "The \u201Cset velocity\u201D block in the 'initiate context' sets a start velocity to propel the dart into the dartboard's direction." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Angle.Z Random position: serializedVersion: 2 - x: -376 - y: 145 + x: -5 + y: -389 width: 250 height: 100 contents: "Randomizing the angle.Z makes each dart\u2019s particles start with a random rotation on their Z axis. This adds more visual variety.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Random Color from Gradient position: serializedVersion: 2 - x: 351 - y: 338 + x: 697 + y: -173 width: 289 height: 142 contents: "Getting random colors from gradients is a nice way of directing the colors of particles.\r\nWe're using the \u201CFixed\u201D setting to make sure that no interpolation is done between the different colors.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Kill/Collide with Cone:' position: serializedVersion: 2 - x: -827 - y: 337 - width: 713 - height: 453 + x: -189 + y: 86 + width: 369 + height: 196 contents: "The new 'collide shape' block allows you to choose which shape you want to collide with and the collision response. \n\nIn the Inspector, you\u2019ll find a behavior setting that lets you either: collide, kill, or trigger.\n\r\nIn @@ -364,13 +447,14 @@ MonoBehaviour: is detected. Furthermore, we are \u201Cwriting collision attributes.\u201D\r\n\r\nIt is imperative to activate this option to utilize the \"trigger event on collision\" block, which will generate particles upon collision. \r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 2 - title: 'Distance Compare:' position: serializedVersion: 2 - x: -1581 - y: 867 + x: -1643 + y: 392 width: 314 height: 276 contents: "We're comparing the two-dimensional distance between the particle's @@ -382,40 +466,43 @@ MonoBehaviour: location. We animate the dart orientation to add some springy motion.\r\n\r\nIf the dart is scoring, we use another event to spawn some particles that will display the dart score. \r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Trigger On Collide :' position: serializedVersion: 2 - x: 327 - y: 819 - width: 678 - height: 400 + x: 741 + y: 382 + width: 375 + height: 178 contents: "\u201CTriggers on collide\u201D is a new feature that lets you spawn particles upon collision.\n\r\nWhen a particle collides, it makes a new particle.\r\nThis way, we can have dart mesh particles spawned at the impact collision and easily add a springy motion over the lifetime of the particle.\n\r\nThe second trigger is here to spawn the score, depending on where the dart has collided.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: Orient Velocity position: serializedVersion: 2 - x: -881 - y: 1724 + x: -131 + y: 1208 width: 327 - height: 113 + height: 102 contents: "It's pretty common to use \u201Corient along velocity\u201D, so that particles align with the velocity vector. This mode remains dependent on the camera plane, resulting in the particles attempting to face it. We don't want this, so we're using the advanced mode.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: 'Inherit Source:' position: serializedVersion: 2 - x: 2273 - y: 1574 + x: 2283 + y: 1576 width: 375 height: 147 contents: "To \u201Cinherit\u201D the source attribute, just select a set attribute @@ -423,27 +510,29 @@ MonoBehaviour: of \u201Cslot.\u201D\r\n\r\nThis will inherit the source attribute value. The source value can come from a parent's particle or from values set in the \u201Cspawn context.\u201D\r\n" - theme: Black + theme: textSize: Small + colorTheme: 3 - title: 'Inherit Attributes:' position: serializedVersion: 2 - x: 1237 - y: 1349 - width: 585 - height: 345 + x: 1527 + y: 1430 + width: 278 + height: 158 contents: "We get the parent \u201Csource\u201D color, so that the spawned darts inherit it.\r\nWe are getting the source velocity that is used to set the direction attribute values. The parent's velocity lets us correctly orient the spawned darts.\r\nTo finish, we are also inheriting the \u201Cangle.Z\u201D attribute so that the rotation is the same as their parents.\r\n" - theme: Black - textSize: Medium + theme: + textSize: Small + colorTheme: 3 - title: 'Position/Collision Precision:' position: serializedVersion: 2 - x: 977 - y: 1866 + x: 1162 + y: 1636 width: 479 height: 269 contents: "When dealing with colliders, sometimes we can have some precision @@ -456,8 +545,9 @@ MonoBehaviour: by a random number.\r\nThis way, we can be certain that they are always inside the dartboard, not too deep or floating.\r\n\r\nWe could also use the velocity magnitude to change how deep the dart goes in the darting board. \r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Collide Spring Darts position: serializedVersion: 2 @@ -466,15 +556,16 @@ MonoBehaviour: width: 793 height: 100 contents: type something here - theme: Black + theme: textSize: Huge + colorTheme: 2 - title: Spring Rotation position: serializedVersion: 2 - x: 597 - y: 2941 + x: 909 + y: 2937 width: 281 - height: 235 + height: 257 contents: 'We want to create an oscillating spring rotation and exaggerate this motion, as we can sometimes see in cartoons. @@ -499,13 +590,14 @@ MonoBehaviour: ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Radial Velocity position: serializedVersion: 2 - x: 5834 - y: 1511 + x: 6088 + y: 1422 width: 222 height: 128 contents: 'Using the particle''s position as a velocity vector, give some radial @@ -515,13 +607,14 @@ MonoBehaviour: the score from hiding the dart by being rendered on top of it. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Tex Index & Distance position: serializedVersion: 2 - x: 5757 - y: 1800 + x: 5765 + y: 1760 width: 296 height: 279 contents: 'Our particles'' positions are distributed in a 1-unit circle (the @@ -550,13 +643,14 @@ MonoBehaviour: the dart is in an X3 multiplier case. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Color position: serializedVersion: 2 - x: 5573 - y: 2141 + x: 5747 + y: 2233 width: 335 height: 156 contents: 'To set the color, we''re sampling a color gradient curve divided into @@ -570,13 +664,14 @@ MonoBehaviour: create a brief color flash when the particles are born. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Sin Wave Size position: serializedVersion: 2 - x: 5187 - y: 3032 + x: 5249 + y: 3089 width: 286 height: 157 contents: 'The size of the particles is being modulated using the multipliers @@ -589,75 +684,92 @@ MonoBehaviour: a vibrant look, the size is multiplied by a high-frequency sine wave. ' - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Score UI System position: serializedVersion: 2 - x: 6827 + x: 6829 y: 847 width: 672 height: 100 - contents: type something here - theme: Black + contents: Dart Score UI + theme: textSize: Huge + colorTheme: 2 - title: Alive position: serializedVersion: 2 - x: 7595 - y: 3178 + x: 7856 + y: 3202 width: 177 height: 110 contents: "Here the remapped distance goes thought a ceil operator. This way, this output is \u201Calive\u201D only if it's a x2 or x3 score." - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Pivot position: serializedVersion: 2 - x: 7391 - y: 3774 + x: 7405 + y: 3699 width: 214 height: 164 contents: "We're getting the texIndex attribute and comparing it to 8. \nIf the texIndex exceeds 8, it means that the score is a double-digit (10 and superior). \n\nBased on this, we're offsetting slightly more the multiplier sign on the right.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Distance Modulation position: serializedVersion: 2 - x: 6183 - y: 3946 + x: 6300 + y: 4008 width: 303 height: 157 contents: "Our custom \u201CDistance\u201D attribute is used to scale the size of the multiplier digit based on whether it's a x2 or x3 score. \n\nIf it\u2019s not an X2 or X3, we're killing the render by setting the Alive attribute to false.\r\n\nThis will help us to choose the proper texIndex value of 2 or 3.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 - title: Pivot position: serializedVersion: 2 - x: 6017 - y: 3434 + x: 5721 + y: 3738 width: 324 height: 125 contents: "We're getting the texIndex attribute and comparing it to 8. If the texIndex exceeds 8, it means that the score is a double-digit (10 and superior). \n\nBased on this, we're offsetting slightly more the multiplier sign on the right.\r\n" - theme: Black + theme: textSize: Small + colorTheme: 2 + - title: Flying Darts + position: + serializedVersion: 2 + x: 219 + y: -1586 + width: 493 + height: 121 + contents: + theme: + textSize: Huge + colorTheme: 2 categories: [] uiBounds: serializedVersion: 2 - x: -1581 - y: -1089 - width: 10081 - height: 5460 + x: -1668 + y: -1645 + width: 10169 + height: 6016 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -677,8 +789,6 @@ MonoBehaviour: - {fileID: 8926484042661614558} - {fileID: 8926484042661614583} - {fileID: 8926484042661617236} - - {fileID: 8926484042661614694} - - {fileID: 8926484042661614699} - {fileID: 8926484042661614715} - {fileID: 8926484042661614733} - {fileID: 8926484042661614783} @@ -745,6 +855,8 @@ MonoBehaviour: - {fileID: 8926484042661617162} - {fileID: 8926484042661617172} - {fileID: 8926484042661617411} + - {fileID: 8926484042661617531} + - {fileID: 8926484042661617536} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 @@ -753,9 +865,10 @@ MonoBehaviour: - {fileID: 8926484042661617380} m_ParameterInfo: [] m_ImportDependencies: [] - m_GraphVersion: 18 + m_GraphVersion: 19 m_ResourceVersion: 1 - m_SubgraphDependencies: [] + m_SubgraphDependencies: + - {fileID: 5371698745253816930, guid: 5b6fe6e71206bd442b856da3b9628b35, type: 3} m_CategoryPath: --- !u!2058629511 &8926484042661614527 VisualEffectResource: @@ -769,10 +882,6 @@ VisualEffectResource: m_RendererSettings: motionVectorGenerationMode: 1 shadowCastingMode: 1 - rayTracingMode: 0 - receiveShadows: 0 - reflectionProbeUsage: 0 - lightProbeUsage: 0 m_CullingFlags: 0 m_UpdateMode: 4 m_PreWarmDeltaTime: 0.05 @@ -796,7 +905,7 @@ MonoBehaviour: m_Parent: {fileID: 114350483966674976} m_Children: - {fileID: 8926484042661615169} - m_UIPosition: {x: -107, y: -911} + m_UIPosition: {x: 253, y: -1452} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -835,7 +944,7 @@ MonoBehaviour: - {fileID: 8926484042661615134} - {fileID: 8926484042661614580} - {fileID: 8926484042661615153} - m_UIPosition: {x: -107, y: -380} + m_UIPosition: {x: 253, y: -914} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -1603,7 +1712,7 @@ MonoBehaviour: - {fileID: 8926484042661617318} - {fileID: 8926484042661617341} - {fileID: 8926484042661617345} - m_UIPosition: {x: -107, y: 592} + m_UIPosition: {x: 253, y: 52} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -1939,7 +2048,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661614694 +--- !u!114 &8926484042661614715 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1948,22 +2057,62 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 486e063e1ed58c843942ea4122829ab1, type: 3} + m_Script: {fileID: 11500000, guid: f42a6449da2296343af0d8536de8588a, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -525, y: 1788} + m_UIPosition: {x: 1842, y: 1032} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661614716} + m_OutputSlots: [] + m_Label: + m_Data: {fileID: 8926484042661614717} + m_InputFlowSlot: + - link: [] + m_OutputFlowSlot: + - link: + - context: {fileID: 8926484042661614733} + slotIndex: 0 +--- !u!114 &8926484042661614716 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1b605c022ee79394a8a776c0869b3f9a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_InputSlots: [] - m_OutputSlots: - - {fileID: 8926484042661617484} - attribute: velocity - location: 0 - mask: xyz ---- !u!114 &8926484042661614699 + m_MasterSlot: {fileID: 8926484042661614716} + m_MasterData: + m_Owner: {fileID: 8926484042661614715} + m_Value: + m_Type: + m_SerializableType: UnityEditor.VFX.GPUEvent, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{}' + m_Space: -1 + m_Property: + name: evt + m_serializedType: + m_SerializableType: UnityEditor.VFX.GPUEvent, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: + - {fileID: 8926484042661617347} +--- !u!114 &8926484042661614717 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -1972,30 +2121,55 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b8ee8a7543fa09e42a7c8616f60d2ad7, type: 3} + m_Script: {fileID: 11500000, guid: f68759077adc0b143b6e1c101e82065e, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} + m_Parent: {fileID: 0} m_Children: [] - m_UIPosition: {x: -287, y: 1829} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + title: + m_Owners: + - {fileID: 8926484042661614715} +--- !u!114 &8926484042661614733 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9dfea48843f53fc438eabc12a3a30abc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: + - {fileID: 8926484042661615161} + - {fileID: 8926484042661615148} + - {fileID: 8926484042661614858} + - {fileID: 8926484042661614779} + - {fileID: 8926484042661616742} + m_UIPosition: {x: 1852, y: 1372} m_UICollapsed: 0 - m_UISuperCollapsed: 1 + m_UISuperCollapsed: 0 m_InputSlots: - - {fileID: 8926484042661614703} - - {fileID: 8926484042661614701} - m_OutputSlots: - - {fileID: 8926484042661614707} - m_Operands: - - name: a - type: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - - name: b - type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 ---- !u!114 &8926484042661614701 + - {fileID: 8926484042661614734} + m_OutputSlots: [] + m_Label: + m_Data: {fileID: 8926484042661614747} + m_InputFlowSlot: + - link: + - context: {fileID: 8926484042661614715} + slotIndex: 0 + m_OutputFlowSlot: + - link: + - context: {fileID: 8926484042661614783} + slotIndex: 0 +--- !u!114 &8926484042661614734 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2004,32 +2178,34 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Script: {fileID: 11500000, guid: 1b605c022ee79394a8a776c0869b3f9a, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] m_Parent: {fileID: 0} - m_Children: [] + m_Children: + - {fileID: 8926484042661614735} + - {fileID: 8926484042661614739} m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 + m_UICollapsed: 0 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614701} + m_MasterSlot: {fileID: 8926484042661614734} m_MasterData: - m_Owner: {fileID: 8926484042661614699} + m_Owner: {fileID: 8926484042661614733} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: -1 - m_Space: -1 + m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"center":{"x":0.0,"y":0.0,"z":0.0},"size":{"x":2.0,"y":2.0,"z":2.0}}' + m_Space: 0 m_Property: - name: b + name: bounds m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 + m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661614703 +--- !u!114 &8926484042661614735 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2042,32 +2218,30 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 8926484042661614734} m_Children: - - {fileID: 8926484042661614704} - - {fileID: 8926484042661614705} - - {fileID: 8926484042661614706} + - {fileID: 8926484042661614736} + - {fileID: 8926484042661614737} + - {fileID: 8926484042661614738} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614703} + m_MasterSlot: {fileID: 8926484042661614734} m_MasterData: - m_Owner: {fileID: 8926484042661614699} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"x":1.0399999618530274,"y":1.0,"z":1.0}' + m_SerializableType: + m_SerializableObject: m_Space: -1 m_Property: - name: a + name: center m_serializedType: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661617484} ---- !u!114 &8926484042661614704 + m_LinkedSlots: [] +--- !u!114 &8926484042661614736 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2080,12 +2254,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614703} + m_Parent: {fileID: 8926484042661614735} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614703} + m_MasterSlot: {fileID: 8926484042661614734} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -2100,7 +2274,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661614705 +--- !u!114 &8926484042661614737 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2113,12 +2287,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614703} + m_Parent: {fileID: 8926484042661614735} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614703} + m_MasterSlot: {fileID: 8926484042661614734} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -2133,7 +2307,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661614706 +--- !u!114 &8926484042661614738 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2146,12 +2320,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614703} + m_Parent: {fileID: 8926484042661614735} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614703} + m_MasterSlot: {fileID: 8926484042661614734} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -2166,7 +2340,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661614707 +--- !u!114 &8926484042661614739 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2179,32 +2353,30 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 8926484042661614734} m_Children: - - {fileID: 8926484042661614708} - - {fileID: 8926484042661614709} - - {fileID: 8926484042661614710} + - {fileID: 8926484042661614740} + - {fileID: 8926484042661614741} + - {fileID: 8926484042661614742} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614707} + m_MasterSlot: {fileID: 8926484042661614734} m_MasterData: - m_Owner: {fileID: 8926484042661614699} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null + m_SerializableType: m_SerializableObject: m_Space: -1 m_Property: - name: + name: size m_serializedType: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661617238} ---- !u!114 &8926484042661614708 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661614740 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2217,12 +2389,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614707} + m_Parent: {fileID: 8926484042661614739} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614707} + m_MasterSlot: {fileID: 8926484042661614734} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -2235,9 +2407,9 @@ MonoBehaviour: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 + m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661614709 +--- !u!114 &8926484042661614741 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2250,12 +2422,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614707} + m_Parent: {fileID: 8926484042661614739} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614707} + m_MasterSlot: {fileID: 8926484042661614734} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -2268,9 +2440,9 @@ MonoBehaviour: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 + m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661614710 +--- !u!114 &8926484042661614742 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -2283,12 +2455,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614707} + m_Parent: {fileID: 8926484042661614739} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614707} + m_MasterSlot: {fileID: 8926484042661614734} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -2301,436 +2473,9 @@ MonoBehaviour: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 + m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661614715 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f42a6449da2296343af0d8536de8588a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} - m_Children: [] - m_UIPosition: {x: 1842, y: 1032} - m_UICollapsed: 0 - m_UISuperCollapsed: 0 - m_InputSlots: - - {fileID: 8926484042661614716} - m_OutputSlots: [] - m_Label: - m_Data: {fileID: 8926484042661614717} - m_InputFlowSlot: - - link: [] - m_OutputFlowSlot: - - link: - - context: {fileID: 8926484042661614733} - slotIndex: 0 ---- !u!114 &8926484042661614716 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1b605c022ee79394a8a776c0869b3f9a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614716} - m_MasterData: - m_Owner: {fileID: 8926484042661614715} - m_Value: - m_Type: - m_SerializableType: UnityEditor.VFX.GPUEvent, Unity.VisualEffectGraph.Editor, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{}' - m_Space: -1 - m_Property: - name: evt - m_serializedType: - m_SerializableType: UnityEditor.VFX.GPUEvent, Unity.VisualEffectGraph.Editor, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661617347} ---- !u!114 &8926484042661614717 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f68759077adc0b143b6e1c101e82065e, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - title: - m_Owners: - - {fileID: 8926484042661614715} ---- !u!114 &8926484042661614733 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9dfea48843f53fc438eabc12a3a30abc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} - m_Children: - - {fileID: 8926484042661615161} - - {fileID: 8926484042661615148} - - {fileID: 8926484042661614858} - - {fileID: 8926484042661614779} - - {fileID: 8926484042661616742} - m_UIPosition: {x: 1842, y: 1371} - m_UICollapsed: 0 - m_UISuperCollapsed: 0 - m_InputSlots: - - {fileID: 8926484042661614734} - m_OutputSlots: [] - m_Label: - m_Data: {fileID: 8926484042661614747} - m_InputFlowSlot: - - link: - - context: {fileID: 8926484042661614715} - slotIndex: 0 - m_OutputFlowSlot: - - link: - - context: {fileID: 8926484042661614783} - slotIndex: 0 ---- !u!114 &8926484042661614734 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1b605c022ee79394a8a776c0869b3f9a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: - - {fileID: 8926484042661614735} - - {fileID: 8926484042661614739} - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 0 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614734} - m_MasterData: - m_Owner: {fileID: 8926484042661614733} - m_Value: - m_Type: - m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"center":{"x":0.0,"y":0.0,"z":0.0},"size":{"x":2.0,"y":2.0,"z":2.0}}' - m_Space: 0 - m_Property: - name: bounds - m_serializedType: - m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614735 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614734} - m_Children: - - {fileID: 8926484042661614736} - - {fileID: 8926484042661614737} - - {fileID: 8926484042661614738} - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614734} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: center - m_serializedType: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614736 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614735} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614734} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: x - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614737 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614735} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614734} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: y - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614738 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614735} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614734} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: z - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614739 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614734} - m_Children: - - {fileID: 8926484042661614740} - - {fileID: 8926484042661614741} - - {fileID: 8926484042661614742} - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614734} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: size - m_serializedType: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614740 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614739} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614734} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: x - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614741 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614739} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614734} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: y - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614742 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661614739} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661614734} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: z - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661614747 +--- !u!114 &8926484042661614747 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -3003,7 +2748,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1576, y: 1751} + m_UIPosition: {x: 1653, y: 1692} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -3078,7 +2823,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661614921} inputSlot: {fileID: 8926484042661617319} - position: {x: -330, y: 849.3333} + position: {x: -616.6667, y: 298.66666} expandedSlots: [] expanded: 0 supecollapsed: 0 @@ -3086,7 +2831,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661614923} inputSlot: {fileID: 8926484042661616146} - position: {x: -919.3333, y: 1064.6666} + position: {x: -1008.6667, y: 570} expandedSlots: - {fileID: 8926484042661614922} - {fileID: 8926484042661614921} @@ -4249,7 +3994,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -342, y: 1594} + m_UIPosition: {x: -31, y: 1037} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -4589,7 +4334,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1639, y: 2033} + m_UIPosition: {x: 1653, y: 2034} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -4716,6 +4461,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615275} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -4933,7 +4679,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 6931, y: 939} + m_UIPosition: {x: 6933, y: 939} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -5648,6 +5394,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615904} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -5957,6 +5704,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661615977} + useBaseColorMap: 3 colorMapping: 0 uvMode: 1 flipbookLayout: 0 @@ -6298,7 +6046,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -1232, y: 901} + m_UIPosition: {x: -1321, y: 406} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -6322,7 +6070,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -686, y: 981} + m_UIPosition: {x: -775, y: 486} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6657,7 +6405,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -316, y: 901} + m_UIPosition: {x: -405, y: 406} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -6788,7 +6536,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: -982, y: 901} + m_UIPosition: {x: -1071, y: 406} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8116,7 +7864,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 6295, y: 2249} + m_UIPosition: {x: 6300, y: 2247} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -8748,7 +8496,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 7873, y: 3389} + m_UIPosition: {x: 7870, y: 3326} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9065,7 +8813,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1181, y: 3343} + m_UIPosition: {x: 1183, y: 3341} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9192,7 +8940,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1207, y: 3007} + m_UIPosition: {x: 1209, y: 3005} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -9296,7 +9044,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1479, y: 3135} + m_UIPosition: {x: 1481, y: 3133} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -9443,7 +9191,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1245, y: 3215} + m_UIPosition: {x: 1247, y: 3213} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9538,7 +9286,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 911, y: 3215} + m_UIPosition: {x: 913, y: 3213} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -9805,7 +9553,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1079, y: 3215} + m_UIPosition: {x: 1081, y: 3213} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -9941,7 +9689,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 985, y: 3363} + m_UIPosition: {x: 987, y: 3361} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -9997,7 +9745,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 1271, y: 3103} + m_UIPosition: {x: 1273, y: 3101} m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: @@ -10833,7 +10581,7 @@ MonoBehaviour: linkedSlots: - outputSlot: {fileID: 8926484042661616984} inputSlot: {fileID: 8926484042661616508} - position: {x: 6098, y: 2197.3335} + position: {x: 6102.6665, y: 2196} expandedSlots: [] expanded: 0 supecollapsed: 0 @@ -11487,7 +11235,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 6583, y: 2255} + m_UIPosition: {x: 6588, y: 2253} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -11896,7 +11644,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 6143, y: 2414} + m_UIPosition: {x: 6148, y: 2413} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -12023,7 +11771,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 5937, y: 2434} + m_UIPosition: {x: 5942, y: 2433} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] @@ -12079,7 +11827,7 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 6399, y: 2374} + m_UIPosition: {x: 6404, y: 2373} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13682,7 +13430,7 @@ MonoBehaviour: - {fileID: 8926484042661617237} - {fileID: 8926484042661617425} - {fileID: 8926484042661617249} - m_UIPosition: {x: -107, y: 1506} + m_UIPosition: {x: 253, y: 966} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: @@ -13708,6 +13456,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661617259} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -13810,7 +13559,7 @@ MonoBehaviour: Version=0.0.0.0, Culture=neutral, PublicKeyToken=null m_Direction: 0 m_LinkedSlots: - - {fileID: 8926484042661614707} + - {fileID: 8926484042661617544} --- !u!114 &8926484042661617239 MonoBehaviour: m_ObjectHideFlags: 0 @@ -14515,6 +14264,7 @@ MonoBehaviour: sortingPriority: 0 m_SubOutputs: - {fileID: 8926484042661617288} + useBaseColorMap: 3 colorMapping: 0 uvMode: 0 flipbookLayout: 0 @@ -18346,33 +18096,273 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617382} + m_MasterData: + m_Owner: {fileID: 8926484042661617381} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 0.5 + m_Space: -1 + m_Property: + name: _Distance + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: + - {fileID: 8926484042661616918} +--- !u!114 &8926484042661617383 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617383} + m_MasterData: + m_Owner: {fileID: 8926484042661617381} + m_Value: + m_Type: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: True + m_Space: -1 + m_Property: + name: _vfx_enabled + m_serializedType: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617384 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5265657162cc1a241bba03a3b0476d99, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661617385} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617384} + m_MasterData: + m_Owner: {fileID: 8926484042661617004} + m_Value: + m_Type: + m_SerializableType: UnityEditor.VFX.Position, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"position":{"x":0.0,"y":0.0,"z":0.30000001192092898}}' + m_Space: 0 + m_Property: + name: _Position + m_serializedType: + m_SerializableType: UnityEditor.VFX.Position, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617385 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617384} + m_Children: + - {fileID: 8926484042661617386} + - {fileID: 8926484042661617387} + - {fileID: 8926484042661617388} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617384} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: position + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617385} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617384} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617387 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617385} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617384} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617388 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617385} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617384} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: z + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617389 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1b2b751071c7fc14f9fa503163991826, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] m_Parent: {fileID: 0} - m_Children: [] + m_Children: + - {fileID: 8926484042661617390} + - {fileID: 8926484042661617391} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617382} + m_MasterSlot: {fileID: 8926484042661617389} m_MasterData: - m_Owner: {fileID: 8926484042661617381} + m_Owner: {fileID: 8926484042661616609} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0.5 + m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":0.0,"y":-0.25}' m_Space: -1 m_Property: - name: _Distance + name: _Pivot m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 + m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661616918} ---- !u!114 &8926484042661617383 + m_LinkedSlots: [] +--- !u!114 &8926484042661617390 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18381,32 +18371,32 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 8926484042661617389} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617383} + m_MasterSlot: {fileID: 8926484042661617389} m_MasterData: - m_Owner: {fileID: 8926484042661617381} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: True + m_SerializableType: + m_SerializableObject: m_Space: -1 m_Property: - name: _vfx_enabled + name: x m_serializedType: - m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617384 + m_LinkedSlots: + - {fileID: 8926484042661617144} +--- !u!114 &8926484042661617391 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18415,33 +18405,31 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5265657162cc1a241bba03a3b0476d99, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: - - {fileID: 8926484042661617385} + m_Parent: {fileID: 8926484042661617389} + m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617384} + m_MasterSlot: {fileID: 8926484042661617389} m_MasterData: - m_Owner: {fileID: 8926484042661617004} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: UnityEditor.VFX.Position, Unity.VisualEffectGraph.Editor, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"position":{"x":0.0,"y":0.0,"z":0.30000001192092898}}' - m_Space: 0 + m_SerializableType: + m_SerializableObject: + m_Space: -1 m_Property: - name: _Position + name: y m_serializedType: - m_SerializableType: UnityEditor.VFX.Position, Unity.VisualEffectGraph.Editor, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617385 +--- !u!114 &8926484042661617392 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18450,34 +18438,33 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617384} - m_Children: - - {fileID: 8926484042661617386} - - {fileID: 8926484042661617387} - - {fileID: 8926484042661617388} + m_Parent: {fileID: 0} + m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617384} + m_MasterSlot: {fileID: 8926484042661617392} m_MasterData: - m_Owner: {fileID: 0} + m_Owner: {fileID: 8926484042661617011} m_Value: m_Type: - m_SerializableType: - m_SerializableObject: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 2 m_Space: -1 m_Property: - name: position + name: _TexIndex m_serializedType: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617386 + m_LinkedSlots: + - {fileID: 8926484042661617124} +--- !u!114 &8926484042661617393 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18486,31 +18473,33 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617385} + m_Parent: {fileID: 0} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617384} + m_MasterSlot: {fileID: 8926484042661617393} m_MasterData: - m_Owner: {fileID: 0} + m_Owner: {fileID: 8926484042661615926} m_Value: m_Type: - m_SerializableType: - m_SerializableObject: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: False m_Space: -1 m_Property: - name: x + name: _Alive m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617387 + m_LinkedSlots: + - {fileID: 8926484042661616960} +--- !u!114 &8926484042661617394 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18523,27 +18512,29 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617385} + m_Parent: {fileID: 0} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617384} + m_MasterSlot: {fileID: 8926484042661617394} m_MasterData: - m_Owner: {fileID: 0} + m_Owner: {fileID: 8926484042661615942} m_Value: m_Type: - m_SerializableType: - m_SerializableObject: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 0.15 m_Space: -1 m_Property: - name: y + name: _Size m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617388 + m_LinkedSlots: + - {fileID: 8926484042661616989} +--- !u!114 &8926484042661617395 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18552,31 +18543,33 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617385} + m_Parent: {fileID: 0} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617384} + m_MasterSlot: {fileID: 8926484042661617395} m_MasterData: - m_Owner: {fileID: 0} + m_Owner: {fileID: 8926484042661615993} m_Value: m_Type: - m_SerializableType: - m_SerializableObject: + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: False m_Space: -1 m_Property: - name: z + name: _Alive m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617389 + m_LinkedSlots: + - {fileID: 8926484042661616597} +--- !u!114 &8926484042661617396 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18591,19 +18584,19 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: - - {fileID: 8926484042661617390} - - {fileID: 8926484042661617391} + - {fileID: 8926484042661617397} + - {fileID: 8926484042661617398} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617389} + m_MasterSlot: {fileID: 8926484042661617396} m_MasterData: - m_Owner: {fileID: 8926484042661616609} + m_Owner: {fileID: 8926484042661616531} m_Value: m_Type: m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"x":0.0,"y":-0.25}' + m_SerializableObject: '{"x":0.0,"y":-0.5}' m_Space: -1 m_Property: name: _Pivot @@ -18612,7 +18605,7 @@ MonoBehaviour: Culture=neutral, PublicKeyToken=null m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617390 +--- !u!114 &8926484042661617397 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18625,12 +18618,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617389} + m_Parent: {fileID: 8926484042661617396} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617389} + m_MasterSlot: {fileID: 8926484042661617396} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -18645,8 +18638,8 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: - - {fileID: 8926484042661617144} ---- !u!114 &8926484042661617391 + - {fileID: 8926484042661617120} +--- !u!114 &8926484042661617398 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18659,12 +18652,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617389} + m_Parent: {fileID: 8926484042661617396} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617389} + m_MasterSlot: {fileID: 8926484042661617396} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -18679,7 +18672,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617392 +--- !u!114 &8926484042661617399 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18697,24 +18690,23 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617392} + m_MasterSlot: {fileID: 8926484042661617399} m_MasterData: - m_Owner: {fileID: 8926484042661617011} + m_Owner: {fileID: 8926484042661616016} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 2 + m_SerializableObject: 0.1 m_Space: -1 m_Property: - name: _TexIndex + name: _Size m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661617124} ---- !u!114 &8926484042661617393 + m_LinkedSlots: [] +--- !u!114 &8926484042661617400 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18723,7 +18715,7 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] @@ -18732,24 +18724,47 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617393} + m_MasterSlot: {fileID: 8926484042661617400} m_MasterData: - m_Owner: {fileID: 8926484042661615926} + m_Owner: {fileID: 8926484042661615990} m_Value: m_Type: - m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: False + m_SerializableObject: 0 m_Space: -1 m_Property: - name: _Alive + name: _TexIndex m_serializedType: - m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661616960} ---- !u!114 &8926484042661617394 + m_LinkedSlots: [] +--- !u!114 &8926484042661617401 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 486e063e1ed58c843942ea4122829ab1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: 7620, y: 3292} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: [] + m_OutputSlots: + - {fileID: 8926484042661617402} + attribute: Distance + location: 0 + mask: xyz +--- !u!114 &8926484042661617402 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18767,24 +18782,24 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617394} + m_MasterSlot: {fileID: 8926484042661617402} m_MasterData: - m_Owner: {fileID: 8926484042661615942} + m_Owner: {fileID: 8926484042661617401} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0.15 + m_SerializableObject: 0 m_Space: -1 m_Property: - name: _Size + name: Distance m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 + m_Direction: 1 m_LinkedSlots: - - {fileID: 8926484042661616989} ---- !u!114 &8926484042661617395 + - {fileID: 8926484042661616596} +--- !u!114 &8926484042661617403 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18793,33 +18808,22 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Script: {fileID: 11500000, guid: 486e063e1ed58c843942ea4122829ab1, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 + m_UIPosition: {x: 6088, y: 2273} + m_UICollapsed: 0 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617395} - m_MasterData: - m_Owner: {fileID: 8926484042661615993} - m_Value: - m_Type: - m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: False - m_Space: -1 - m_Property: - name: _Alive - m_serializedType: - m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661616597} ---- !u!114 &8926484042661617396 + m_InputSlots: [] + m_OutputSlots: + - {fileID: 8926484042661617404} + attribute: Distance + location: 0 + mask: xyz +--- !u!114 &8926484042661617404 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18828,34 +18832,33 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1b2b751071c7fc14f9fa503163991826, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] m_Parent: {fileID: 0} - m_Children: - - {fileID: 8926484042661617397} - - {fileID: 8926484042661617398} + m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617396} + m_MasterSlot: {fileID: 8926484042661617404} m_MasterData: - m_Owner: {fileID: 8926484042661616531} + m_Owner: {fileID: 8926484042661617403} m_Value: m_Type: - m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"x":0.0,"y":-0.5}' + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 0 m_Space: -1 m_Property: - name: _Pivot + name: Distance m_serializedType: - m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617397 + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661616509} +--- !u!114 &8926484042661617405 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18864,32 +18867,22 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Script: {fileID: 11500000, guid: 486e063e1ed58c843942ea4122829ab1, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617396} + m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 + m_UIPosition: {x: 5551, y: 3095} + m_UICollapsed: 0 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617396} - m_MasterData: - m_Owner: {fileID: 0} - m_Value: - m_Type: - m_SerializableType: - m_SerializableObject: - m_Space: -1 - m_Property: - name: x - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: - - {fileID: 8926484042661617120} ---- !u!114 &8926484042661617398 + m_InputSlots: [] + m_OutputSlots: + - {fileID: 8926484042661617406} + attribute: Distance + location: 0 + mask: xyz +--- !u!114 &8926484042661617406 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18902,27 +18895,29 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617396} + m_Parent: {fileID: 0} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617396} + m_MasterSlot: {fileID: 8926484042661617406} m_MasterData: - m_Owner: {fileID: 0} + m_Owner: {fileID: 8926484042661617405} m_Value: m_Type: - m_SerializableType: - m_SerializableObject: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 0 m_Space: -1 m_Property: - name: y + name: Distance m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617399 + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661616518} +--- !u!114 &8926484042661617407 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18931,32 +18926,22 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Script: {fileID: 11500000, guid: 486e063e1ed58c843942ea4122829ab1, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 + m_UIPosition: {x: 6463, y: 4184} + m_UICollapsed: 0 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617399} - m_MasterData: - m_Owner: {fileID: 8926484042661616016} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0.1 - m_Space: -1 - m_Property: - name: _Size - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617400 + m_InputSlots: [] + m_OutputSlots: + - {fileID: 8926484042661617408} + attribute: Distance + location: 0 + mask: xyz +--- !u!114 &8926484042661617408 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -18974,9 +18959,9 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617400} + m_MasterSlot: {fileID: 8926484042661617408} m_MasterData: - m_Owner: {fileID: 8926484042661615990} + m_Owner: {fileID: 8926484042661617407} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, @@ -18984,13 +18969,16 @@ MonoBehaviour: m_SerializableObject: 0 m_Space: -1 m_Property: - name: _TexIndex + name: Distance m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617401 + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661616959} + - {fileID: 8926484042661616988} + - {fileID: 8926484042661617122} +--- !u!114 &8926484042661617409 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19005,16 +18993,16 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 7623, y: 3355} + m_UIPosition: {x: 6077, y: 3795} m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] m_OutputSlots: - - {fileID: 8926484042661617402} + - {fileID: 8926484042661617410} attribute: Distance location: 0 mask: xyz ---- !u!114 &8926484042661617402 +--- !u!114 &8926484042661617410 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19032,9 +19020,9 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617402} + m_MasterSlot: {fileID: 8926484042661617410} m_MasterData: - m_Owner: {fileID: 8926484042661617401} + m_Owner: {fileID: 8926484042661617409} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, @@ -19048,8 +19036,8 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: - - {fileID: 8926484042661616596} ---- !u!114 &8926484042661617403 + - {fileID: 8926484042661617163} +--- !u!114 &8926484042661617411 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19064,16 +19052,88 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 6083, y: 2274} - m_UICollapsed: 0 + m_UIPosition: {x: 1521, y: 1922} + m_UICollapsed: 1 m_UISuperCollapsed: 0 m_InputSlots: [] m_OutputSlots: - - {fileID: 8926484042661617404} - attribute: Distance - location: 0 + - {fileID: 8926484042661617527} + attribute: collisionEventPosition + location: 1 mask: xyz ---- !u!114 &8926484042661617404 +--- !u!114 &8926484042661617416 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1b605c022ee79394a8a776c0869b3f9a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661617417} + - {fileID: 8926484042661617421} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617416} + m_MasterData: + m_Owner: {fileID: 8926484042661615795} + m_Value: + m_Type: + m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"center":{"x":0.0,"y":0.0,"z":0.0},"size":{"x":2.0,"y":2.0,"z":1.0}}' + m_Space: 0 + m_Property: + name: bounds + m_serializedType: + m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor, + Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617417 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617416} + m_Children: + - {fileID: 8926484042661617418} + - {fileID: 8926484042661617419} + - {fileID: 8926484042661617420} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617416} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: center + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617418 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19086,29 +19146,27 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 8926484042661617417} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617404} + m_MasterSlot: {fileID: 8926484042661617416} m_MasterData: - m_Owner: {fileID: 8926484042661617403} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 + m_SerializableType: + m_SerializableObject: m_Space: -1 m_Property: - name: Distance + name: x m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661616509} ---- !u!114 &8926484042661617405 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617419 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19117,22 +19175,31 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 486e063e1ed58c843942ea4122829ab1, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} + m_Parent: {fileID: 8926484042661617417} m_Children: [] - m_UIPosition: {x: 5551, y: 3095} - m_UICollapsed: 0 + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_InputSlots: [] - m_OutputSlots: - - {fileID: 8926484042661617406} - attribute: Distance - location: 0 - mask: xyz ---- !u!114 &8926484042661617406 + m_MasterSlot: {fileID: 8926484042661617416} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617420 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19145,29 +19212,27 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 8926484042661617417} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617406} + m_MasterSlot: {fileID: 8926484042661617416} m_MasterData: - m_Owner: {fileID: 8926484042661617405} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 + m_SerializableType: + m_SerializableObject: m_Space: -1 m_Property: - name: Distance + name: z m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661616518} ---- !u!114 &8926484042661617407 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617421 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19176,22 +19241,34 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 486e063e1ed58c843942ea4122829ab1, type: 3} + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} - m_Children: [] - m_UIPosition: {x: 6401, y: 4108} - m_UICollapsed: 0 + m_Parent: {fileID: 8926484042661617416} + m_Children: + - {fileID: 8926484042661617422} + - {fileID: 8926484042661617423} + - {fileID: 8926484042661617424} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_InputSlots: [] - m_OutputSlots: - - {fileID: 8926484042661617408} - attribute: Distance - location: 0 - mask: xyz ---- !u!114 &8926484042661617408 + m_MasterSlot: {fileID: 8926484042661617416} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: size + m_serializedType: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617422 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19204,31 +19281,27 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 8926484042661617421} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617408} + m_MasterSlot: {fileID: 8926484042661617416} m_MasterData: - m_Owner: {fileID: 8926484042661617407} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 + m_SerializableType: + m_SerializableObject: m_Space: -1 m_Property: - name: Distance + name: x m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661616959} - - {fileID: 8926484042661616988} - - {fileID: 8926484042661617122} ---- !u!114 &8926484042661617409 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617423 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19237,22 +19310,31 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 486e063e1ed58c843942ea4122829ab1, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} + m_Parent: {fileID: 8926484042661617421} m_Children: [] - m_UIPosition: {x: 6077, y: 3795} - m_UICollapsed: 0 + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_InputSlots: [] - m_OutputSlots: - - {fileID: 8926484042661617410} - attribute: Distance - location: 0 - mask: xyz ---- !u!114 &8926484042661617410 + m_MasterSlot: {fileID: 8926484042661617416} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: -1 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617424 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19265,29 +19347,27 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 8926484042661617421} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617410} + m_MasterSlot: {fileID: 8926484042661617416} m_MasterData: - m_Owner: {fileID: 8926484042661617409} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 + m_SerializableType: + m_SerializableObject: m_Space: -1 m_Property: - name: Distance + name: z m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661617163} ---- !u!114 &8926484042661617411 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617425 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19296,22 +19376,23 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 486e063e1ed58c843942ea4122829ab1, type: 3} + m_Script: {fileID: 11500000, guid: d16c6aeaef944094b9a1633041804207, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} + m_Parent: {fileID: 8926484042661617236} m_Children: [] - m_UIPosition: {x: 1507, y: 1921} - m_UICollapsed: 1 + m_UIPosition: {x: 0, y: 2} + m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: [] - m_OutputSlots: - - {fileID: 8926484042661617527} - attribute: collisionEventPosition - location: 1 - mask: xyz ---- !u!114 &8926484042661617416 + m_OutputSlots: [] + m_Disabled: 0 + m_ActivationSlot: {fileID: 8926484042661617436} + mode: 6 + axes: 4 + faceRay: 1 +--- !u!114 &8926484042661617436 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19320,34 +19401,32 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1b605c022ee79394a8a776c0869b3f9a, type: 3} + m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] m_Parent: {fileID: 0} - m_Children: - - {fileID: 8926484042661617417} - - {fileID: 8926484042661617421} + m_Children: [] m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 0 + m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617416} + m_MasterSlot: {fileID: 8926484042661617436} m_MasterData: - m_Owner: {fileID: 8926484042661615795} + m_Owner: {fileID: 8926484042661617425} m_Value: m_Type: - m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"center":{"x":0.0,"y":0.0,"z":0.0},"size":{"x":2.0,"y":2.0,"z":1.0}}' - m_Space: 0 + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: False + m_Space: -1 m_Property: - name: bounds + name: _vfx_enabled m_serializedType: - m_SerializableType: UnityEditor.VFX.AABox, Unity.VisualEffectGraph.Editor, - Version=0.0.0.0, Culture=neutral, PublicKeyToken=null + m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617417 +--- !u!114 &8926484042661617488 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19360,30 +19439,32 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617416} + m_Parent: {fileID: 0} m_Children: - - {fileID: 8926484042661617418} - - {fileID: 8926484042661617419} - - {fileID: 8926484042661617420} + - {fileID: 8926484042661617489} + - {fileID: 8926484042661617490} + - {fileID: 8926484042661617491} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617416} + m_MasterSlot: {fileID: 8926484042661617488} m_MasterData: - m_Owner: {fileID: 0} + m_Owner: {fileID: 8926484042661614865} m_Value: m_Type: - m_SerializableType: - m_SerializableObject: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' m_Space: -1 m_Property: - name: center + name: Velocity m_serializedType: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617418 + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661617350} +--- !u!114 &8926484042661617489 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19396,12 +19477,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617417} + m_Parent: {fileID: 8926484042661617488} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617416} + m_MasterSlot: {fileID: 8926484042661617488} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -19414,9 +19495,9 @@ MonoBehaviour: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 + m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617419 +--- !u!114 &8926484042661617490 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19429,12 +19510,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617417} + m_Parent: {fileID: 8926484042661617488} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617416} + m_MasterSlot: {fileID: 8926484042661617488} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -19447,9 +19528,9 @@ MonoBehaviour: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 + m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617420 +--- !u!114 &8926484042661617491 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19462,12 +19543,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617417} + m_Parent: {fileID: 8926484042661617488} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617416} + m_MasterSlot: {fileID: 8926484042661617488} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -19480,9 +19561,9 @@ MonoBehaviour: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 + m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617421 +--- !u!114 &8926484042661617492 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19495,30 +19576,32 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617416} + m_Parent: {fileID: 0} m_Children: - - {fileID: 8926484042661617422} - - {fileID: 8926484042661617423} - - {fileID: 8926484042661617424} + - {fileID: 8926484042661617493} + - {fileID: 8926484042661617494} + - {fileID: 8926484042661617495} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617416} + m_MasterSlot: {fileID: 8926484042661617492} m_MasterData: - m_Owner: {fileID: 0} + m_Owner: {fileID: 8926484042661614894} m_Value: m_Type: - m_SerializableType: - m_SerializableObject: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' m_Space: -1 m_Property: - name: size + name: Direction m_serializedType: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617422 + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661614965} +--- !u!114 &8926484042661617493 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19531,12 +19614,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617421} + m_Parent: {fileID: 8926484042661617492} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617416} + m_MasterSlot: {fileID: 8926484042661617492} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -19549,9 +19632,9 @@ MonoBehaviour: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 + m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617423 +--- !u!114 &8926484042661617494 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19564,12 +19647,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617421} + m_Parent: {fileID: 8926484042661617492} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617416} + m_MasterSlot: {fileID: 8926484042661617492} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -19582,9 +19665,9 @@ MonoBehaviour: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 + m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617424 +--- !u!114 &8926484042661617495 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19597,12 +19680,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617421} + m_Parent: {fileID: 8926484042661617492} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617416} + m_MasterSlot: {fileID: 8926484042661617492} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -19615,9 +19698,43 @@ MonoBehaviour: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: [] +--- !u!114 &8926484042661617496 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617496} + m_MasterData: + m_Owner: {fileID: 8926484042661616755} + m_Value: + m_Type: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 0 + m_Space: -1 + m_Property: + name: seed + m_serializedType: + m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617425 +--- !u!114 &8926484042661617497 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19626,23 +19743,32 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d16c6aeaef944094b9a1633041804207, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617236} + m_Parent: {fileID: 0} m_Children: [] - m_UIPosition: {x: 0, y: 2} - m_UICollapsed: 0 + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_InputSlots: [] - m_OutputSlots: [] - m_Disabled: 0 - m_ActivationSlot: {fileID: 8926484042661617436} - mode: 6 - axes: 4 - faceRay: 1 ---- !u!114 &8926484042661617436 + m_MasterSlot: {fileID: 8926484042661617497} + m_MasterData: + m_Owner: {fileID: 8926484042661616800} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 7 + m_Space: -1 + m_Property: + name: Min + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617498 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19651,7 +19777,7 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b4c11ff25089a324daf359f4b0629b33, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] @@ -19660,23 +19786,23 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617436} + m_MasterSlot: {fileID: 8926484042661617498} m_MasterData: - m_Owner: {fileID: 8926484042661617425} + m_Owner: {fileID: 8926484042661616800} m_Value: m_Type: - m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: False + m_SerializableObject: 15 m_Space: -1 m_Property: - name: _vfx_enabled + name: Max m_serializedType: - m_SerializableType: System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617484 +--- !u!114 &8926484042661617499 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19691,15 +19817,15 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: - - {fileID: 8926484042661617485} - - {fileID: 8926484042661617486} - - {fileID: 8926484042661617487} + - {fileID: 8926484042661617500} + - {fileID: 8926484042661617501} + - {fileID: 8926484042661617502} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617484} + m_MasterSlot: {fileID: 8926484042661617499} m_MasterData: - m_Owner: {fileID: 8926484042661614694} + m_Owner: {fileID: 8926484042661615156} m_Value: m_Type: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, @@ -19707,14 +19833,14 @@ MonoBehaviour: m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' m_Space: -1 m_Property: - name: Velocity + name: Color m_serializedType: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null m_Direction: 1 m_LinkedSlots: - - {fileID: 8926484042661614703} ---- !u!114 &8926484042661617485 + - {fileID: 8926484042661617254} +--- !u!114 &8926484042661617500 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19727,12 +19853,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617484} + m_Parent: {fileID: 8926484042661617499} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617484} + m_MasterSlot: {fileID: 8926484042661617499} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -19747,7 +19873,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617486 +--- !u!114 &8926484042661617501 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19760,12 +19886,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617484} + m_Parent: {fileID: 8926484042661617499} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617484} + m_MasterSlot: {fileID: 8926484042661617499} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -19780,7 +19906,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617487 +--- !u!114 &8926484042661617502 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19793,12 +19919,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617484} + m_Parent: {fileID: 8926484042661617499} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617484} + m_MasterSlot: {fileID: 8926484042661617499} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -19813,7 +19939,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617488 +--- !u!114 &8926484042661617503 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19828,15 +19954,15 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: - - {fileID: 8926484042661617489} - - {fileID: 8926484042661617490} - - {fileID: 8926484042661617491} + - {fileID: 8926484042661617504} + - {fileID: 8926484042661617505} + - {fileID: 8926484042661617506} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617488} + m_MasterSlot: {fileID: 8926484042661617503} m_MasterData: - m_Owner: {fileID: 8926484042661614865} + m_Owner: {fileID: 8926484042661615163} m_Value: m_Type: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, @@ -19844,14 +19970,14 @@ MonoBehaviour: m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' m_Space: -1 m_Property: - name: Velocity + name: Color m_serializedType: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null m_Direction: 1 m_LinkedSlots: - - {fileID: 8926484042661617350} ---- !u!114 &8926484042661617489 + - {fileID: 8926484042661617283} +--- !u!114 &8926484042661617504 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19864,12 +19990,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617488} + m_Parent: {fileID: 8926484042661617503} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617488} + m_MasterSlot: {fileID: 8926484042661617503} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -19884,7 +20010,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617490 +--- !u!114 &8926484042661617505 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19897,12 +20023,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617488} + m_Parent: {fileID: 8926484042661617503} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617488} + m_MasterSlot: {fileID: 8926484042661617503} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -19917,7 +20043,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617491 +--- !u!114 &8926484042661617506 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -19930,12 +20056,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617488} + m_Parent: {fileID: 8926484042661617503} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617488} + m_MasterSlot: {fileID: 8926484042661617503} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -19950,45 +20076,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617492 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: - - {fileID: 8926484042661617493} - - {fileID: 8926484042661617494} - - {fileID: 8926484042661617495} - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617492} - m_MasterData: - m_Owner: {fileID: 8926484042661614894} - m_Value: - m_Type: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' - m_Space: -1 - m_Property: - name: Direction - m_serializedType: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661614965} ---- !u!114 &8926484042661617493 +--- !u!114 &8926484042661617507 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20001,27 +20089,28 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617492} + m_Parent: {fileID: 0} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617492} + m_MasterSlot: {fileID: 8926484042661617507} m_MasterData: - m_Owner: {fileID: 0} + m_Owner: {fileID: 8926484042661615181} m_Value: m_Type: - m_SerializableType: - m_SerializableObject: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: -0.025 m_Space: -1 m_Property: - name: x + name: Min m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 + m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617494 +--- !u!114 &8926484042661617508 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20034,27 +20123,28 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617492} + m_Parent: {fileID: 0} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617492} + m_MasterSlot: {fileID: 8926484042661617508} m_MasterData: - m_Owner: {fileID: 0} + m_Owner: {fileID: 8926484042661615181} m_Value: m_Type: - m_SerializableType: - m_SerializableObject: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: -0.05 m_Space: -1 m_Property: - name: y + name: Max m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 + m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617495 +--- !u!114 &8926484042661617509 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20063,31 +20153,36 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617492} - m_Children: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661617510} + - {fileID: 8926484042661617511} + - {fileID: 8926484042661617512} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617492} + m_MasterSlot: {fileID: 8926484042661617509} m_MasterData: - m_Owner: {fileID: 0} + m_Owner: {fileID: 8926484042661616091} m_Value: m_Type: - m_SerializableType: - m_SerializableObject: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' m_Space: -1 m_Property: - name: z + name: Position m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null m_Direction: 1 - m_LinkedSlots: [] ---- !u!114 &8926484042661617496 + m_LinkedSlots: + - {fileID: 8926484042661616159} +--- !u!114 &8926484042661617510 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20096,32 +20191,31 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c52d920e7fff73b498050a6b3c4404ca, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 8926484042661617509} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617496} + m_MasterSlot: {fileID: 8926484042661617509} m_MasterData: - m_Owner: {fileID: 8926484042661616755} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 + m_SerializableType: + m_SerializableObject: m_Space: -1 m_Property: - name: seed + name: x m_serializedType: - m_SerializableType: System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral, + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 + m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617497 +--- !u!114 &8926484042661617511 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20134,28 +20228,27 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 8926484042661617509} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617497} + m_MasterSlot: {fileID: 8926484042661617509} m_MasterData: - m_Owner: {fileID: 8926484042661616800} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 7 + m_SerializableType: + m_SerializableObject: m_Space: -1 m_Property: - name: Min + name: y m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 + m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617498 +--- !u!114 &8926484042661617512 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20168,28 +20261,27 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 8926484042661617509} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617498} + m_MasterSlot: {fileID: 8926484042661617509} m_MasterData: - m_Owner: {fileID: 8926484042661616800} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 15 + m_SerializableType: + m_SerializableObject: m_Space: -1 m_Property: - name: Max + name: z m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 + m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617499 +--- !u!114 &8926484042661617513 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20204,15 +20296,15 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: - - {fileID: 8926484042661617500} - - {fileID: 8926484042661617501} - - {fileID: 8926484042661617502} + - {fileID: 8926484042661617514} + - {fileID: 8926484042661617515} + - {fileID: 8926484042661617516} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617499} + m_MasterSlot: {fileID: 8926484042661617513} m_MasterData: - m_Owner: {fileID: 8926484042661615156} + m_Owner: {fileID: 8926484042661616196} m_Value: m_Type: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, @@ -20220,14 +20312,14 @@ MonoBehaviour: m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' m_Space: -1 m_Property: - name: Color + name: Position m_serializedType: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null m_Direction: 1 m_LinkedSlots: - - {fileID: 8926484042661617254} ---- !u!114 &8926484042661617500 + - {fileID: 8926484042661616202} +--- !u!114 &8926484042661617514 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20240,12 +20332,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617499} + m_Parent: {fileID: 8926484042661617513} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617499} + m_MasterSlot: {fileID: 8926484042661617513} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -20260,7 +20352,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617501 +--- !u!114 &8926484042661617515 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20273,12 +20365,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617499} + m_Parent: {fileID: 8926484042661617513} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617499} + m_MasterSlot: {fileID: 8926484042661617513} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -20293,7 +20385,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617502 +--- !u!114 &8926484042661617516 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20306,12 +20398,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617499} + m_Parent: {fileID: 8926484042661617513} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617499} + m_MasterSlot: {fileID: 8926484042661617513} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -20326,7 +20418,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617503 +--- !u!114 &8926484042661617517 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20335,36 +20427,33 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} + m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] m_Parent: {fileID: 0} - m_Children: - - {fileID: 8926484042661617504} - - {fileID: 8926484042661617505} - - {fileID: 8926484042661617506} + m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617503} + m_MasterSlot: {fileID: 8926484042661617517} m_MasterData: - m_Owner: {fileID: 8926484042661615163} + m_Owner: {fileID: 8926484042661617084} m_Value: m_Type: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 0 m_Space: -1 m_Property: - name: Color + name: Tex Index m_serializedType: - m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: - - {fileID: 8926484042661617283} ---- !u!114 &8926484042661617504 + - {fileID: 8926484042661617092} +--- !u!114 &8926484042661617518 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20373,31 +20462,35 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617503} - m_Children: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661617519} + - {fileID: 8926484042661617520} + - {fileID: 8926484042661617521} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617503} + m_MasterSlot: {fileID: 8926484042661617518} m_MasterData: - m_Owner: {fileID: 0} + m_Owner: {fileID: 8926484042661617086} m_Value: m_Type: - m_SerializableType: - m_SerializableObject: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' m_Space: -1 m_Property: - name: x + name: Position m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617505 +--- !u!114 &8926484042661617519 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20410,12 +20503,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617503} + m_Parent: {fileID: 8926484042661617518} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617503} + m_MasterSlot: {fileID: 8926484042661617518} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -20424,13 +20517,14 @@ MonoBehaviour: m_SerializableObject: m_Space: -1 m_Property: - name: y + name: x m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 1 - m_LinkedSlots: [] ---- !u!114 &8926484042661617506 + m_LinkedSlots: + - {fileID: 8926484042661616907} +--- !u!114 &8926484042661617520 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20443,12 +20537,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617503} + m_Parent: {fileID: 8926484042661617518} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617503} + m_MasterSlot: {fileID: 8926484042661617518} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -20457,13 +20551,14 @@ MonoBehaviour: m_SerializableObject: m_Space: -1 m_Property: - name: z + name: y m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 1 - m_LinkedSlots: [] ---- !u!114 &8926484042661617507 + m_LinkedSlots: + - {fileID: 8926484042661616908} +--- !u!114 &8926484042661617521 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20476,28 +20571,27 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 8926484042661617518} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617507} + m_MasterSlot: {fileID: 8926484042661617518} m_MasterData: - m_Owner: {fileID: 8926484042661615181} + m_Owner: {fileID: 0} m_Value: m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: -0.025 + m_SerializableType: + m_SerializableObject: m_Space: -1 m_Property: - name: Min + name: z m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 0 + m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617508 +--- !u!114 &8926484042661617522 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20515,23 +20609,24 @@ MonoBehaviour: m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617508} + m_MasterSlot: {fileID: 8926484042661617522} m_MasterData: - m_Owner: {fileID: 8926484042661615181} + m_Owner: {fileID: 8926484042661617125} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: -0.05 + m_SerializableObject: 0 m_Space: -1 m_Property: - name: Max + name: Tex Index m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617509 + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 1 + m_LinkedSlots: + - {fileID: 8926484042661617128} +--- !u!114 &8926484042661617523 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20546,15 +20641,15 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: - - {fileID: 8926484042661617510} - - {fileID: 8926484042661617511} - - {fileID: 8926484042661617512} + - {fileID: 8926484042661617524} + - {fileID: 8926484042661617525} + - {fileID: 8926484042661617526} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617509} + m_MasterSlot: {fileID: 8926484042661617523} m_MasterData: - m_Owner: {fileID: 8926484042661616091} + m_Owner: {fileID: 8926484042661617172} m_Value: m_Type: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, @@ -20567,9 +20662,8 @@ MonoBehaviour: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661616159} ---- !u!114 &8926484042661617510 + m_LinkedSlots: [] +--- !u!114 &8926484042661617524 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20582,12 +20676,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617509} + m_Parent: {fileID: 8926484042661617523} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617509} + m_MasterSlot: {fileID: 8926484042661617523} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -20601,8 +20695,9 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 1 - m_LinkedSlots: [] ---- !u!114 &8926484042661617511 + m_LinkedSlots: + - {fileID: 8926484042661617371} +--- !u!114 &8926484042661617525 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20615,12 +20710,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617509} + m_Parent: {fileID: 8926484042661617523} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617509} + m_MasterSlot: {fileID: 8926484042661617523} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -20634,8 +20729,9 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 1 - m_LinkedSlots: [] ---- !u!114 &8926484042661617512 + m_LinkedSlots: + - {fileID: 8926484042661617372} +--- !u!114 &8926484042661617526 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20648,12 +20744,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617509} + m_Parent: {fileID: 8926484042661617523} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617509} + m_MasterSlot: {fileID: 8926484042661617523} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -20668,7 +20764,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617513 +--- !u!114 &8926484042661617527 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20683,15 +20779,15 @@ MonoBehaviour: m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: - - {fileID: 8926484042661617514} - - {fileID: 8926484042661617515} - - {fileID: 8926484042661617516} + - {fileID: 8926484042661617528} + - {fileID: 8926484042661617529} + - {fileID: 8926484042661617530} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617513} + m_MasterSlot: {fileID: 8926484042661617527} m_MasterData: - m_Owner: {fileID: 8926484042661616196} + m_Owner: {fileID: 8926484042661617411} m_Value: m_Type: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, @@ -20699,14 +20795,13 @@ MonoBehaviour: m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' m_Space: -1 m_Property: - name: Position + name: Collision Event Position m_serializedType: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661616202} ---- !u!114 &8926484042661617514 + m_LinkedSlots: [] +--- !u!114 &8926484042661617528 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20719,12 +20814,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617513} + m_Parent: {fileID: 8926484042661617527} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617513} + m_MasterSlot: {fileID: 8926484042661617527} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -20738,8 +20833,9 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 1 - m_LinkedSlots: [] ---- !u!114 &8926484042661617515 + m_LinkedSlots: + - {fileID: 8926484042661617357} +--- !u!114 &8926484042661617529 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20752,12 +20848,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617513} + m_Parent: {fileID: 8926484042661617527} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617513} + m_MasterSlot: {fileID: 8926484042661617527} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -20771,8 +20867,9 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 1 - m_LinkedSlots: [] ---- !u!114 &8926484042661617516 + m_LinkedSlots: + - {fileID: 8926484042661617358} +--- !u!114 &8926484042661617530 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20785,12 +20882,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617513} + m_Parent: {fileID: 8926484042661617527} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617513} + m_MasterSlot: {fileID: 8926484042661617527} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -20805,7 +20902,7 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617517 +--- !u!114 &8926484042661617531 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20814,33 +20911,22 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} + m_Script: {fileID: 11500000, guid: 486e063e1ed58c843942ea4122829ab1, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXAttributeParameter m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} + m_Parent: {fileID: 114350483966674976} m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 + m_UIPosition: {x: -156, y: 1329} + m_UICollapsed: 0 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617517} - m_MasterData: - m_Owner: {fileID: 8926484042661617084} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 - m_Space: -1 - m_Property: - name: Tex Index - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661617092} ---- !u!114 &8926484042661617518 + m_InputSlots: [] + m_OutputSlots: + - {fileID: 8926484042661617532} + attribute: velocity + location: 0 + mask: xyz +--- !u!114 &8926484042661617532 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20851,33 +20937,34 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat3 m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: - - {fileID: 8926484042661617519} - - {fileID: 8926484042661617520} - - {fileID: 8926484042661617521} + - {fileID: 8926484042661617533} + - {fileID: 8926484042661617534} + - {fileID: 8926484042661617535} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617518} + m_MasterSlot: {fileID: 8926484042661617532} m_MasterData: - m_Owner: {fileID: 8926484042661617086} + m_Owner: {fileID: 8926484042661617531} m_Value: m_Type: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' + m_SerializableObject: m_Space: -1 m_Property: - name: Position + name: Velocity m_serializedType: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null m_Direction: 1 - m_LinkedSlots: [] ---- !u!114 &8926484042661617519 + m_LinkedSlots: + - {fileID: 8926484042661617540} +--- !u!114 &8926484042661617533 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20888,14 +20975,14 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617518} + m_Parent: {fileID: 8926484042661617532} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617518} + m_MasterSlot: {fileID: 8926484042661617532} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -20909,9 +20996,8 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661616907} ---- !u!114 &8926484042661617520 + m_LinkedSlots: [] +--- !u!114 &8926484042661617534 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20922,14 +21008,14 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617518} + m_Parent: {fileID: 8926484042661617532} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617518} + m_MasterSlot: {fileID: 8926484042661617532} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -20943,9 +21029,8 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661616908} ---- !u!114 &8926484042661617521 + m_LinkedSlots: [] +--- !u!114 &8926484042661617535 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20956,14 +21041,14 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617518} + m_Parent: {fileID: 8926484042661617532} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617518} + m_MasterSlot: {fileID: 8926484042661617532} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -20978,7 +21063,39 @@ MonoBehaviour: PublicKeyToken=b77a5c561934e089 m_Direction: 1 m_LinkedSlots: [] ---- !u!114 &8926484042661617522 +--- !u!114 &8926484042661617536 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b8ee8a7543fa09e42a7c8616f60d2ad7, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.Operator.Multiply + m_UIIgnoredErrors: [] + m_Parent: {fileID: 114350483966674976} + m_Children: [] + m_UIPosition: {x: 38, y: 1409} + m_UICollapsed: 0 + m_UISuperCollapsed: 1 + m_InputSlots: + - {fileID: 8926484042661617540} + - {fileID: 8926484042661617538} + m_OutputSlots: + - {fileID: 8926484042661617544} + m_Operands: + - name: a + type: + m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + - name: b + type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 +--- !u!114 &8926484042661617538 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -20989,31 +21106,30 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617522} + m_MasterSlot: {fileID: 8926484042661617538} m_MasterData: - m_Owner: {fileID: 8926484042661617125} + m_Owner: {fileID: 8926484042661617536} m_Value: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 + m_SerializableObject: -1 m_Space: -1 m_Property: - name: Tex Index + name: b m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661617128} ---- !u!114 &8926484042661617523 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617540 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -21024,33 +21140,34 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat3 m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: - - {fileID: 8926484042661617524} - - {fileID: 8926484042661617525} - - {fileID: 8926484042661617526} + - {fileID: 8926484042661617541} + - {fileID: 8926484042661617542} + - {fileID: 8926484042661617543} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617523} + m_MasterSlot: {fileID: 8926484042661617540} m_MasterData: - m_Owner: {fileID: 8926484042661617172} + m_Owner: {fileID: 8926484042661617536} m_Value: m_Type: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' + m_SerializableObject: '{"x":1.0,"y":1.0,"z":1.0}' m_Space: -1 m_Property: - name: Position + name: a m_serializedType: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_Direction: 1 - m_LinkedSlots: [] ---- !u!114 &8926484042661617524 + m_Direction: 0 + m_LinkedSlots: + - {fileID: 8926484042661617532} +--- !u!114 &8926484042661617541 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -21061,14 +21178,14 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617523} + m_Parent: {fileID: 8926484042661617540} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617523} + m_MasterSlot: {fileID: 8926484042661617540} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -21081,10 +21198,9 @@ MonoBehaviour: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661617371} ---- !u!114 &8926484042661617525 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617542 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -21095,14 +21211,14 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617523} + m_Parent: {fileID: 8926484042661617540} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617523} + m_MasterSlot: {fileID: 8926484042661617540} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -21115,10 +21231,9 @@ MonoBehaviour: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661617372} ---- !u!114 &8926484042661617526 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617543 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -21129,14 +21244,14 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617523} + m_Parent: {fileID: 8926484042661617540} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617523} + m_MasterSlot: {fileID: 8926484042661617540} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -21149,9 +21264,9 @@ MonoBehaviour: m_serializedType: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_Direction: 1 + m_Direction: 0 m_LinkedSlots: [] ---- !u!114 &8926484042661617527 +--- !u!114 &8926484042661617544 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -21162,33 +21277,34 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: ac39bd03fca81b849929b9c966f1836a, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat3 m_UIIgnoredErrors: [] m_Parent: {fileID: 0} m_Children: - - {fileID: 8926484042661617528} - - {fileID: 8926484042661617529} - - {fileID: 8926484042661617530} + - {fileID: 8926484042661617545} + - {fileID: 8926484042661617546} + - {fileID: 8926484042661617547} m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617527} + m_MasterSlot: {fileID: 8926484042661617544} m_MasterData: - m_Owner: {fileID: 8926484042661617411} + m_Owner: {fileID: 8926484042661617536} m_Value: m_Type: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"x":0.0,"y":0.0,"z":0.0}' + m_SerializableObject: m_Space: -1 m_Property: - name: Collision Event Position + name: m_serializedType: m_SerializableType: UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null m_Direction: 1 - m_LinkedSlots: [] ---- !u!114 &8926484042661617528 + m_LinkedSlots: + - {fileID: 8926484042661617238} +--- !u!114 &8926484042661617545 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -21199,14 +21315,14 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617527} + m_Parent: {fileID: 8926484042661617544} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617527} + m_MasterSlot: {fileID: 8926484042661617544} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -21220,9 +21336,8 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661617357} ---- !u!114 &8926484042661617529 + m_LinkedSlots: [] +--- !u!114 &8926484042661617546 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -21233,14 +21348,14 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617527} + m_Parent: {fileID: 8926484042661617544} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617527} + m_MasterSlot: {fileID: 8926484042661617544} m_MasterData: m_Owner: {fileID: 0} m_Value: @@ -21254,9 +21369,8 @@ MonoBehaviour: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 m_Direction: 1 - m_LinkedSlots: - - {fileID: 8926484042661617358} ---- !u!114 &8926484042661617530 + m_LinkedSlots: [] +--- !u!114 &8926484042661617547 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -21267,14 +21381,14 @@ MonoBehaviour: m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f780aa281814f9842a7c076d436932e7, type: 3} m_Name: - m_EditorClassIdentifier: + m_EditorClassIdentifier: Unity.VisualEffectGraph.Editor::UnityEditor.VFX.VFXSlotFloat m_UIIgnoredErrors: [] - m_Parent: {fileID: 8926484042661617527} + m_Parent: {fileID: 8926484042661617544} m_Children: [] m_UIPosition: {x: 0, y: 0} m_UICollapsed: 1 m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617527} + m_MasterSlot: {fileID: 8926484042661617544} m_MasterData: m_Owner: {fileID: 0} m_Value: From 2686ef1e432c0ea89a2f59546b6cffeafcb2e4b5 Mon Sep 17 00:00:00 2001 From: Kirill Titov Date: Wed, 10 Sep 2025 22:58:52 +0000 Subject: [PATCH 06/65] [Port] [6000.3] Revert Merge PR #74054 --- .../Editor/2D/PixelPerfectCameraEditor.cs | 14 - .../Editor/2D/Renderer2DDataEditor.cs | 35 +- .../Editor/BuildProcessors/URPProcessScene.cs | 109 +++--- ...alRenderPipelineCameraUI.Output.Drawers.cs | 252 +++++++------- ...enderPipelineCameraUI.Rendering.Drawers.cs | 86 +---- .../ScreenSpaceAmbientOcclusionEditor.cs | 7 +- .../ScriptableRendererFeature.txt | 11 - .../Editor/ScriptableRendererDataEditor.cs | 304 ++++------------ .../SerializedUniversalRenderPipelineAsset.cs | 24 -- .../UniversalRenderPipelineAssetUI.Drawers.cs | 326 +++--------------- .../UniversalRenderPipelineAssetUI.Skin.cs | 13 - .../Editor/UniversalRendererDataEditor.cs | 75 ++-- .../Runtime/2D/PixelPerfectCamera.cs | 124 ++++--- .../2D/Rendergraph/DrawNormal2DPass.cs | 2 +- .../2D/Rendergraph/DrawRenderer2DPass.cs | 2 +- .../2D/Rendergraph/Renderer2DRendergraph.cs | 55 +-- .../Data/UniversalRenderPipelineAsset.cs | 117 ++----- .../Runtime/Deprecated.cs | 10 + .../FrameData/Universal2DResourceData.cs | 1 - .../Runtime/FrameData/UniversalCameraData.cs | 15 - .../FrameData/UniversalResourceBase.cs | 8 - .../FrameData/UniversalResourceData.cs | 1 - .../Runtime/IntermediateTextureMode.cs | 9 +- .../RendererFeatures/DecalRendererFeature.cs | 3 - .../FullScreenPassRendererFeature.cs | 18 +- .../Runtime/RendererFeatures/RenderObjects.cs | 3 - .../ScreenSpaceAmbientOcclusion.cs | 3 - .../RendererFeatures/ScreenSpaceShadows.cs | 3 - .../Runtime/ScriptableRenderer.cs | 73 +--- .../Runtime/ScriptableRendererFeature.cs | 11 +- .../Runtime/UniversalRenderPipeline.cs | 8 +- .../Runtime/UniversalRenderer.cs | 6 +- .../Runtime/UniversalRendererData.cs | 18 +- .../Runtime/UniversalRendererRenderGraph.cs | 12 +- 34 files changed, 522 insertions(+), 1236 deletions(-) diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/PixelPerfectCameraEditor.cs b/Packages/com.unity.render-pipelines.universal/Editor/2D/PixelPerfectCameraEditor.cs index 32a314f9355..59b9a2a005b 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/PixelPerfectCameraEditor.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/PixelPerfectCameraEditor.cs @@ -22,7 +22,6 @@ private class Style public const string cameraStackingWarning = "Pixel Perfect Camera won't function properly if stacked with another camera."; public const string nonRenderer2DWarning = "URP Pixel Perfect Camera requires a camera using a 2D Renderer. Some features, such as Upscale Render Texture, are not supported with other Renderers."; public const string nonRenderer2DError = "URP Pixel Perfect Camera requires a camera using a 2D Renderer."; - public const string intermediateTextureForbiddenError = "URP Pixel Perfect Camera requires intermediate texture to apply but this is currently prevented on the current URP Asset."; public GUIStyle centeredLabel; @@ -86,14 +85,6 @@ bool UsingRenderer2D() return false; } - bool IsIntermediateTextureForbidden() - { - var asset = UniversalRenderPipeline.asset as UniversalRenderPipelineAsset; - if (asset == null) - return false; - return asset.intermediateTextureMode == IntermediateTextureMode.Never; - } - void CheckForCameraStacking() { m_CameraStacking = false; @@ -148,11 +139,6 @@ public override void OnInspectorGUI() EditorGUILayout.HelpBox(Style.nonRenderer2DError, MessageType.Error); return; } - else if (IsIntermediateTextureForbidden()) - { - EditorGUILayout.HelpBox(Style.intermediateTextureForbiddenError, MessageType.Error); - return; - } else if (!UsingRenderer2D()) { EditorGUILayout.HelpBox(Style.nonRenderer2DWarning, MessageType.Warning); diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/Renderer2DDataEditor.cs b/Packages/com.unity.render-pipelines.universal/Editor/2D/Renderer2DDataEditor.cs index 59b122946cd..ced1ddbee80 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/Renderer2DDataEditor.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/Renderer2DDataEditor.cs @@ -143,8 +143,6 @@ private void OnDestroy() public override void OnInspectorGUI() { serializedObject.Update(); - - DisplayIntermediateTextureWarnings(); DrawFiltering(); DrawGeneral(); @@ -222,11 +220,7 @@ private void DrawGeneral() if (m_DefaultMaterialType.intValue == (int)Renderer2DData.Renderer2DDefaultMaterialType.Custom) EditorGUILayout.PropertyField(m_DefaultCustomMaterial, Styles.defaultCustomMaterial); - if (isIntermediateTextureForbidden) - using (new EditorGUI.DisabledScope(true)) - EditorGUILayout.Toggle(UniversalRenderPipelineAssetUI.Styles.GetNoIntermediateTextureVariant(Styles.useDepthStencilBuffer), false); - else - EditorGUILayout.PropertyField(m_UseDepthStencilBuffer, Styles.useDepthStencilBuffer); + EditorGUILayout.PropertyField(m_UseDepthStencilBuffer, Styles.useDepthStencilBuffer); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(m_HDREmulationScale, Styles.hdrEmulationScale); @@ -280,28 +274,17 @@ private void DrawPostProcessing() if (!m_PostProcessingFoldout.value) return; - if (isIntermediateTextureForbidden) - using (new EditorGUI.DisabledScope(true)) - { - EditorGUILayout.Toggle(UniversalRenderPipelineAssetUI.Styles.GetNoIntermediateTextureVariant(Styles.postProcessIncluded), false); - EditorGUI.indentLevel++; - EditorGUILayout.ObjectField(UniversalRenderPipelineAssetUI.Styles.GetNoIntermediateTextureVariant(Styles.postProcessData), null, typeof(PostProcessData), allowSceneObjects: false); - EditorGUI.indentLevel--; - } - else + EditorGUI.BeginChangeCheck(); + var postProcessIncluded = EditorGUILayout.Toggle(Styles.postProcessIncluded, m_PostProcessData.objectReferenceValue != null); + if (EditorGUI.EndChangeCheck()) { - EditorGUI.BeginChangeCheck(); - var postProcessIncluded = EditorGUILayout.Toggle(Styles.postProcessIncluded, m_PostProcessData.objectReferenceValue != null); - if (EditorGUI.EndChangeCheck()) - { - m_PostProcessData.objectReferenceValue = postProcessIncluded ? UnityEngine.Rendering.Universal.PostProcessData.GetDefaultPostProcessData() : null; - } - - EditorGUI.indentLevel++; - EditorGUILayout.PropertyField(m_PostProcessData, Styles.postProcessData); - EditorGUI.indentLevel--; + m_PostProcessData.objectReferenceValue = postProcessIncluded ? UnityEngine.Rendering.Universal.PostProcessData.GetDefaultPostProcessData() : null; } + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(m_PostProcessData, Styles.postProcessData); + EditorGUI.indentLevel--; + EditorGUILayout.Space(); } } diff --git a/Packages/com.unity.render-pipelines.universal/Editor/BuildProcessors/URPProcessScene.cs b/Packages/com.unity.render-pipelines.universal/Editor/BuildProcessors/URPProcessScene.cs index 9452cbfa9e0..1647f1a85bf 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/BuildProcessors/URPProcessScene.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/BuildProcessors/URPProcessScene.cs @@ -1,10 +1,8 @@ -using System.Text; using UnityEditor.Build; using UnityEditor.Build.Reporting; using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; -using UnityEngine.SceneManagement; namespace UnityEditor.Rendering.Universal { @@ -12,78 +10,55 @@ class URPProcessScene : IProcessSceneWithReport { public int callbackOrder => 0; - public void OnProcessScene(Scene scene, BuildReport report) + public void OnProcessScene(UnityEngine.SceneManagement.Scene scene, BuildReport report) { - if (GraphicsSettings.currentRenderPipeline is not UniversalRenderPipelineAsset rpAsset) - return; - - var builder = new StringBuilder(); - int warningCount = 0; - foreach (GameObject root in scene.GetRootGameObjects()) + bool usesURP = false; + if (GraphicsSettings.defaultRenderPipeline as UniversalRenderPipelineAsset != null) { - foreach (Light light in root.GetComponentsInChildren(includeInactive: true)) - CheckLights(builder, ref warningCount, light); - - if (rpAsset.intermediateTextureMode != IntermediateTextureMode.Never) - continue; - - foreach (UniversalAdditionalCameraData cameraData in root.GetComponentsInChildren(includeInactive: true)) - CheckCameraData(builder, ref warningCount, cameraData); + // ^ The global pipeline is set to URP + usesURP = true; } - - if (warningCount > 0) - Debug.LogWarning($"Scene '{scene.path}' has {warningCount} incompatibilit{(warningCount > 1 ? "ies" : "y")}:\n{builder}"); - } - - private void CheckLights(StringBuilder builder, ref int count, Light light) - { - switch (light.type) + else { - case LightType.Rectangle when light.lightmapBakeType != LightmapBakeType.Baked: - AddWarning(builder, ref count, - $"The GameObject '{GetHierarchyPath(light.transform)}' is an area light type, but the mode is not set to baked. URP only supports baked area lights, not realtime or mixed ones."); - break; - case LightType.Directional: - case LightType.Point: - case LightType.Spot: - case LightType.Rectangle: - break; // Supported types. - default: - AddWarning(builder, ref count, $"The {light.type} light type on the GameObject '{GetHierarchyPath(light.transform)}' is unsupported by URP and will not be rendered."); - break; + // ^ The global pipeline isn't set to URP, but a quality setting could still use it + for (int i = 0; i < QualitySettings.count; i++) + { + if (QualitySettings.GetRenderPipelineAssetAt(i) as UniversalRenderPipelineAsset != null) + { + // ^ This quality setting uses URP + usesURP = true; + break; + } + } } - } - private void CheckCameraData(StringBuilder builder, ref int count, UniversalAdditionalCameraData camData) - { - CheckCameraSetting(builder, ref count, camData, camData.renderPostProcessing, "Post-processing"); - CheckCameraSetting(builder, ref count, camData, camData.allowHDROutput, "HDR Output"); - CheckCameraSetting(builder, ref count, camData, camData.requiresColorTexture, "_CameraOpaqueTexture"); - CheckCameraSetting(builder, ref count, camData, camData.requiresDepthTexture, "_CameraDepthTexture"); - } - - void CheckCameraSetting(StringBuilder builder, ref int count, UniversalAdditionalCameraData data, bool isEnabled, string featureName) - { - if (isEnabled) - AddWarning(builder, ref count, - $"Camera '{GetHierarchyPath(data.transform)}': '{featureName}' is enabled, but the URP Asset disables the required intermediate texture. The feature will be skipped."); - } - - void AddWarning(StringBuilder builder, ref int currentCount, string message) - { - currentCount++; - builder.AppendLine($" - {currentCount}: {message}"); - } - - string GetHierarchyPath(Transform transform) - { - using (ListPool.Get(out var pathSegments)) + if (usesURP) { - for (var t = transform; t != null; t = t.parent) - pathSegments.Add(t.name); - pathSegments.Reverse(); - return string.Join("/", pathSegments); + GameObject[] roots = scene.GetRootGameObjects(); + + foreach (GameObject root in roots) + { + Light[] lights = root.GetComponentsInChildren(); + foreach (Light light in lights) + { + if (light.type != LightType.Directional && + light.type != LightType.Point && + light.type != LightType.Spot && + light.type != LightType.Rectangle) + { + Debug.LogWarning( + $"The {light.type} light type on the GameObject '{light.gameObject.name}' is unsupported by URP, and will not be rendered." + ); + } + else if (light.type == LightType.Rectangle && light.lightmapBakeType != LightmapBakeType.Baked) + { + Debug.LogWarning( + $"The GameObject '{light.gameObject.name}' is an area light type, but the mode is not set to baked. URP only supports baked area lights, not realtime or mixed ones." + ); + } + } + } } } } -} \ No newline at end of file +} diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Camera/UniversalRenderPipelineCameraUI.Output.Drawers.cs b/Packages/com.unity.render-pipelines.universal/Editor/Camera/UniversalRenderPipelineCameraUI.Output.Drawers.cs index 7c48fb406c8..51b060af71e 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/Camera/UniversalRenderPipelineCameraUI.Output.Drawers.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/Camera/UniversalRenderPipelineCameraUI.Output.Drawers.cs @@ -41,7 +41,7 @@ static Output() CED.Group( CED.Group(DrawerOutputHDR), CED.Conditional( - (serialized, owner) => PlayerSettings.allowHDRDisplaySupport && !Rendering.IsIntermediateTextureForbidden(UniversalRenderPipeline.asset), + (serialized, owner) => PlayerSettings.allowHDRDisplaySupport, CED.Group(DrawerOutputHDROutput) ), CED.Group(DrawerOutputMSAA), @@ -54,72 +54,78 @@ static Output() static void DrawerOutputMultiDisplay(UniversalRenderPipelineSerializedCamera p, Editor owner) { - using var checkScope = new EditorGUI.ChangeCheckScope(); - p.baseCameraSettings.DrawMultiDisplay(); - if (checkScope.changed) + using (var checkScope = new EditorGUI.ChangeCheckScope()) { - UpdateStackCamerasOutput(p, camera => + p.baseCameraSettings.DrawMultiDisplay(); + if (checkScope.changed) { - bool isChanged = false; - // Force same target display - int targetDisplay = p.baseCameraSettings.targetDisplay.intValue; - if (camera.targetDisplay != targetDisplay) + UpdateStackCamerasOutput(p, camera => { - camera.targetDisplay = targetDisplay; - isChanged = true; - } + bool isChanged = false; + // Force same target display + int targetDisplay = p.baseCameraSettings.targetDisplay.intValue; + if (camera.targetDisplay != targetDisplay) + { + camera.targetDisplay = targetDisplay; + isChanged = true; + } - // Force same target display - StereoTargetEyeMask stereoTargetEye = (StereoTargetEyeMask)p.baseCameraSettings.targetEye.intValue; - if (camera.stereoTargetEye != stereoTargetEye) - { - camera.stereoTargetEye = stereoTargetEye; - isChanged = true; - } + // Force same target display + StereoTargetEyeMask stereoTargetEye = (StereoTargetEyeMask)p.baseCameraSettings.targetEye.intValue; + if (camera.stereoTargetEye != stereoTargetEye) + { + camera.stereoTargetEye = stereoTargetEye; + isChanged = true; + } - return isChanged; - }); + return isChanged; + }); + } } } static void DrawerOutputAllowDynamicResolution(UniversalRenderPipelineSerializedCamera p, Editor owner) { - using var checkScope = new EditorGUI.ChangeCheckScope(); - CameraUI.Output.Drawer_Output_AllowDynamicResolution(p, owner, Styles.allowDynamicResolution); - if (checkScope.changed) + using (var checkScope = new EditorGUI.ChangeCheckScope()) { - UpdateStackCamerasOutput(p, camera => + CameraUI.Output.Drawer_Output_AllowDynamicResolution(p, owner, Styles.allowDynamicResolution); + if (checkScope.changed) { - bool allowDynamicResolution = p.allowDynamicResolution.boolValue; + UpdateStackCamerasOutput(p, camera => + { + bool allowDynamicResolution = p.allowDynamicResolution.boolValue; - if (camera.allowDynamicResolution == p.allowDynamicResolution.boolValue) - return false; + if (camera.allowDynamicResolution == p.allowDynamicResolution.boolValue) + return false; - EditorUtility.SetDirty(camera); + EditorUtility.SetDirty(camera); - camera.allowDynamicResolution = allowDynamicResolution; - return true; - }); + camera.allowDynamicResolution = allowDynamicResolution; + return true; + }); + } } } static void DrawerOutputNormalizedViewPort(UniversalRenderPipelineSerializedCamera p, Editor owner) { - using var checkScope = new EditorGUI.ChangeCheckScope(); - CameraUI.Output.Drawer_Output_NormalizedViewPort(p, owner); - if (checkScope.changed) + using (var checkScope = new EditorGUI.ChangeCheckScope()) { - UpdateStackCamerasOutput(p, camera => + CameraUI.Output.Drawer_Output_NormalizedViewPort(p, owner); + if (checkScope.changed) { - Rect rect = p.baseCameraSettings.normalizedViewPortRect.rectValue; - if (camera.rect != rect) + UpdateStackCamerasOutput(p, camera => { - camera.rect = p.baseCameraSettings.normalizedViewPortRect.rectValue; - return true; - } + Rect rect = p.baseCameraSettings.normalizedViewPortRect.rectValue; + if (camera.rect != rect) + { + camera.rect = p.baseCameraSettings.normalizedViewPortRect.rectValue; + return true; + } - return false; - }); + return false; + }); + } } } @@ -142,31 +148,33 @@ static void UpdateStackCamerasOutput(UniversalRenderPipelineSerializedCamera p, static void DrawerOutputTargetTexture(UniversalRenderPipelineSerializedCamera p, Editor owner) { var rpAsset = UniversalRenderPipeline.asset; - using var checkScope = new EditorGUI.ChangeCheckScope(); - EditorGUILayout.PropertyField(p.baseCameraSettings.targetTexture, Styles.targetTextureLabel); - - var texture = p.baseCameraSettings.targetTexture.objectReferenceValue as RenderTexture; - if (!p.baseCameraSettings.targetTexture.hasMultipleDifferentValues && rpAsset != null) + using (var checkScope = new EditorGUI.ChangeCheckScope()) { - int pipelineSamplesCount = rpAsset.msaaSampleCount; + EditorGUILayout.PropertyField(p.baseCameraSettings.targetTexture, Styles.targetTextureLabel); - if (texture && texture.antiAliasing > pipelineSamplesCount) + var texture = p.baseCameraSettings.targetTexture.objectReferenceValue as RenderTexture; + if (!p.baseCameraSettings.targetTexture.hasMultipleDifferentValues && rpAsset != null) { - string pipelineMSAACaps = (pipelineSamplesCount > 1) ? string.Format(Styles.pipelineMSAACapsSupportSamples, pipelineSamplesCount) : Styles.pipelineMSAACapsDisabled; - EditorGUILayout.HelpBox(string.Format(Styles.cameraTargetTextureMSAA, texture.antiAliasing, pipelineMSAACaps), MessageType.Warning, true); + int pipelineSamplesCount = rpAsset.msaaSampleCount; + + if (texture && texture.antiAliasing > pipelineSamplesCount) + { + string pipelineMSAACaps = (pipelineSamplesCount > 1) ? string.Format(Styles.pipelineMSAACapsSupportSamples, pipelineSamplesCount) : Styles.pipelineMSAACapsDisabled; + EditorGUILayout.HelpBox(string.Format(Styles.cameraTargetTextureMSAA, texture.antiAliasing, pipelineMSAACaps), MessageType.Warning, true); + } } - } - if (checkScope.changed) - { - UpdateStackCamerasOutput(p, camera => + if (checkScope.changed) { - if (camera.targetTexture == texture) - return false; + UpdateStackCamerasOutput(p, camera => + { + if (camera.targetTexture == texture) + return false; - camera.targetTexture = texture; - return true; - }); + camera.targetTexture = texture; + return true; + }); + } } } @@ -174,87 +182,97 @@ static void DrawerOutputTargetTexture(UniversalRenderPipelineSerializedCamera p, static void DrawerOutputXRRendering(UniversalRenderPipelineSerializedCamera p, Editor owner) { Rect controlRect = EditorGUILayout.GetControlRect(true); - using var propertyScope = new EditorGUI.PropertyScope(controlRect, Styles.xrTargetEye, p.allowXRRendering); - using var checkScope = new EditorGUI.ChangeCheckScope(); - - int selectedValue = !p.allowXRRendering.boolValue ? 0 : 1; - bool allowXRRendering = EditorGUI.IntPopup(controlRect, Styles.xrTargetEye, selectedValue, Styles.xrTargetEyeOptions, Styles.xrTargetEyeValues) == 1; - if (checkScope.changed) - p.allowXRRendering.boolValue = allowXRRendering; + EditorGUI.BeginProperty(controlRect, Styles.xrTargetEye, p.allowXRRendering); + { + using (var checkScope = new EditorGUI.ChangeCheckScope()) + { + int selectedValue = !p.allowXRRendering.boolValue ? 0 : 1; + bool allowXRRendering = EditorGUI.IntPopup(controlRect, Styles.xrTargetEye, selectedValue, Styles.xrTargetEyeOptions, Styles.xrTargetEyeValues) == 1; + if (checkScope.changed) + p.allowXRRendering.boolValue = allowXRRendering; + } + } + EditorGUI.EndProperty(); } #endif static void DrawerOutputHDR(UniversalRenderPipelineSerializedCamera p, Editor owner) { - if (Rendering.IsIntermediateTextureForbidden(UniversalRenderPipeline.asset)) - { - using (new EditorGUI.DisabledScope(true)) - EditorGUILayout.IntPopup(UniversalRenderPipelineAssetUI.Styles.GetNoIntermediateTextureVariant(Styles.allowHDR), 0, Styles.displayedCameraOptions, Styles.cameraOptions); - } - else + Rect controlRect = EditorGUILayout.GetControlRect(true); + EditorGUI.BeginProperty(controlRect, Styles.allowHDR, p.baseCameraSettings.HDR); { - var controlRect = EditorGUILayout.GetControlRect(true); - using var propertyScope = new EditorGUI.PropertyScope(controlRect, Styles.allowHDR, p.baseCameraSettings.HDR); - using var checkScope = new EditorGUI.ChangeCheckScope(); - - int selectedValue = !p.baseCameraSettings.HDR.boolValue ? 0 : 1; - var allowHDR = EditorGUI.IntPopup(controlRect, Styles.allowHDR, selectedValue, Styles.displayedCameraOptions, Styles.cameraOptions) == 1; - if (!checkScope.changed) - return; - - p.baseCameraSettings.HDR.boolValue = allowHDR; - UpdateStackCamerasOutput(p, camera => + using (var checkScope = new EditorGUI.ChangeCheckScope()) { - if (camera.allowHDR == allowHDR) - return false; + int selectedValue = !p.baseCameraSettings.HDR.boolValue ? 0 : 1; + var allowHDR = EditorGUI.IntPopup(controlRect, Styles.allowHDR, selectedValue, Styles.displayedCameraOptions, Styles.cameraOptions) == 1; + if (checkScope.changed) + { + p.baseCameraSettings.HDR.boolValue = allowHDR; + UpdateStackCamerasOutput(p, camera => + { + if (camera.allowHDR == allowHDR) + return false; - camera.allowHDR = allowHDR; - return true; - }); + camera.allowHDR = allowHDR; + return true; + }); + } + } } + EditorGUI.EndProperty(); } static void DrawerOutputHDROutput(UniversalRenderPipelineSerializedCamera p, Editor owner) { Rect controlRect = EditorGUILayout.GetControlRect(true); - using var propertyScope = new EditorGUI.PropertyScope(controlRect, Styles.allowHDROutput, p.allowHDROutput); - using var checkScope = new EditorGUI.ChangeCheckScope(); - - int selectedValue = !p.allowHDROutput.boolValue ? 0 : 1; - var allowHDROutput = EditorGUI.IntPopup(controlRect, Styles.allowHDROutput, selectedValue, Styles.hdrOuputOptions, Styles.hdrOuputValues) == 1; + EditorGUI.BeginProperty(controlRect, Styles.allowHDROutput, p.allowHDROutput); + { + using (var checkScope = new EditorGUI.ChangeCheckScope()) + { + int selectedValue = !p.allowHDROutput.boolValue ? 0 : 1; + var allowHDROutput = EditorGUI.IntPopup(controlRect, Styles.allowHDROutput, selectedValue, Styles.hdrOuputOptions, Styles.hdrOuputValues) == 1; - var rpAsset = UniversalRenderPipeline.asset; - bool perCameraHDRDisabled = !p.baseCameraSettings.HDR.boolValue && (rpAsset == null || rpAsset.supportsHDR); + var rpAsset = UniversalRenderPipeline.asset; + bool perCameraHDRDisabled = !p.baseCameraSettings.HDR.boolValue && (rpAsset == null || rpAsset.supportsHDR); - if (allowHDROutput && PlayerSettings.allowHDRDisplaySupport && perCameraHDRDisabled) - EditorGUILayout.HelpBox(Styles.disabledHDRRenderingWithHDROutput, MessageType.Warning); + if (allowHDROutput && PlayerSettings.allowHDRDisplaySupport && perCameraHDRDisabled) + { + EditorGUILayout.HelpBox(Styles.disabledHDRRenderingWithHDROutput, MessageType.Warning); + } - if (checkScope.changed) - p.allowHDROutput.boolValue = allowHDROutput; + if (checkScope.changed) + p.allowHDROutput.boolValue = allowHDROutput; + } + } + EditorGUI.EndProperty(); } static void DrawerOutputMSAA(UniversalRenderPipelineSerializedCamera p, Editor owner) { Rect controlRect = EditorGUILayout.GetControlRect(true); - using var propertyScope = new EditorGUI.PropertyScope(controlRect, Styles.allowMSAA, p.baseCameraSettings.allowMSAA); - using var checkScope = new EditorGUI.ChangeCheckScope(); - - int selectedValue = !p.baseCameraSettings.allowMSAA.boolValue ? 0 : 1; - var allowMSAA = EditorGUI.IntPopup(controlRect, Styles.allowMSAA, - selectedValue, Styles.displayedCameraOptions, Styles.cameraOptions) == 1; - if (!checkScope.changed) - return; - - p.baseCameraSettings.allowMSAA.boolValue = allowMSAA; - UpdateStackCamerasOutput(p, camera => + EditorGUI.BeginProperty(controlRect, Styles.allowMSAA, p.baseCameraSettings.allowMSAA); { - if (camera.allowMSAA == allowMSAA) - return false; + using (var checkScope = new EditorGUI.ChangeCheckScope()) + { + int selectedValue = !p.baseCameraSettings.allowMSAA.boolValue ? 0 : 1; + var allowMSAA = EditorGUI.IntPopup(controlRect, Styles.allowMSAA, + selectedValue, Styles.displayedCameraOptions, Styles.cameraOptions) == 1; + if (checkScope.changed) + { + p.baseCameraSettings.allowMSAA.boolValue = allowMSAA; + UpdateStackCamerasOutput(p, camera => + { + if (camera.allowMSAA == allowMSAA) + return false; - camera.allowMSAA = allowMSAA; - return true; - }); + camera.allowMSAA = allowMSAA; + return true; + }); + } + } + } + EditorGUI.EndProperty(); } } } diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Camera/UniversalRenderPipelineCameraUI.Rendering.Drawers.cs b/Packages/com.unity.render-pipelines.universal/Editor/Camera/UniversalRenderPipelineCameraUI.Rendering.Drawers.cs index d1a6c9c2768..1e2583279e6 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/Camera/UniversalRenderPipelineCameraUI.Rendering.Drawers.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/Camera/UniversalRenderPipelineCameraUI.Rendering.Drawers.cs @@ -29,15 +29,11 @@ public partial class Rendering }); private static readonly CED.IDrawer DisabledPostProcessingAAWarningDrawer = CED.Conditional( - (serialized, owner) => !serialized.renderPostProcessing.boolValue && (AntialiasingMode)serialized.antialiasing.intValue != AntialiasingMode.None && !IsIntermediateTextureForbidden(UniversalRenderPipeline.asset), + (serialized, owner) => !serialized.renderPostProcessing.boolValue && (AntialiasingMode)serialized.antialiasing.intValue != AntialiasingMode.None, (serialized, owner) => EditorGUILayout.HelpBox(Styles.disabledPostprocessingAntiAliasWarning, MessageType.Warning)); private static readonly CED.IDrawer MSAAWarningDrawer = CED.Conditional( - (serialized, owner) => - { - var asset = GraphicsSettings.currentRenderPipeline as UniversalRenderPipelineAsset; - return asset != null && asset.msaaSampleCount > 1 && serialized.baseCameraSettings.allowMSAA.boolValue == true && (AntialiasingMode)serialized.antialiasing.intValue == AntialiasingMode.TemporalAntiAliasing && !IsIntermediateTextureForbidden(asset); - }, + (serialized, owner) => (GraphicsSettings.currentRenderPipeline is UniversalRenderPipelineAsset asset && asset.msaaSampleCount > 1) && serialized.baseCameraSettings.allowMSAA.boolValue == true && (AntialiasingMode)serialized.antialiasing.intValue == AntialiasingMode.TemporalAntiAliasing, (serialized, owner) => EditorGUILayout.HelpBox(Styles.MSAAWarning, MessageType.Warning)); private static readonly CED.IDrawer PostProcessingStopNaNsWarningDrawer = CED.Conditional( @@ -69,7 +65,7 @@ public partial class Rendering DisabledPostProcessingAAWarningDrawer, MSAAWarningDrawer, CED.Conditional( - (serialized, owner) => !serialized.antialiasing.hasMultipleDifferentValues && !IsIntermediateTextureForbidden(UniversalRenderPipeline.asset), + (serialized, owner) => !serialized.antialiasing.hasMultipleDifferentValues, CED.Group( GroupOption.Indent, new[]{ @@ -187,45 +183,10 @@ static void DrawerRenderingRenderer(UniversalRenderPipelineSerializedCamera p, E if (EditorGUI.EndChangeCheck()) p.renderer.intValue = selectedRenderer; - - if (!IsIntermediateTextureForbidden(rpAsset)) - return; - - if (selectedRenderer == -1) //default renderer - selectedRenderer = rpAsset.m_DefaultRendererIndex; - var type = rpAsset.rendererDataList[selectedRenderer].GetType(); - if (type == typeof(UniversalRendererData)) - EditorUtils.QualitySettingsHelpBox( - "The active URP Asset is set to never use Intermediate Texture for maximum performance. This prevents the renderer from using the full-screen pass required by some features.\n" - + (p.cameraType.intValue == (int)CameraRenderType.Overlay - ? "Depth Texture and Post Processing" - : "Opaque Texture, Depth Texture, Post Processing, Anti Aliasing and HDR") - + " are deactivated.", - MessageType.Info, - UniversalRenderPipelineAssetUI.Expandable.Quality, - "m_IntermediateTextureMode" - ); - else if (type == typeof(Renderer2DData)) - EditorUtils.QualitySettingsHelpBox( - "The active URP Asset is set to never use Intermediate Texture for maximum performance. This prevents the renderer from using the full-screen pass required by some features.\n" - + (p.cameraType.intValue == (int)CameraRenderType.Overlay - ? "Depth Texture, Post Processing and PixelPerfectCamera" - : "Opaque Texture, Depth Texture, Post Processing, Anti Aliasing, HDR and PixelPerfectCamera") - + " are deactivated.", - MessageType.Info, - UniversalRenderPipelineAssetUI.Expandable.Quality, - "m_IntermediateTextureMode" - ); } - internal static bool IsIntermediateTextureForbidden(UniversalRenderPipelineAsset rpAsset) - => rpAsset != null && rpAsset.intermediateTextureMode == IntermediateTextureMode.Never; - static bool IsAnyRendererHasPostProcessingEnabled(UniversalRenderPipelineSerializedCamera p, UniversalRenderPipelineAsset rpAsset) { - if (IsIntermediateTextureForbidden(rpAsset)) - return false; //Post Process are not Tiled based yet - int selectedRendererOption = p.renderer.intValue; if (selectedRendererOption < -1 || selectedRendererOption >= rpAsset.m_RendererDataList.Length || p.renderer.hasMultipleDifferentValues) @@ -243,21 +204,15 @@ static bool IsAnyRendererHasPostProcessingEnabled(UniversalRenderPipelineSeriali static void DrawerRenderingAntialiasing(UniversalRenderPipelineSerializedCamera p, Editor owner) { - if (IsIntermediateTextureForbidden(UniversalRenderPipeline.asset)) - using (new EditorGUI.DisabledScope(true)) - EditorGUILayout.EnumPopup(UniversalRenderPipelineAssetUI.Styles.GetNoIntermediateTextureVariant(Styles.antialiasing), AntialiasingMode.None); - else + Rect antiAliasingRect = EditorGUILayout.GetControlRect(); + EditorGUI.BeginProperty(antiAliasingRect, Styles.antialiasing, p.antialiasing); { - Rect antiAliasingRect = EditorGUILayout.GetControlRect(); - EditorGUI.BeginProperty(antiAliasingRect, Styles.antialiasing, p.antialiasing); - { - EditorGUI.BeginChangeCheck(); - int selectedValue = (int)(AntialiasingMode)EditorGUI.EnumPopup(antiAliasingRect, Styles.antialiasing, (AntialiasingMode)p.antialiasing.intValue); - if (EditorGUI.EndChangeCheck()) - p.antialiasing.intValue = selectedValue; - } - EditorGUI.EndProperty(); + EditorGUI.BeginChangeCheck(); + int selectedValue = (int)(AntialiasingMode)EditorGUI.EnumPopup(antiAliasingRect, Styles.antialiasing, (AntialiasingMode)p.antialiasing.intValue); + if (EditorGUI.EndChangeCheck()) + p.antialiasing.intValue = selectedValue; } + EditorGUI.EndProperty(); } static void DrawerRenderingClearDepth(UniversalRenderPipelineSerializedCamera p, Editor owner) @@ -281,7 +236,8 @@ static void DrawerRenderingTAAQuality(UniversalRenderPipelineSerializedCamera p, { // FSR overrides TAA CAS settings. Disable this setting when FSR is enabled. - bool disableSharpnessControl = UniversalRenderPipeline.asset != null && (UniversalRenderPipeline.asset.upscalingFilter == UpscalingFilterSelection.FSR); + bool disableSharpnessControl = UniversalRenderPipeline.asset != null ? + (UniversalRenderPipeline.asset.upscalingFilter == UpscalingFilterSelection.FSR) : false; using var disable = new EditorGUI.DisabledScope(disableSharpnessControl); EditorGUILayout.Slider(p.taaContrastAdaptiveSharpening, 0.0f, 1.0f, Styles.taaContrastAdaptiveSharpening); @@ -318,11 +274,7 @@ static void DrawerRenderingTAAQuality(UniversalRenderPipelineSerializedCamera p, static void DrawerRenderingRenderPostProcessing(UniversalRenderPipelineSerializedCamera p, Editor owner) { - if (IsIntermediateTextureForbidden(UniversalRenderPipeline.asset)) - using (new EditorGUI.DisabledScope(true)) - EditorGUILayout.Toggle(UniversalRenderPipelineAssetUI.Styles.GetNoIntermediateTextureVariant(Styles.renderPostProcessing), false); - else - EditorGUILayout.PropertyField(p.renderPostProcessing, Styles.renderPostProcessing); + EditorGUILayout.PropertyField(p.renderPostProcessing, Styles.renderPostProcessing); } static void DrawerRenderingPriority(UniversalRenderPipelineSerializedCamera p, Editor owner) @@ -332,20 +284,12 @@ static void DrawerRenderingPriority(UniversalRenderPipelineSerializedCamera p, E static void DrawerRenderingDepthTexture(UniversalRenderPipelineSerializedCamera p, Editor owner) { - if (IsIntermediateTextureForbidden(UniversalRenderPipeline.asset)) - using (new EditorGUI.DisabledScope(true)) - EditorGUILayout.EnumPopup(UniversalRenderPipelineAssetUI.Styles.GetNoIntermediateTextureVariant(Styles.requireDepthTexture), CameraOverrideOption.Off); - else - EditorGUILayout.PropertyField(p.renderDepth, Styles.requireDepthTexture); + EditorGUILayout.PropertyField(p.renderDepth, Styles.requireDepthTexture); } static void DrawerRenderingOpaqueTexture(UniversalRenderPipelineSerializedCamera p, Editor owner) { - if (IsIntermediateTextureForbidden(UniversalRenderPipeline.asset)) - using (new EditorGUI.DisabledScope(true)) - EditorGUILayout.EnumPopup(UniversalRenderPipelineAssetUI.Styles.GetNoIntermediateTextureVariant(Styles.requireOpaqueTexture), CameraOverrideOption.Off); - else - EditorGUILayout.PropertyField(p.renderOpaque, Styles.requireOpaqueTexture); + EditorGUILayout.PropertyField(p.renderOpaque, Styles.requireOpaqueTexture); } } } diff --git a/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/ScreenSpaceAmbientOcclusionEditor.cs b/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/ScreenSpaceAmbientOcclusionEditor.cs index 3e30de426de..2ea26a3a23b 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/ScreenSpaceAmbientOcclusionEditor.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/ScreenSpaceAmbientOcclusionEditor.cs @@ -111,16 +111,15 @@ public override void OnInspectorGUI() EditorGUI.indentLevel++; // Selecting source is not available for Deferred Rendering... - bool oldEnablement = GUI.enabled; - GUI.enabled &= !isDeferredRenderingMode; + GUI.enabled = !isDeferredRenderingMode; EditorGUILayout.PropertyField(m_Source, Styles.Source); // We only enable this field when depth source is selected... - GUI.enabled &= m_Source.enumValueIndex == (int)ScreenSpaceAmbientOcclusionSettings.DepthSource.Depth; + GUI.enabled = !isDeferredRenderingMode && m_Source.enumValueIndex == (int)ScreenSpaceAmbientOcclusionSettings.DepthSource.Depth; EditorGUI.indentLevel++; EditorGUILayout.PropertyField(m_NormalQuality, Styles.NormalQuality); EditorGUI.indentLevel--; - GUI.enabled = oldEnablement; + GUI.enabled = true; EditorGUILayout.PropertyField(m_Downsample, Styles.Downsample); EditorGUILayout.PropertyField(m_AfterOpaque, Styles.AfterOpaque); diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ScriptTemplates/ScriptableRendererFeature.txt b/Packages/com.unity.render-pipelines.universal/Editor/ScriptTemplates/ScriptableRendererFeature.txt index b31bd5a3beb..c1b3bb11d19 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/ScriptTemplates/ScriptableRendererFeature.txt +++ b/Packages/com.unity.render-pipelines.universal/Editor/ScriptTemplates/ScriptableRendererFeature.txt @@ -9,17 +9,6 @@ public class #SCRIPTNAME# : ScriptableRendererFeature [SerializeField] #SCRIPTNAME#Settings settings; #SCRIPTNAME#Pass m_ScriptablePass; - // Override this property to declare the feature's dependency on an intermediate texture. - // This allows the renderer to optimize its setup by skipping this feature early if it's incompatible with - // the pipeline's Intermediate Texture setting (when set to 'Never'). - // - // - Set to `Required`: If your feature's passes require an intermediate texture (for example, for color or depth input). - // - Set to `NotRequired`: For a small performance boost, if you are certain the feature does not need an intermediate texture. - // - Default (`Unknown`): This is a safe fallback, but the renderer might do unnecessary work before discovering an incompatibility. - // - // Note: URP still validates the usage in the Editor and in Development builds, even if this is set to `No`. - // protected override IntermediateTextureUsage useIntermediateTextures => IntermediateTextureUsage.Required; - /// public override void Create() { diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ScriptableRendererDataEditor.cs b/Packages/com.unity.render-pipelines.universal/Editor/ScriptableRendererDataEditor.cs index 41075723a3c..4e777fd1329 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/ScriptableRendererDataEditor.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/ScriptableRendererDataEditor.cs @@ -39,15 +39,15 @@ static Styles() private SerializedProperty m_RendererFeatures; private SerializedProperty m_RendererFeaturesMap; private SerializedProperty m_FalseBool; - bool? m_IsIntermediateTextureForbidden = null; [SerializeField] private bool falseBool = false; List m_Editors = new List(); - + // Computed on first access on this editor frame, and cleaned at the end of OnInspectorGUI /// /// Compute if this ScriptableRenderer is contained by an URPAsset that has IntermediateTextureMode == Never. /// - protected bool isIntermediateTextureForbidden => m_IsIntermediateTextureForbidden ??= DetermineIfIntermediateTexturesAreForbidden(); + [Obsolete("This method is not used. #from(6000.3)", false)] + protected bool isIntermediateTextureForbidden => false; private void OnEnable() { @@ -107,9 +107,6 @@ private void DrawRendererFeatureList() FilterWindow.Show(pos, new ScriptableRendererFeatureProvider(this)); } } - - // clean cache to force check again on next frame - m_IsIntermediateTextureForbidden = null; } internal bool GetCustomTitle(Type type, out string title) @@ -124,6 +121,15 @@ internal bool GetCustomTitle(Type type, out string title) return false; } + /// + /// Draws a warning when IntermediateTextureMode is set to Never. + /// Should be called at the top of the Inspector. + /// + [Obsolete("This method is not used. #from(6000.3)", false)] + protected void DisplayIntermediateTextureWarnings() + { + } + private bool GetTooltip(Type type, out string tooltip) { var attribute = type.GetCustomAttribute(); @@ -135,252 +141,91 @@ private bool GetTooltip(Type type, out string tooltip) tooltip = string.Empty; return false; } - - bool DetermineIfIntermediateTexturesAreForbidden() - { - var thisRenderer = target as ScriptableRendererData; - if (thisRenderer == null) - return false; - - // Check current render pipeline asset. - var currentAsset = GraphicsSettings.currentRenderPipeline as UniversalRenderPipelineAsset; - if (currentAsset != null) - { - foreach (var renderer in currentAsset.rendererDataList) - { - if (renderer != thisRenderer) - continue; - - if (currentAsset.intermediateTextureMode == IntermediateTextureMode.Never) - return true; - } - } - - // Determine if IntermediateTexture is forbidden by any Quality Levels - for (int i = 0; i < QualitySettings.count; ++i) - { - var qualityAsset = QualitySettings.GetRenderPipelineAssetAt(i) as UniversalRenderPipelineAsset; - if (qualityAsset == null) - continue; - - foreach (var renderer in qualityAsset.rendererDataList) - { - if (renderer != thisRenderer) - continue; - - if (qualityAsset.intermediateTextureMode == IntermediateTextureMode.Never) - return true; - } - } - return false; - } - - /// - /// Draws a warning when IntermediateTextureMode is set to Never. - /// Should be called at the top of the Inspector. - /// - protected void DisplayIntermediateTextureWarnings() - { - if (isIntermediateTextureForbidden) - { - EditorUtils.QualitySettingsHelpBox( - "The active URP Asset is set to never use Intermediate Texture for maximum performance, and contains this Renderer. This prevents the renderer from using the full-screen pass required by some features.\nPost Processing and some RendererFeature are deactivated.", - MessageType.Info, - UniversalRenderPipelineAssetUI.Expandable.Quality, - "m_IntermediateTextureMode" - ); - EditorGUILayout.Space(); - } - } private void DrawRendererFeature(int index, ref SerializedProperty renderFeatureProperty) { - if ((renderFeatureProperty.objectReferenceValue as ScriptableRendererFeature) == null) - { - DrawMissingRendererFeature(index, renderFeatureProperty); - return; - } - DrawRendererFeatureUnchecked(index, renderFeatureProperty); - } - - private void DrawRendererFeatureUnchecked(int index, SerializedProperty renderFeatureProperty) - { - // Get the serialized object for the editor script & update it - Editor rendererFeatureEditor = m_Editors[index]; - SerializedObject serializedRendererFeaturesSerializedObject = rendererFeatureEditor.serializedObject; - serializedRendererFeaturesSerializedObject.Update(); - - ScriptableRendererFeature rendererFeature = serializedRendererFeaturesSerializedObject.targetObject as ScriptableRendererFeature; - bool disabled = isIntermediateTextureForbidden - && (rendererFeature.useIntermediateTexturesInternal == ScriptableRendererFeature.IntermediateTextureUsage.Required - || rendererFeature.deactivatedAfterIntermediateNotAllowed); - - // Foldout header - EditorGUI.BeginChangeCheck(); - bool displayContent = DrawHeader(index, renderFeatureProperty, serializedRendererFeaturesSerializedObject, disabled, out bool hasCustomTitle); - bool hasChangedProperties = EditorGUI.EndChangeCheck(); - - // ObjectEditor - if (displayContent) + Object rendererFeatureObjRef = renderFeatureProperty.objectReferenceValue; + if (rendererFeatureObjRef != null) { - if (rendererFeature.useIntermediateTexturesInternal == ScriptableRendererFeature.IntermediateTextureUsage.Unknown) - EditorGUILayout.HelpBox("This ScriptableRendererFeature has useIntermediateTexturesInternal set to unknown. It may be deactivated on activation if IntermediateTextureMode is set to Never and require IntermediateTexture.", MessageType.Warning); + bool hasChangedProperties = false; + string title; + + bool hasCustomTitle = GetCustomTitle(rendererFeatureObjRef.GetType(), out title); if (!hasCustomTitle) { - EditorGUI.BeginChangeCheck(); - SerializedProperty nameProperty = serializedRendererFeaturesSerializedObject.FindProperty("m_Name"); - nameProperty.stringValue = ValidateName(EditorGUILayout.DelayedTextField(Styles.PassNameField, nameProperty.stringValue)); - if (EditorGUI.EndChangeCheck()) - { - hasChangedProperties = true; - - // We need to update sub-asset name - serializedRendererFeaturesSerializedObject.targetObject.name = nameProperty.stringValue; - AssetDatabase.SaveAssets(); - - // Triggers update for sub-asset name change - ProjectWindowUtil.ShowCreatedAsset(target); - } + title = ObjectNames.GetInspectorTitle(rendererFeatureObjRef); } - EditorGUI.BeginChangeCheck(); - rendererFeatureEditor.OnInspectorGUI(); - hasChangedProperties |= EditorGUI.EndChangeCheck(); - - EditorGUILayout.Space(); - } - - // Apply changes and save if the user has modified any settings - if (hasChangedProperties) - { - serializedRendererFeaturesSerializedObject.ApplyModifiedProperties(); - serializedObject.ApplyModifiedProperties(); - ForceSave(); - } - } - - bool DrawHeader(int index, SerializedProperty renderFeatureProperty, SerializedObject serializedRendererFeaturesEditor, bool disabled, out bool hasCustomTitle) - { - var rendererFeature = serializedRendererFeaturesEditor.targetObject; - Type type = rendererFeature.GetType(); + string tooltip; + GetTooltip(rendererFeatureObjRef.GetType(), out tooltip); - hasCustomTitle = GetCustomTitle(type, out string titleLabel); - if (!hasCustomTitle) - titleLabel = ObjectNames.GetInspectorTitle(rendererFeature); - GetTooltip(type, out string tooltip); - GUIContent title = EditorGUIUtility.TrTextContent(titleLabel, tooltip); + string helpURL; + DocumentationUtils.TryGetHelpURL(rendererFeatureObjRef.GetType(), out helpURL); - DocumentationUtils.TryGetHelpURL(type, out string documentationURL); + // Get the serialized object for the editor script & update it + Editor rendererFeatureEditor = m_Editors[index]; + SerializedObject serializedRendererFeaturesEditor = rendererFeatureEditor.serializedObject; + serializedRendererFeaturesEditor.Update(); - if (!disabled) - { + // Foldout header + EditorGUI.BeginChangeCheck(); SerializedProperty activeProperty = serializedRendererFeaturesEditor.FindProperty("m_Active"); - return CoreEditorUtils.DrawHeaderToggle(title, renderFeatureProperty, activeProperty, pos => OnContextClick(rendererFeature, pos, index), null, null, documentationURL); - } - - // ==== - // Manually redraw the header as we cannot just disable only the toggle with ImGUI. - // Disabling fully the header in a EditorGUI.DisabledScope make it non expendable/collapsable. And buttons become unresponsives. - // This is temporary while waiting to find time to convert to UITK - // ==== - - // Update GUIContents - title = UniversalRenderPipelineAssetUI.Styles.GetNoIntermediateTextureVariant(title); - var documentationIcon = new GUIContent(CoreEditorStyles.iconHelp, $"Open Reference for {titleLabel}."); - - // Compute all rects as in CoreEditorUtils.DrawHeaderToggle - Rect backgroundRect = EditorGUI.IndentedRect(GUILayoutUtility.GetRect(1f, 17f)); - - Rect labelRect = backgroundRect; - labelRect.xMin += 32f; - labelRect.xMax -= 20f + 16 + 5; - - Rect foldoutRect = backgroundRect; - foldoutRect.y += 1f; - foldoutRect.width = 13f; - foldoutRect.height = 13f; - - Rect toggleRect = backgroundRect; - toggleRect.x += 16f; - toggleRect.y += 2f; - toggleRect.width = 13f; - toggleRect.height = 13f; - - Rect contextMenuRect = new Rect(labelRect.xMax + 3f + 16 + 5, labelRect.y + 1f, 16, 16); - - - backgroundRect.xMin = 0f; - backgroundRect.width += 4f; - - // Draw background - float backgroundTint = (EditorGUIUtility.isProSkin ? 0.1f : 1f); - EditorGUI.DrawRect(backgroundRect, new Color(backgroundTint, backgroundTint, backgroundTint, 0.2f)); - - // Draw Label and Checkbox - using (new EditorGUI.DisabledScope(true)) - { - EditorGUI.LabelField(labelRect, title, EditorStyles.boldLabel); - GUI.Toggle(toggleRect, false, GUIContent.none, CoreEditorStyles.smallTickbox); - } + bool displayContent = CoreEditorUtils.DrawHeaderToggle(EditorGUIUtility.TrTextContent(title, tooltip), renderFeatureProperty, activeProperty, pos => OnContextClick(rendererFeatureObjRef, pos, index), null, null, helpURL); + hasChangedProperties |= EditorGUI.EndChangeCheck(); - // Draw collapsing toggle - renderFeatureProperty.serializedObject.Update(); - bool expanded = GUI.Toggle(foldoutRect, renderFeatureProperty.isExpanded, GUIContent.none, EditorStyles.foldout); + // ObjectEditor + if (displayContent) + { + if (!hasCustomTitle) + { + EditorGUI.BeginChangeCheck(); + SerializedProperty nameProperty = serializedRendererFeaturesEditor.FindProperty("m_Name"); + nameProperty.stringValue = ValidateName(EditorGUILayout.DelayedTextField(Styles.PassNameField, nameProperty.stringValue)); + if (EditorGUI.EndChangeCheck()) + { + hasChangedProperties = true; + + // We need to update sub-asset name + rendererFeatureObjRef.name = nameProperty.stringValue; + AssetDatabase.SaveAssets(); + + // Triggers update for sub-asset name change + ProjectWindowUtil.ShowCreatedAsset(target); + } + } - // Draw Context menu - if (GUI.Button(contextMenuRect, CoreEditorStyles.contextMenuIcon, CoreEditorStyles.contextMenuStyle)) - OnContextClick(rendererFeature, new Vector2(contextMenuRect.x, contextMenuRect.yMax), index); + EditorGUI.BeginChangeCheck(); + rendererFeatureEditor.OnInspectorGUI(); + hasChangedProperties |= EditorGUI.EndChangeCheck(); - // Draw Documentation button - if (!string.IsNullOrEmpty(documentationURL)) - { - Rect documentationRect = contextMenuRect; - documentationRect.x -= 16 + 2; - - if (GUI.Button(documentationRect, documentationIcon, CoreEditorStyles.iconHelpStyle)) - Help.BrowseURL(documentationURL); - } + EditorGUILayout.Space(EditorGUIUtility.singleLineHeight); + } - // Handle label clicks - var e = Event.current; - if (e.type == EventType.MouseDown) - { - if (backgroundRect.Contains(e.mousePosition)) + // Apply changes and save if the user has modified any settings + if (hasChangedProperties) { - // Left click: Expand/Collapse - if (e.button == 0) - expanded ^= true; - // Right click: Context menu - else - OnContextClick(rendererFeature, e.mousePosition, index); - - e.Use(); + serializedRendererFeaturesEditor.ApplyModifiedProperties(); + serializedObject.ApplyModifiedProperties(); + ForceSave(); } } - - // Register changes - renderFeatureProperty.isExpanded = expanded; - renderFeatureProperty.serializedObject.ApplyModifiedProperties(); - - return expanded; - } - - void DrawMissingRendererFeature(int index, SerializedProperty renderFeatureProperty) - { - CoreEditorUtils.DrawHeaderToggle(Styles.MissingFeature, renderFeatureProperty, m_FalseBool, pos => OnContextClick(null, pos, index)); - m_FalseBool.boolValue = false; // always make sure false bool is false - EditorGUILayout.HelpBox(Styles.MissingFeature.tooltip, MessageType.Error); - if (GUILayout.Button("Attempt Fix", EditorStyles.miniButton)) + else { - ScriptableRendererData data = target as ScriptableRendererData; - if (!data.ValidateRendererFeatures()) + CoreEditorUtils.DrawHeaderToggle(Styles.MissingFeature, renderFeatureProperty, m_FalseBool, pos => OnContextClick(rendererFeatureObjRef, pos, index)); + m_FalseBool.boolValue = false; // always make sure false bool is false + EditorGUILayout.HelpBox(Styles.MissingFeature.tooltip, MessageType.Error); + if (GUILayout.Button("Attempt Fix", EditorStyles.miniButton)) { - if (EditorUtility.DisplayDialog("Remove Missing Renderer Feature", - "This renderer feature script is missing (likely deleted or failed to compile). Do you want to remove it from the list and delete the associated sub-asset?", - "Yes", "No")) + ScriptableRendererData data = target as ScriptableRendererData; + if (!data.ValidateRendererFeatures()) { - data.RemoveMissingRendererFeatures(); + if (EditorUtility.DisplayDialog("Remove Missing Renderer Feature", + "This renderer feature script is missing (likely deleted or failed to compile). Do you want to remove it from the list and delete the associated sub-asset?", + "Yes", "No")) + { + data.RemoveMissingRendererFeatures(); + } } } } @@ -409,6 +254,7 @@ private void OnContextClick(Object rendererFeatureObject, Vector2 position, int menu.DropDown(new Rect(position, Vector2.zero)); } + internal void AddComponent(Type type) { serializedObject.Update(); diff --git a/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs b/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs index 8de421f3937..ad5163d7bbd 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs @@ -1,4 +1,3 @@ -using System.Collections.Generic; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; @@ -22,7 +21,6 @@ internal class SerializedUniversalRenderPipelineAsset #endif public SerializedProperty hdr { get; } public SerializedProperty hdrColorBufferPrecisionProp { get; } - public SerializedProperty intermediateTextureMode { get; } public SerializedProperty msaa { get; } public SerializedProperty renderScale { get; } public SerializedProperty upscalingFilter { get; } @@ -106,15 +104,11 @@ internal class SerializedUniversalRenderPipelineAsset public EditorPrefBoolFlags state; - private SerializedProperty rendererList { get; } - public SerializedUniversalRenderPipelineAsset(SerializedObject serializedObject) { asset = serializedObject.targetObject as UniversalRenderPipelineAsset; this.serializedObject = serializedObject; - rendererList = serializedObject.FindProperty("m_RendererDataList"); - requireDepthTextureProp = serializedObject.FindProperty("m_RequireDepthTexture"); requireOpaqueTextureProp = serializedObject.FindProperty("m_RequireOpaqueTexture"); opaqueDownsamplingProp = serializedObject.FindProperty("m_OpaqueDownsampling"); @@ -124,7 +118,6 @@ public SerializedUniversalRenderPipelineAsset(SerializedObject serializedObject) hdr = serializedObject.FindProperty("m_SupportsHDR"); hdrColorBufferPrecisionProp = serializedObject.FindProperty("m_HDRColorBufferPrecision"); - intermediateTextureMode = serializedObject.FindProperty("m_IntermediateTextureMode"); msaa = serializedObject.FindProperty("m_MSAA"); renderScale = serializedObject.FindProperty("m_RenderScale"); upscalingFilter = serializedObject.FindProperty("m_UpscalingFilter"); @@ -237,22 +230,5 @@ public void Apply() { serializedObject.ApplyModifiedProperties(); } - - //TODO: refactor renderer data editor to have a serialized intermediate structure for this kind of operations - internal IEnumerable GetRendererDataProperties() where T : ScriptableRendererData - { - SerializedProperty iterator = rendererList.Copy(); - SerializedProperty end = iterator.GetEndProperty(); - iterator.NextVisible(enterChildren: true); //enter the list - while (!SerializedProperty.DataEquals(iterator, end)) - { - if (iterator.boxedValue != null && iterator.boxedValue.GetType() == typeof(T)) - yield return iterator.Copy(); - iterator.NextVisible(enterChildren: false); - } - } - - internal bool ForbidIntermediateTexture() - => intermediateTextureMode.intValue == (int)IntermediateTextureMode.Never; } } diff --git a/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs b/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs index 161d45fde6e..bb29bd57f57 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; using System.Reflection; using UnityEngine; using UnityEngine.Rendering; @@ -128,32 +126,11 @@ static void DrawRendering(SerializedUniversalRenderPipelineAsset serialized, Edi else if (!ValidateRendererGraphicsAPIs(serialized.asset, out var unsupportedGraphicsApisMessage)) EditorGUILayout.HelpBox(Styles.rendererUnsupportedAPIMessage.text + unsupportedGraphicsApisMessage, MessageType.Warning, true); - EditorGUILayout.PropertyField(serialized.intermediateTextureMode, Styles.intermediateTextureMode); - DrawIntermediateTextureHelpBox(serialized); - - bool forbidIntermediateTexture = serialized.ForbidIntermediateTexture(); - if (forbidIntermediateTexture) - { - // Depth / Opaque are texture not possible without Intermediate Textures - using (new EditorGUI.DisabledScope(true)) - { - EditorGUILayout.Toggle(Styles.GetNoIntermediateTextureVariant(Styles.requireDepthTextureText), false); - EditorGUILayout.Toggle(Styles.GetNoIntermediateTextureVariant(Styles.requireOpaqueTextureText), false); - } - } - else - { - EditorGUILayout.PropertyField(serialized.requireDepthTextureProp, Styles.requireDepthTextureText); - EditorGUILayout.PropertyField(serialized.requireOpaqueTextureProp, Styles.requireOpaqueTextureText); - } - - using (new EditorGUI.DisabledScope(!serialized.requireOpaqueTextureProp.boolValue || forbidIntermediateTexture)) - { - ++EditorGUI.indentLevel; - EditorGUILayout.PropertyField(serialized.opaqueDownsamplingProp, Styles.opaqueDownsamplingText); - --EditorGUI.indentLevel; - } - + EditorGUILayout.PropertyField(serialized.requireDepthTextureProp, Styles.requireDepthTextureText); + EditorGUILayout.PropertyField(serialized.requireOpaqueTextureProp, Styles.requireOpaqueTextureText); + EditorGUI.BeginDisabledGroup(!serialized.requireOpaqueTextureProp.boolValue); + EditorGUILayout.PropertyField(serialized.opaqueDownsamplingProp, Styles.opaqueDownsamplingText); + EditorGUI.EndDisabledGroup(); EditorGUILayout.PropertyField(serialized.supportsTerrainHolesProp, Styles.supportsTerrainHolesText); EditorGUILayout.PropertyField(serialized.gpuResidentDrawerMode, Styles.gpuResidentDrawerMode); @@ -166,14 +143,7 @@ static void DrawRendering(SerializedUniversalRenderPipelineAsset serialized, Edi { ++EditorGUI.indentLevel; serialized.smallMeshScreenPercentage.floatValue = Mathf.Clamp(EditorGUILayout.FloatField(Styles.smallMeshScreenPercentage, serialized.smallMeshScreenPercentage.floatValue), 0.0f, 20.0f); - if (forbidIntermediateTexture) - { - // GPU occlusion culling can't work without intermediate textures - using (new EditorGUI.DisabledScope(true)) - EditorGUILayout.Toggle(Styles.GetNoIntermediateTextureVariant(Styles.gpuResidentDrawerEnableOcclusionCullingInCameras), false); - } - else - EditorGUILayout.PropertyField(serialized.gpuResidentDrawerEnableOcclusionCullingInCameras, Styles.gpuResidentDrawerEnableOcclusionCullingInCameras); + EditorGUILayout.PropertyField(serialized.gpuResidentDrawerEnableOcclusionCullingInCameras, Styles.gpuResidentDrawerEnableOcclusionCullingInCameras); --EditorGUI.indentLevel; if (brgStrippingError) @@ -190,165 +160,6 @@ static void DrawRendering(SerializedUniversalRenderPipelineAsset serialized, Edi } } - static void DrawIntermediateTextureHelpBox(SerializedUniversalRenderPipelineAsset serialized) - { - FeatureRequiringIntermediateTexture hasFeatureRequireIntermediateTexture = CheckFeatureRequiringIntermediateTexture(serialized, out var problematicRendererFeatures); - - IntermediateTextureMode currentMode = (IntermediateTextureMode)serialized.intermediateTextureMode.intValue; - string message = L10n.Tr(currentMode switch - { - IntermediateTextureMode.Always => Styles.intermediateTextureAlways, - IntermediateTextureMode.Never => hasFeatureRequireIntermediateTexture > 0 ? Styles.intermediateTextureNeverWithIssue : Styles.intermediateTextureNeverWithoutIssue, - IntermediateTextureMode.Auto => hasFeatureRequireIntermediateTexture > 0 ? Styles.intermediateTextureAutoWithIssue : Styles.intermediateTextureAutoWithoutIssue, - _ => throw new NotSupportedException() - }); - string buttonLabel = hasFeatureRequireIntermediateTexture == 0 - ? null - : currentMode switch - { - IntermediateTextureMode.Always => null, - IntermediateTextureMode.Never => Styles.logBlockedFeature, - IntermediateTextureMode.Auto => Styles.logFeature, - _ => throw new NotSupportedException() - }; - - if (buttonLabel == null) - { - EditorGUILayout.HelpBox(message, MessageType.Info); - return; - } - - var fullMessage = EditorGUIUtility.TrTextContent(message, CoreEditorStyles.iconInfo); - - Rect textRect; - using (new EditorGUILayout.HorizontalScope()) - { - EditorGUILayout.PrefixLabel(GUIContent.none, s_HelpBoxWithoutBackground.Value); - textRect = GUILayoutUtility.GetRect(fullMessage, s_HelpBoxWithoutBackground.Value); - using (new EditorGUI.IndentLevelScope(-EditorGUI.indentLevel)) - EditorGUI.LabelField(textRect, fullMessage, s_HelpBoxWithoutBackground.Value); - } - - Rect buttonRect = GUILayoutUtility.GetRect(EditorGUIUtility.TrTextContent(buttonLabel), EditorStyles.miniButton, GUILayout.MinWidth(60), GUILayout.ExpandWidth(true)); - Rect fullArea = new (textRect); - fullArea.yMax = buttonRect.yMax; - - if (Event.current.type == EventType.Repaint) - EditorStyles.helpBox.Draw(fullArea, false, false, false, false); - - buttonRect.xMin = textRect.xMin + 10; - buttonRect.xMax = textRect.xMax - 10; - buttonRect.y -= 2; - bool clicked = GUI.Button(buttonRect, buttonLabel); - - if (clicked) - Debug.Log(BuildReportForIntermediateTextureIssues(buttonLabel, hasFeatureRequireIntermediateTexture, problematicRendererFeatures, serialized)); - } - - static Lazy s_HelpBoxWithoutBackground = new(() => - { - var style = new GUIStyle(EditorStyles.helpBox); - style.onNormal.scaledBackgrounds = new Texture2D[0]; //remove bg - style.name = "Custom Helpbox"; - return style; - }); - - [Flags] - enum FeatureRequiringIntermediateTexture - { - ForcedByAlways = 1, - RequiredOpaqueTexture = 2, - RequiredDepthTexture = 4, - UseHDR = 8, - UsePostProcess = 16, - RenderingFeature = 32, - UseScaling = 64, - GPUOcclusionCulling = 128, - DepthPriming = 256, - } - - static FeatureRequiringIntermediateTexture CheckFeatureRequiringIntermediateTexture(SerializedUniversalRenderPipelineAsset serialized, out HashSet scriptableRendererFeatureList) - { - IntermediateTextureMode currentMode = (IntermediateTextureMode)serialized.intermediateTextureMode.intValue; - scriptableRendererFeatureList = new(); - if (currentMode == IntermediateTextureMode.Always) - return FeatureRequiringIntermediateTexture.ForcedByAlways; //not checking the remaining in this case at it will never be logged in current implementation - - FeatureRequiringIntermediateTexture features = default; - if (serialized.requireOpaqueTextureProp.boolValue) - features |= FeatureRequiringIntermediateTexture.RequiredOpaqueTexture; - if (serialized.requireDepthTextureProp.boolValue) - features |= FeatureRequiringIntermediateTexture.RequiredDepthTexture; - if (serialized.hdr.boolValue) - features |= FeatureRequiringIntermediateTexture.UseHDR; - if (!Mathf.Approximately(serialized.renderScale.floatValue, 1f)) - features |= FeatureRequiringIntermediateTexture.UseScaling; - foreach (var rendererDataProperty in serialized.GetRendererDataProperties()) - { - var data = rendererDataProperty.objectReferenceValue as UniversalRendererData; - if (data.postProcessData != null) - features |= FeatureRequiringIntermediateTexture.UsePostProcess; - if (data.depthPrimingMode != DepthPrimingMode.Disabled) - features |= FeatureRequiringIntermediateTexture.DepthPriming; - foreach (var rendererFeature in data.rendererFeatures) - { - //Issue: we only know the pass when adding them due to design choice. - //If we are in inspector of a URPAsset not in use, it will always be false - //Todo: update design or ScriptableRendererFeature to extract pass infos from non active URPAsset - if (rendererFeature == null || !rendererFeature.deactivatedAfterIntermediateNotAllowed) - continue; - - features |= FeatureRequiringIntermediateTexture.RenderingFeature; - scriptableRendererFeatureList.Add(rendererFeature.name); - } - } - foreach (var rendererDataProperty in serialized.GetRendererDataProperties()) - { - var data = rendererDataProperty.objectReferenceValue as Renderer2DData; - if (data.postProcessData != null) - features |= FeatureRequiringIntermediateTexture.UsePostProcess; - foreach (var rendererFeature in data.rendererFeatures) - { - //Issue: we only know the pass when adding them due to design choice. - //If we are in inspector of a URPAsset not in use, it will always be false - //Todo: update design or ScriptableRendererFeature to extract pass infos from non active URPAsset - if (rendererFeature == null || !rendererFeature.deactivatedAfterIntermediateNotAllowed) - continue; - - features |= FeatureRequiringIntermediateTexture.RenderingFeature; - scriptableRendererFeatureList.Add(rendererFeature.name); - } - } - return features; - } - - static string BuildReportForIntermediateTextureIssues(string titleReport, FeatureRequiringIntermediateTexture requirements, IEnumerable problematicFeatureNames, SerializedUniversalRenderPipelineAsset serialized) - { - StringBuilder report = new(); - report.AppendLine($"{titleReport}:"); - - Append(FeatureRequiringIntermediateTexture.RequiredOpaqueTexture, $"Opaque Texture requested on {nameof(UniversalRenderPipelineAsset)}"); - Append(FeatureRequiringIntermediateTexture.RequiredDepthTexture, $"Depth Texture requested on {nameof(UniversalRenderPipelineAsset)}"); - Append(FeatureRequiringIntermediateTexture.UseHDR, $"HDR requested on {nameof(UniversalRenderPipelineAsset)}"); - Append(FeatureRequiringIntermediateTexture.UseScaling, $"Down or Up-scaling is active on {nameof(UniversalRenderPipelineAsset)}"); - Append(FeatureRequiringIntermediateTexture.UsePostProcess, $"Post process active on one of the {nameof(ScriptableRendererData)}"); - Append(FeatureRequiringIntermediateTexture.DepthPriming, $"Depth Priming is active on one of the {nameof(UniversalRendererData)}"); - - if ((requirements & FeatureRequiringIntermediateTexture.RenderingFeature) == 0) - return report.ToString(); - - report.AppendLine($" - {nameof(ScriptableRendererData)}'s {nameof(ScriptableRendererFeature)}:"); - foreach (var feature in problematicFeatureNames) - report.AppendLine($" - {feature}"); - return report.ToString(); - - void Append(FeatureRequiringIntermediateTexture flag, string text) - { - if ((requirements & flag) != 0) - report.AppendLine($" - {text}"); - } - } - private static bool HasCorrectLightingModes(UniversalRenderPipelineAsset asset) { // Only the URP rendering paths using the cluster light loop (F+ lights & probes) can be used with GRD, @@ -381,40 +192,28 @@ static void DrawQuality(SerializedUniversalRenderPipelineAsset serialized, Edito DrawHDR(serialized, ownerEditor); EditorGUILayout.PropertyField(serialized.msaa, Styles.msaaText); + serialized.renderScale.floatValue = EditorGUILayout.Slider(Styles.renderScaleText, serialized.renderScale.floatValue, UniversalRenderPipeline.minRenderScale, UniversalRenderPipeline.maxRenderScale); - if (serialized.ForbidIntermediateTexture()) + DrawUpscalingFilterDropdownAndOptions(serialized); + + if (serialized.renderScale.floatValue < 1.0f || serialized.asset.upscalingFilter == UpscalingFilterSelection.STP || serialized.asset.upscalingFilter == UpscalingFilterSelection.FSR) { - // Scaling is not possible without Intermediate Textures - using (new EditorGUI.DisabledScope(true)) - { - EditorGUILayout.Slider(Styles.GetNoIntermediateTextureVariant(Styles.renderScaleText), 1.0f, UniversalRenderPipeline.minRenderScale, UniversalRenderPipeline.maxRenderScale); - } + EditorGUILayout.HelpBox("Camera depth isn't supported when Upscaling is turned on in the game view. We will automatically fall back to not doing depth-testing for this pass.", MessageType.Warning, true); } - else - { - serialized.renderScale.floatValue = EditorGUILayout.Slider(Styles.renderScaleText, serialized.renderScale.floatValue, UniversalRenderPipeline.minRenderScale, UniversalRenderPipeline.maxRenderScale); - DrawUpscalingFilterDropdownAndOptions(serialized); - if (serialized.renderScale.floatValue < 1.0f || serialized.asset.upscalingFilter == UpscalingFilterSelection.STP || serialized.asset.upscalingFilter == UpscalingFilterSelection.FSR) - { - EditorGUILayout.HelpBox("Camera depth isn't supported when Upscaling is turned on in the game view. We will automatically fall back to not doing depth-testing for this pass.", MessageType.Warning, true); - } - } - EditorGUILayout.PropertyField(serialized.enableLODCrossFadeProp, Styles.enableLODCrossFadeText); - - using (new EditorGUI.DisabledScope(!serialized.enableLODCrossFadeProp.boolValue)) + EditorGUI.BeginDisabledGroup(!serialized.enableLODCrossFadeProp.boolValue); + EditorGUILayout.PropertyField(serialized.lodCrossFadeDitheringTypeProp, Styles.lodCrossFadeDitheringTypeText); + if (serialized.asset.enableLODCrossFade && serialized.asset.lodCrossFadeDitheringType == LODCrossFadeDitheringType.Stencil) { - EditorGUILayout.PropertyField(serialized.lodCrossFadeDitheringTypeProp, Styles.lodCrossFadeDitheringTypeText); - if (serialized.asset.enableLODCrossFade && serialized.asset.lodCrossFadeDitheringType == LODCrossFadeDitheringType.Stencil) + var rendererData = serialized.asset.m_RendererDataList[serialized.asset.m_DefaultRendererIndex]; + if (rendererData is UniversalRendererData && ((UniversalRendererData)rendererData).defaultStencilState.overrideStencilState) { - var rendererData = serialized.asset.m_RendererDataList[serialized.asset.m_DefaultRendererIndex]; - if (rendererData is UniversalRendererData && ((UniversalRendererData)rendererData).defaultStencilState.overrideStencilState) - { - EditorGUILayout.HelpBox(Styles.stencilLodCrossFadeWarningMessage.text, MessageType.Warning, true); - } + EditorGUILayout.HelpBox(Styles.stencilLodCrossFadeWarningMessage.text, MessageType.Warning, true); } } + + EditorGUI.EndDisabledGroup(); } static void DrawUpscalingFilterDropdownAndOptions(SerializedUniversalRenderPipelineAsset serialized) @@ -566,24 +365,15 @@ static void DrawUpscalingFilterDropdownAndOptions(SerializedUniversalRenderPipel static void DrawHDR(SerializedUniversalRenderPipelineAsset serialized, Editor ownerEditor) { - if (serialized.ForbidIntermediateTexture()) - { - // HDR is not possible without Intermediate Textures - using (new EditorGUI.DisabledScope(true)) - EditorGUILayout.Toggle(Styles.GetNoIntermediateTextureVariant(Styles.hdrText), false); - } - else - { - EditorGUILayout.PropertyField(serialized.hdr, Styles.hdrText); + EditorGUILayout.PropertyField(serialized.hdr, Styles.hdrText); - // Nested and in-between additional property - bool additionalProperties = k_ExpandedState[Expandable.Quality] && k_AdditionalPropertiesState[ExpandableAdditional.Quality]; - if (serialized.hdr.boolValue && additionalProperties) - { - EditorGUI.indentLevel++; - EditorGUILayout.PropertyField(serialized.hdrColorBufferPrecisionProp, Styles.hdrColorBufferPrecisionText); - EditorGUI.indentLevel--; - } + // Nested and in-between additional property + bool additionalProperties = k_ExpandedState[Expandable.Quality] && k_AdditionalPropertiesState[ExpandableAdditional.Quality]; + if (serialized.hdr.boolValue && additionalProperties) + { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(serialized.hdrColorBufferPrecisionProp, Styles.hdrColorBufferPrecisionText); + EditorGUI.indentLevel--; } } @@ -974,45 +764,29 @@ static void DrawCascades(SerializedUniversalRenderPipelineAsset serialized, int static void DrawPostProcessing(SerializedUniversalRenderPipelineAsset serialized, Editor ownerEditor) { - if (serialized.ForbidIntermediateTexture()) - { - using (new EditorGUI.DisabledScope(true)) - { - // Post Processes are not possible without Intermediate Textures - EditorGUILayout.EnumPopup(Styles.GetNoIntermediateTextureVariant(Styles.colorGradingMode), ColorGradingMode.LowDynamicRange); - EditorGUILayout.IntField(Styles.GetNoIntermediateTextureVariant(Styles.colorGradingLutSize), 32); - EditorGUILayout.Toggle(Styles.GetNoIntermediateTextureVariant(Styles.allowPostProcessAlphaOutput), false); - EditorGUILayout.Toggle(Styles.GetNoIntermediateTextureVariant(Styles.useFastSRGBLinearConversion), false); - EditorGUILayout.Toggle(Styles.GetNoIntermediateTextureVariant(Styles.supportDataDrivenLensFlare), true); - EditorGUILayout.Toggle(Styles.GetNoIntermediateTextureVariant(Styles.supportScreenSpaceLensFlare), true); - } - } - else - { - EditorGUILayout.PropertyField(serialized.colorGradingMode, Styles.colorGradingMode); - bool isHdrOn = serialized.hdr.boolValue; - if (!isHdrOn && serialized.colorGradingMode.intValue == (int)ColorGradingMode.HighDynamicRange) - EditorGUILayout.HelpBox(Styles.colorGradingModeWarning, MessageType.Warning); - else if (isHdrOn && serialized.colorGradingMode.intValue == (int)ColorGradingMode.HighDynamicRange) - EditorGUILayout.HelpBox(Styles.colorGradingModeSpecInfo, MessageType.Info); - else if (isHdrOn && PlayerSettings.allowHDRDisplaySupport && serialized.colorGradingMode.intValue == (int)ColorGradingMode.LowDynamicRange) - EditorGUILayout.HelpBox(Styles.colorGradingModeWithHDROutput, MessageType.Warning); - - EditorGUILayout.DelayedIntField(serialized.colorGradingLutSize, Styles.colorGradingLutSize); - serialized.colorGradingLutSize.intValue = Mathf.Clamp(serialized.colorGradingLutSize.intValue, UniversalRenderPipelineAsset.k_MinLutSize, UniversalRenderPipelineAsset.k_MaxLutSize); - if (isHdrOn && serialized.colorGradingMode.intValue == (int)ColorGradingMode.HighDynamicRange && serialized.colorGradingLutSize.intValue < 32) - EditorGUILayout.HelpBox(Styles.colorGradingLutSizeWarning, MessageType.Warning); - - HDRColorBufferPrecision hdrPrecision = (HDRColorBufferPrecision)serialized.hdrColorBufferPrecisionProp.intValue; - bool alphaEnabled = !isHdrOn /*RGBA8*/ || (isHdrOn && hdrPrecision == HDRColorBufferPrecision._64Bits); /*RGBA16Float*/ - EditorGUILayout.PropertyField(serialized.allowPostProcessAlphaOutput, Styles.allowPostProcessAlphaOutput); - if(!alphaEnabled && serialized.allowPostProcessAlphaOutput.boolValue) - EditorGUILayout.HelpBox(Styles.alphaOutputWarning, MessageType.Warning); - - EditorGUILayout.PropertyField(serialized.useFastSRGBLinearConversion, Styles.useFastSRGBLinearConversion); - EditorGUILayout.PropertyField(serialized.supportDataDrivenLensFlare, Styles.supportDataDrivenLensFlare); - EditorGUILayout.PropertyField(serialized.supportScreenSpaceLensFlare, Styles.supportScreenSpaceLensFlare); - } + EditorGUILayout.PropertyField(serialized.colorGradingMode, Styles.colorGradingMode); + bool isHdrOn = serialized.hdr.boolValue; + if (!isHdrOn && serialized.colorGradingMode.intValue == (int)ColorGradingMode.HighDynamicRange) + EditorGUILayout.HelpBox(Styles.colorGradingModeWarning, MessageType.Warning); + else if (isHdrOn && serialized.colorGradingMode.intValue == (int)ColorGradingMode.HighDynamicRange) + EditorGUILayout.HelpBox(Styles.colorGradingModeSpecInfo, MessageType.Info); + else if (isHdrOn && PlayerSettings.allowHDRDisplaySupport && serialized.colorGradingMode.intValue == (int)ColorGradingMode.LowDynamicRange) + EditorGUILayout.HelpBox(Styles.colorGradingModeWithHDROutput, MessageType.Warning); + + EditorGUILayout.DelayedIntField(serialized.colorGradingLutSize, Styles.colorGradingLutSize); + serialized.colorGradingLutSize.intValue = Mathf.Clamp(serialized.colorGradingLutSize.intValue, UniversalRenderPipelineAsset.k_MinLutSize, UniversalRenderPipelineAsset.k_MaxLutSize); + if (isHdrOn && serialized.colorGradingMode.intValue == (int)ColorGradingMode.HighDynamicRange && serialized.colorGradingLutSize.intValue < 32) + EditorGUILayout.HelpBox(Styles.colorGradingLutSizeWarning, MessageType.Warning); + + HDRColorBufferPrecision hdrPrecision = (HDRColorBufferPrecision)serialized.hdrColorBufferPrecisionProp.intValue; + bool alphaEnabled = !isHdrOn /*RGBA8*/ || (isHdrOn && hdrPrecision == HDRColorBufferPrecision._64Bits); /*RGBA16Float*/ + EditorGUILayout.PropertyField(serialized.allowPostProcessAlphaOutput, Styles.allowPostProcessAlphaOutput); + if(!alphaEnabled && serialized.allowPostProcessAlphaOutput.boolValue) + EditorGUILayout.HelpBox(Styles.alphaOutputWarning, MessageType.Warning); + + EditorGUILayout.PropertyField(serialized.useFastSRGBLinearConversion, Styles.useFastSRGBLinearConversion); + EditorGUILayout.PropertyField(serialized.supportDataDrivenLensFlare, Styles.supportDataDrivenLensFlare); + EditorGUILayout.PropertyField(serialized.supportScreenSpaceLensFlare, Styles.supportScreenSpaceLensFlare); } static Editor s_VolumeProfileEditor; diff --git a/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs b/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs index 9916385721d..e0f6934023f 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Skin.cs @@ -32,19 +32,6 @@ internal static class Styles public static GUIContent storeActionsOptimizationText = EditorGUIUtility.TrTextContent("Store Actions", "Sets the store actions policy on tile based GPUs. Affects render targets memory usage and will impact performance."); public static GUIContent dynamicBatching = EditorGUIUtility.TrTextContent("Dynamic Batching", "If enabled, the render pipeline will batch drawcalls with few triangles together by copying their vertex buffers into a shared buffer on a per-frame basis."); public static GUIContent debugLevel = EditorGUIUtility.TrTextContent("Debug Level", "Controls the level of debug information generated by the render pipeline. When Profiling is selected, the pipeline provides detailed profiling tags."); - public static GUIContent renderTextureUVOriginStrategyText = EditorGUIUtility.TrTextContent("Render Texture UV Origin Strategy", "Controls how the render pipeline decides what approach it will use to work out if a render texture should use Unity's default origin for textures or if it should match the backbuffer."); - public static readonly GUIContent intermediateTextureMode = EditorGUIUtility.TrTextContent("Intermediate Texture", "Controls the use of intermediate textures when rendering. If you disable them, this prevents you from using certain features."); - public static readonly string intermediateTextureAlways = L10n.Tr("Forces rendering via an intermediate texture when any Renderer Feature is active. This option provides compatibility for Renderer Features that cannot render directly to the backbuffer or do not correctly declare their inputs. Using this setting bypasses on-tile GPU optimizations, which causes a severe performance impact on mobile and XR platforms."); - public static readonly string intermediateTextureNeverWithoutIssue = L10n.Tr("Disables features that require separate passes to avoid costly memory operations. Note: On Tiled GPUs (mobile/XR), this keeps rendering on-tile for a major performance boost."); - public static readonly string intermediateTextureNeverWithIssue = L10n.Tr("Disables features that require separate passes to avoid costly memory operations. Note: On Tiled GPUs (mobile/XR), this keeps rendering on-tile for a major performance boost.\nSome active features are being ignored to maintain performance."); - public static readonly string intermediateTextureAutoWithoutIssue = L10n.Tr("Optimal path enabled. No features currently use intermediate textures."); - public static readonly string intermediateTextureAutoWithIssue = L10n.Tr("Performance path blocked. One or more active features require intermediate textures."); - public static readonly string logFeature = L10n.Tr("Log Features"); - public static readonly string logBlockedFeature = L10n.Tr("Log Blocked Features"); - public static readonly string intermediateTextureModeNeverTooltip = L10n.Tr("Disabled due to Intermediate Texture being disabled."); - - public static GUIContent GetNoIntermediateTextureVariant(GUIContent former) - => EditorGUIUtility.TrTextContent(former.text, $"{former.tooltip} {intermediateTextureModeNeverTooltip}"); // Quality public static GUIContent hdrText = EditorGUIUtility.TrTextContent("HDR", "Controls the global HDR settings."); diff --git a/Packages/com.unity.render-pipelines.universal/Editor/UniversalRendererDataEditor.cs b/Packages/com.unity.render-pipelines.universal/Editor/UniversalRendererDataEditor.cs index 33372452166..fa28c682251 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/UniversalRendererDataEditor.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/UniversalRendererDataEditor.cs @@ -42,6 +42,7 @@ private static class Styles public static readonly GUIContent defaultStencilStateLabel = EditorGUIUtility.TrTextContent("Default Stencil State", "Configure the stencil state for the opaque and transparent render passes."); public static readonly GUIContent shadowTransparentReceiveLabel = EditorGUIUtility.TrTextContent("Transparent Receive Shadows", "When disabled, none of the transparent objects will receive shadows."); public static readonly GUIContent invalidStencilOverride = EditorGUIUtility.TrTextContent("Error: When using the deferred rendering path, the Renderer requires the control over the 4 highest bits of the stencil buffer to store Material types. The current combination of the stencil override options prevents the Renderer from controlling the required bits. Try changing one of the options to Replace."); + public static readonly GUIContent intermediateTextureMode = EditorGUIUtility.TrTextContent("Intermediate Texture", "Controls when URP renders via an intermediate texture."); public static readonly GUIContent deferredPlusIncompatibleWarning = EditorGUIUtility.TrTextContent("Deferred+ is only available with Render Graph. In compatibility mode, Deferred+ falls back to Forward+."); } @@ -59,6 +60,7 @@ private static class Styles SerializedProperty m_PostProcessData; SerializedProperty m_Shaders; SerializedProperty m_ShadowTransparentReceiveProp; + SerializedProperty m_IntermediateTextureMode; List m_DepthFormatStrings = new List(); @@ -78,6 +80,7 @@ private void OnEnable() m_PostProcessData = serializedObject.FindProperty("postProcessData"); m_Shaders = serializedObject.FindProperty("shaders"); m_ShadowTransparentReceiveProp = serializedObject.FindProperty("m_ShadowTransparentReceive"); + m_IntermediateTextureMode = serializedObject.FindProperty("m_IntermediateTextureMode"); } private void PopulateCompatibleDepthFormats(int renderingMode) @@ -156,7 +159,7 @@ public override void OnInspectorGUI() { serializedObject.Update(); - DisplayIntermediateTextureWarnings(); + EditorGUILayout.Space(); EditorGUILayout.LabelField(Styles.FilteringSectionLabel, EditorStyles.boldLabel); EditorGUI.indentLevel++; @@ -203,28 +206,17 @@ public override void OnInspectorGUI() if (m_RenderingMode.intValue == (int)RenderingMode.Forward || m_RenderingMode.intValue == (int)RenderingMode.ForwardPlus) { EditorGUI.indentLevel++; - if (isIntermediateTextureForbidden) + + EditorGUILayout.PropertyField(m_DepthPrimingMode, Styles.DepthPrimingModeLabel); + if (m_DepthPrimingMode.intValue != (int)DepthPrimingMode.Disabled) { - using (new EditorGUI.DisabledScope(true)) + if (GraphicsSettings.currentRenderPipeline != null && GraphicsSettings.currentRenderPipeline is UniversalRenderPipelineAsset asset && asset.msaaSampleCount > 1) { - var rect = EditorGUILayout.GetControlRect(); - EditorGUI.EnumPopup(rect, UniversalRenderPipelineAssetUI.Styles.GetNoIntermediateTextureVariant(Styles.DepthPrimingModeLabel), DepthPrimingMode.Disabled); + EditorGUILayout.HelpBox(Styles.DepthPrimingMSAAWarning.text, MessageType.Warning); } - } - else - { - - EditorGUILayout.PropertyField(m_DepthPrimingMode, Styles.DepthPrimingModeLabel); - if (m_DepthPrimingMode.intValue != (int)DepthPrimingMode.Disabled) + else { - if (GraphicsSettings.currentRenderPipeline != null && GraphicsSettings.currentRenderPipeline is UniversalRenderPipelineAsset asset && asset.msaaSampleCount > 1) - { - EditorGUILayout.HelpBox(Styles.DepthPrimingMSAAWarning.text, MessageType.Warning); - } - else - { - EditorGUILayout.HelpBox(Styles.DepthPrimingModeInfo.text, MessageType.Info); - } + EditorGUILayout.HelpBox(Styles.DepthPrimingModeInfo.text, MessageType.Info); } } @@ -257,35 +249,18 @@ public override void OnInspectorGUI() EditorGUI.indentLevel--; EditorGUILayout.Space(); - if (isIntermediateTextureForbidden) + EditorGUILayout.LabelField(Styles.PostProcessingSectionLabel, EditorStyles.boldLabel); + EditorGUI.indentLevel++; + EditorGUI.BeginChangeCheck(); + var postProcessIncluded = EditorGUILayout.Toggle(Styles.PostProcessIncluded, m_PostProcessData.objectReferenceValue != null); + if (EditorGUI.EndChangeCheck()) { - using (new EditorGUI.DisabledScope(true)) - { - EditorGUILayout.LabelField(Styles.PostProcessingSectionLabel, EditorStyles.boldLabel); - EditorGUI.indentLevel++; - EditorGUILayout.Toggle(UniversalRenderPipelineAssetUI.Styles.GetNoIntermediateTextureVariant(Styles.PostProcessIncluded), false); - EditorGUI.indentLevel++; - EditorGUILayout.ObjectField(UniversalRenderPipelineAssetUI.Styles.GetNoIntermediateTextureVariant(Styles.PostProcessLabel), null, typeof(PostProcessData), - allowSceneObjects: false); - EditorGUI.indentLevel--; - EditorGUI.indentLevel--; - } - } - else - { - EditorGUILayout.LabelField(Styles.PostProcessingSectionLabel, EditorStyles.boldLabel); - EditorGUI.indentLevel++; - EditorGUI.BeginChangeCheck(); - var postProcessIncluded = EditorGUILayout.Toggle(Styles.PostProcessIncluded, m_PostProcessData.objectReferenceValue != null); - if (EditorGUI.EndChangeCheck()) - { - m_PostProcessData.objectReferenceValue = postProcessIncluded ? PostProcessData.GetDefaultPostProcessData() : null; - } - EditorGUI.indentLevel++; - EditorGUILayout.PropertyField(m_PostProcessData, Styles.PostProcessLabel); - EditorGUI.indentLevel--; - EditorGUI.indentLevel--; + m_PostProcessData.objectReferenceValue = postProcessIncluded ? PostProcessData.GetDefaultPostProcessData() : null; } + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(m_PostProcessData, Styles.PostProcessLabel); + EditorGUI.indentLevel--; + EditorGUI.indentLevel--; EditorGUILayout.Space(); EditorGUILayout.LabelField(Styles.OverridesSectionLabel, EditorStyles.boldLabel); @@ -312,6 +287,14 @@ public override void OnInspectorGUI() EditorGUI.indentLevel--; EditorGUILayout.Space(); + EditorGUILayout.LabelField("Compatibility", EditorStyles.boldLabel); + EditorGUI.indentLevel++; + { + EditorGUILayout.PropertyField(m_IntermediateTextureMode, Styles.intermediateTextureMode); + } + EditorGUI.indentLevel--; + EditorGUILayout.Space(); + serializedObject.ApplyModifiedProperties(); base.OnInspectorGUI(); // Draw the base UI, contains ScriptableRenderFeatures list diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/PixelPerfectCamera.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/PixelPerfectCamera.cs index e22a6a5b97e..34dff51a3e3 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/PixelPerfectCamera.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/PixelPerfectCamera.cs @@ -85,45 +85,15 @@ private enum ComponentVersions [SerializeField] ComponentVersions m_ComponentVersion = ComponentVersions.Version_Unserialized; #endif - /// - /// Controls whether the Pixel Perfect Camera feature is active and applies its viewport scaling. - /// This property also returns @@false@@ at runtime if the active Universal Render Pipeline Asset's @@IntermediateTextureMode@@ is set to @@Never@@. - /// To calculate the correct viewport scaling and keep pixel art crisp at different resolutions, the Pixel Perfect Camera may require an intermediate texture. - /// - public new bool enabled - { - get - { - if (!base.enabled) - return false; - - // Also disable if intermediate textures are forbidden. - var asset = UniversalRenderPipeline.asset; - if (asset == null) - return base.enabled; - return asset.intermediateTextureMode != IntermediateTextureMode.Never; - } - set => base.enabled = value; - } - - /// /// Defines how the output display will be cropped. /// - public CropFrame cropFrame - { - get => m_CropFrame; - set => m_CropFrame = value; - } + public CropFrame cropFrame { get { return m_CropFrame; } set { m_CropFrame = value; } } /// /// Defines if pixels will be locked to a grid determined by assetsPPU. /// - public GridSnapping gridSnapping - { - get => m_GridSnapping; - set => m_GridSnapping = value; - } + public GridSnapping gridSnapping { get { return m_GridSnapping; } set { m_GridSnapping = value; } } /// /// The target orthographic size of the camera. @@ -138,20 +108,12 @@ public GridSnapping gridSnapping /// /// The original horizontal resolution your Assets are designed for. /// - public int refResolutionX - { - get => m_RefResolutionX; - set => m_RefResolutionX = value > 0 ? value : 1; - } + public int refResolutionX { get { return m_RefResolutionX; } set { m_RefResolutionX = value > 0 ? value : 1; } } /// /// Original vertical resolution your Assets are designed for. /// - public int refResolutionY - { - get => m_RefResolutionY; - set => m_RefResolutionY = value > 0 ? value : 1; - } + public int refResolutionY { get { return m_RefResolutionY; } set { m_RefResolutionY = value > 0 ? value : 1; } } /// /// Set to true to have the Scene rendered to a temporary texture set as close as possible to the Reference Resolution, @@ -160,8 +122,14 @@ public int refResolutionY [System.Obsolete("Use gridSnapping instead #from(2021.2)")] public bool upscaleRT { - get => m_GridSnapping == GridSnapping.UpscaleRenderTexture; - set => m_GridSnapping = value ? GridSnapping.UpscaleRenderTexture : GridSnapping.None; + get + { + return m_GridSnapping == GridSnapping.UpscaleRenderTexture; + } + set + { + m_GridSnapping = value ? GridSnapping.UpscaleRenderTexture : GridSnapping.None; + } } /// @@ -171,8 +139,14 @@ public bool upscaleRT [System.Obsolete("Use gridSnapping instead #from(2021.2)")] public bool pixelSnapping { - get => m_GridSnapping == GridSnapping.PixelSnapping; - set => m_GridSnapping = value ? GridSnapping.PixelSnapping : GridSnapping.None; + get + { + return m_GridSnapping == GridSnapping.PixelSnapping; + } + set + { + m_GridSnapping = value ? GridSnapping.PixelSnapping : GridSnapping.None; + } } /// @@ -181,7 +155,10 @@ public bool pixelSnapping [System.Obsolete("Use cropFrame instead #from(2021.2)")] public bool cropFrameX { - get => m_CropFrame == CropFrame.StretchFill || m_CropFrame == CropFrame.Windowbox || m_CropFrame == CropFrame.Pillarbox; + get + { + return m_CropFrame == CropFrame.StretchFill || m_CropFrame == CropFrame.Windowbox || m_CropFrame == CropFrame.Pillarbox; + } set { if (value) @@ -207,7 +184,10 @@ public bool cropFrameX [System.Obsolete("Use cropFrame instead #from(2021.2)")] public bool cropFrameY { - get => m_CropFrame == CropFrame.StretchFill || m_CropFrame == CropFrame.Windowbox || m_CropFrame == CropFrame.Letterbox; + get + { + return m_CropFrame == CropFrame.StretchFill || m_CropFrame == CropFrame.Windowbox || m_CropFrame == CropFrame.Letterbox; + } set { if (value) @@ -234,8 +214,17 @@ public bool cropFrameY [System.Obsolete("Use cropFrame instead. #from(2021.2)")] public bool stretchFill { - get => m_CropFrame == CropFrame.StretchFill; - set => m_CropFrame = value ? CropFrame.StretchFill : CropFrame.Windowbox; + get + { + return m_CropFrame == CropFrame.StretchFill; + } + set + { + if (value) + m_CropFrame = CropFrame.StretchFill; + else + m_CropFrame = CropFrame.Windowbox; + } } /// @@ -262,7 +251,13 @@ public int pixelRatio /// /// Returns if an upscale pass is required. /// - public bool requiresUpscalePass => m_Internal.requiresUpscaling; + public bool requiresUpscalePass + { + get + { + return m_Internal.requiresUpscaling; + } + } /// /// Round a arbitrary position to an integer pixel position. Works in world space. @@ -322,11 +317,21 @@ public float CorrectCinemachineOrthoSize(float targetOrthoSize) PixelPerfectCameraInternal m_Internal; bool m_CinemachineCompatibilityMode; - internal FilterMode finalBlitFilterMode - => m_FilterMode == PixelPerfectFilterMode.RetroAA ? FilterMode.Bilinear : FilterMode.Point; + internal FilterMode finalBlitFilterMode + { + get + { + return m_FilterMode == PixelPerfectFilterMode.RetroAA ? FilterMode.Bilinear : FilterMode.Point; + } + } internal Vector2Int offscreenRTSize - => new Vector2Int(m_Internal.offscreenRTWidth, m_Internal.offscreenRTHeight); + { + get + { + return new Vector2Int(m_Internal.offscreenRTWidth, m_Internal.offscreenRTHeight); + } + } Vector2Int cameraRTSize { @@ -361,8 +366,7 @@ void Awake() // Case 1249076: Initialize internals immediately after the scene is loaded, // as the Cinemachine extension may need them before OnBeginContextRendering is called. - if (enabled) - UpdateCameraProperties(); + UpdateCameraProperties(); } void UpdateCameraProperties() @@ -378,10 +382,6 @@ void UpdateCameraProperties() void OnBeginCameraRendering(ScriptableRenderContext context, Camera camera) { - // Deactivate the feature for when IntermediateTextureMode is set to Never - if (!enabled) - return; - if (camera == m_Camera) { UpdateCameraProperties(); @@ -423,10 +423,6 @@ internal void OnDisable() // Show on-screen warning about invalid render resolutions. void OnGUI() { - //Deactivate the feature for when IntermediateTextureMode is set to Never - if (!enabled) - return; - Color oldColor = GUI.color; GUI.color = Color.red; diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawNormal2DPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawNormal2DPass.cs index 01f5d10beac..d06f48f892f 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawNormal2DPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawNormal2DPass.cs @@ -55,7 +55,7 @@ public void Render(RenderGraph graph, ContextContainer frameData, Renderer2DData builder.SetRenderAttachment(universal2DResourceData.normalsTexture[batchIndex], 0); // Depth needed for sprite mask stencil or z test for 3d meshes - if (rendererData.useDepthStencilBuffer && universal2DResourceData.allowsIntermediateTexture) + if (rendererData.useDepthStencilBuffer) { var depth = universal2DResourceData.normalsDepth.IsValid() ? universal2DResourceData.normalsDepth : commonResourceData.activeDepthTexture; builder.SetRenderAttachmentDepth(depth); diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawRenderer2DPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawRenderer2DPass.cs index a9e948b1ef6..44fd1c8b84f 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawRenderer2DPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawRenderer2DPass.cs @@ -159,7 +159,7 @@ public void Render(RenderGraph graph, ContextContainer frameData, Renderer2DData // Set color and depth attachments builder.SetRenderAttachment(commonResourceData.activeColorTexture, 0); - if (rendererData.useDepthStencilBuffer && universal2DResourceData.allowsIntermediateTexture) + if (rendererData.useDepthStencilBuffer) builder.SetRenderAttachmentDepth(commonResourceData.activeDepthTexture); builder.AllowGlobalStateModification(true); diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/Renderer2DRendergraph.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/Renderer2DRendergraph.cs index 5554457cc85..58075370848 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/Renderer2DRendergraph.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/Renderer2DRendergraph.cs @@ -149,15 +149,15 @@ public Renderer2D(Renderer2DData data) : base(data) #endif } - private bool IsPixelPerfectCameraEnabled(UniversalCameraData cameraData, out PixelPerfectCamera ppc) + private bool IsPixelPerfectCameraEnabled(UniversalCameraData cameraData) { - ppc = null; + PixelPerfectCamera ppc = null; // Pixel Perfect Camera doesn't support camera stacking. if (cameraData.renderType == CameraRenderType.Base && cameraData.resolveFinalTarget) cameraData.camera.TryGetComponent(out ppc); - return ppc != null && ppc.enabled; + return ppc != null && ppc.enabled && ppc.cropFrame != PixelPerfectCamera.CropFrame.None; } private RenderPassInputSummary GetRenderPassInputs(UniversalCameraData cameraData) @@ -197,7 +197,7 @@ ImportResourceSummary GetImportResourceSummary(RenderGraph renderGraph, Universa // Clear back buffer color if pixel perfect crop frame is used // Non-base cameras the back buffer should never be cleared - bool ppcEnabled = IsPixelPerfectCameraEnabled(cameraData, out var ppc) && ppc.cropFrame != PixelPerfectCamera.CropFrame.None; + bool ppcEnabled = IsPixelPerfectCameraEnabled(cameraData); bool clearColorBackbufferOnFirstUse = (cameraData.renderType == CameraRenderType.Base) && (!m_CreateColorTexture || ppcEnabled); bool clearDepthBackbufferOnFirstUse = (cameraData.renderType == CameraRenderType.Base) && !m_CreateColorTexture; @@ -363,29 +363,33 @@ void CreateResources(RenderGraph renderGraph) bool forceCreateColorTexture = false; // Pixel Perfect Camera doesn't support camera stacking. - if (IsPixelPerfectCameraEnabled(cameraData, out var ppc)) + if (cameraData.renderType == CameraRenderType.Base && lastCameraInTheStack) { - if (ppc.offscreenRTSize != Vector2Int.zero) + cameraData.camera.TryGetComponent(out var ppc); + if (ppc != null && ppc.enabled) { - forceCreateColorTexture = true; + if (ppc.offscreenRTSize != Vector2Int.zero) + { + forceCreateColorTexture = true; - // Pixel Perfect Camera may request a different RT size than camera VP size. - // In that case we need to modify cameraTargetDescriptor here so that all the passes would use the same size. - cameraTargetDescriptor.width = ppc.offscreenRTSize.x; - cameraTargetDescriptor.height = ppc.offscreenRTSize.y; - } + // Pixel Perfect Camera may request a different RT size than camera VP size. + // In that case we need to modify cameraTargetDescriptor here so that all the passes would use the same size. + cameraTargetDescriptor.width = ppc.offscreenRTSize.x; + cameraTargetDescriptor.height = ppc.offscreenRTSize.y; + } - cameraTargetFilterMode = FilterMode.Point; - ppcUpscaleRT = ppc.gridSnapping == PixelPerfectCamera.GridSnapping.UpscaleRenderTexture || ppc.requiresUpscalePass; + cameraTargetFilterMode = FilterMode.Point; + ppcUpscaleRT = ppc.gridSnapping == PixelPerfectCamera.GridSnapping.UpscaleRenderTexture || ppc.requiresUpscalePass; - if (ppc.requiresUpscalePass) - { - var upscaleDescriptor = cameraTargetDescriptor; - upscaleDescriptor.width = ppc.refResolutionX * ppc.pixelRatio; - upscaleDescriptor.height = ppc.refResolutionY * ppc.pixelRatio; - upscaleDescriptor.depthStencilFormat = GraphicsFormat.None; + if (ppc.requiresUpscalePass) + { + var upscaleDescriptor = cameraTargetDescriptor; + upscaleDescriptor.width = ppc.refResolutionX * ppc.pixelRatio; + upscaleDescriptor.height = ppc.refResolutionY * ppc.pixelRatio; + upscaleDescriptor.depthStencilFormat = GraphicsFormat.None; - universal2DResourceData.upscaleTexture = UniversalRenderer.CreateRenderGraphTexture(renderGraph, upscaleDescriptor, "_UpscaleTexture", true, ppc.finalBlitFilterMode); + universal2DResourceData.upscaleTexture = UniversalRenderer.CreateRenderGraphTexture(renderGraph, upscaleDescriptor, "_UpscaleTexture", true, ppc.finalBlitFilterMode); + } } } @@ -539,7 +543,7 @@ void CreateCameraNormalsTextures(RenderGraph renderGraph, RenderTextureDescripto for (int i = 0; i < resourceData.normalsTexture.Length; ++i) resourceData.normalsTexture[i] = UniversalRenderer.CreateRenderGraphTexture(renderGraph, desc, "_NormalMap", true, RendererLighting.k_NormalClearColor); - if (m_Renderer2DData.useDepthStencilBuffer && resourceData.allowsIntermediateTexture) + if (m_Renderer2DData.useDepthStencilBuffer) { // Normals pass can reuse active depth if same dimensions, if not create a new depth texture #if !(ENABLE_VR && ENABLE_XR_MODULE) @@ -638,12 +642,8 @@ public override void OnBeginRenderGraphFrame() { Universal2DResourceData universal2DResourceData = frameData.Create(); CommonResourceData commonResourceData = frameData.GetOrCreate(); - universal2DResourceData.allowsIntermediateTexture = UniversalRenderPipeline.asset.intermediateTextureMode != IntermediateTextureMode.Never; universal2DResourceData.InitFrame(); commonResourceData.InitFrame(); - - if (!universal2DResourceData.allowsIntermediateTexture) - frameData.Get().ForceNoIntermediateTexture(); } internal void RecordCustomRenderGraphPasses(RenderGraph renderGraph, RenderPassEvent2D activeRPEvent) @@ -834,7 +834,8 @@ private void OnAfterRendering(RenderGraph renderGraph) bool applyPostProcessing = cameraData.postProcessEnabled && m_PostProcessPassRenderGraph != null; bool anyPostProcessing = postProcessingData.isEnabled && m_PostProcessPassRenderGraph != null; - bool requirePixelPerfectUpscale = IsPixelPerfectCameraEnabled(cameraData, out var ppc) && ppc.requiresUpscalePass; + cameraData.camera.TryGetComponent(out var ppc); + bool requirePixelPerfectUpscale = IsPixelPerfectCameraEnabled(cameraData) && ppc.requiresUpscalePass; // When using Upscale Render Texture on a Pixel Perfect Camera, we want all post-processing effects done with a low-res RT, // and only upscale the low-res RT to fullscreen when blitting it to camera target. Also, final post processing pass is not run in this case, diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index 0c71646493a..f1bc1724a14 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -484,7 +484,6 @@ public partial class UniversalRenderPipelineAsset : RenderPipelineAsset new() { mode = m_GPUResidentDrawerMode, - enableOcclusionCulling = gpuResidentDrawerEnableOcclusionCullingInCameras, + enableOcclusionCulling = m_GPUResidentDrawerEnableOcclusionCullingInCameras, supportDitheringCrossFade = m_EnableLODCrossFade, allowInEditMode = true, smallMeshScreenPercentage = m_SmallMeshScreenPercentage, @@ -670,8 +669,6 @@ public partial class UniversalRenderPipelineAsset : RenderPipelineAsset /// The default low tier resolution for additional lights shadow texture. /// @@ -1052,30 +1049,20 @@ internal int[] rendererIndexList /// /// When true, the pipeline creates a depth texture that can be read in shaders. The depth texture can be accessed as _CameraDepthTexture. This setting can be overridden per camera. - /// If intermediateTextureMode is set to Never, this cannot be changed and the value is always false. /// public bool supportsCameraDepthTexture { - get => intermediateTextureMode != IntermediateTextureMode.Never && m_RequireDepthTexture; - set - { - if (IsAllowedByIntermediateTextureMode()) - m_RequireDepthTexture = value; - } + get => m_RequireDepthTexture; + set => m_RequireDepthTexture = value; } /// /// When true, the pipeline creates a texture that contains a copy of the color buffer after rendering opaque objects. This texture can be accessed in shaders as _CameraOpaqueTexture. This setting can be overridden per camera. - /// If intermediateTextureMode is set to Never, this cannot be changed and the value is always false. /// public bool supportsCameraOpaqueTexture { - get => intermediateTextureMode != IntermediateTextureMode.Never && m_RequireOpaqueTexture; - set - { - if (IsAllowedByIntermediateTextureMode()) - m_RequireOpaqueTexture = value; - } + get => m_RequireOpaqueTexture; + set => m_RequireOpaqueTexture = value; } /// @@ -1101,17 +1088,12 @@ public StoreActionsOptimization storeActionsOptimization /// /// When enabled, the camera renders to HDR buffers. This setting can be overridden per camera. - /// If intermediateTextureMode is set to Never, this cannot be changed and the value is always false. /// /// public bool supportsHDR { - get => intermediateTextureMode != IntermediateTextureMode.Never && m_SupportsHDR; - set - { - if (IsAllowedByIntermediateTextureMode()) - m_SupportsHDR = value; - } + get => m_SupportsHDR; + set => m_SupportsHDR = value; } /// @@ -1122,15 +1104,6 @@ public HDRColorBufferPrecision hdrColorBufferPrecision get => m_HDRColorBufferPrecision; set => m_HDRColorBufferPrecision = value; } - - /// - /// Controls when URP renders via an intermediate texture. - /// - public IntermediateTextureMode intermediateTextureMode - { - get => m_IntermediateTextureMode; - set => m_IntermediateTextureMode = value; - } /// /// Specifies the msaa sample count used by this UniversalRenderPipelineAsset @@ -1144,16 +1117,11 @@ public int msaaSampleCount /// /// Specifies the render scale which scales the render target resolution used by this UniversalRenderPipelineAsset. - /// If intermediateTextureMode is set to Never, this cannot be changed and the value is always 1.0f. /// public float renderScale { - get => intermediateTextureMode == IntermediateTextureMode.Never ? 1.0f : m_RenderScale; - set - { - if (IsAllowedByIntermediateTextureMode()) - m_RenderScale = ValidateRenderScale(value); - } + get => m_RenderScale; + set => m_RenderScale = ValidateRenderScale(value); } /// @@ -1168,18 +1136,13 @@ public float renderScale /// /// Returns the upscaling filter desired by the user - /// If intermediateTextureMode is set to Never, this cannot be changed and the value is always UpscalingFilterSelection.Auto. /// Note: Filter selections differ from actual filters in that they may include "meta-filters" such as /// "Automatic" which resolve to an actual filter at a later time. /// public UpscalingFilterSelection upscalingFilter { - get => intermediateTextureMode == IntermediateTextureMode.Never ? UpscalingFilterSelection.Auto : m_UpscalingFilter; - set - { - if (IsAllowedByIntermediateTextureMode()) - m_UpscalingFilter = value; - } + get => m_UpscalingFilter; + set => m_UpscalingFilter = value; } @@ -1695,56 +1658,42 @@ public RenderTextureUVOriginStrategy renderTextureUVOriginStrategy #endif /// /// Returns the selected ColorGradingMode in the URP Asset. - /// If intermediateTextureMode is set to Never, this cannot be changed and the value is always ColorGradingMode.LowDynamicRange. /// /// public ColorGradingMode colorGradingMode { - get => intermediateTextureMode == IntermediateTextureMode.Never ? ColorGradingMode.LowDynamicRange : m_ColorGradingMode; - set - { - if (IsAllowedByIntermediateTextureMode()) - m_ColorGradingMode = value; - } + get => m_ColorGradingMode; + set => m_ColorGradingMode = value; } /// /// Specifies the color grading LUT (lookup table) size in the URP Asset. - /// If intermediateTextureMode is set to Never, this cannot be changed and the value is always 32. /// public int colorGradingLutSize { - get => intermediateTextureMode == IntermediateTextureMode.Never ? k_DefaultColorGradingLutSize : m_ColorGradingLutSize; - set - { - if (IsAllowedByIntermediateTextureMode()) - m_ColorGradingLutSize = Mathf.Clamp(value, k_MinLutSize, k_MaxLutSize); - } + get => m_ColorGradingLutSize; + set => m_ColorGradingLutSize = Mathf.Clamp(value, k_MinLutSize, k_MaxLutSize); } /// /// Returns true if post-processing should process and output alpha. Requires the color target to have an alpha channel. - /// If intermediateTextureMode is set to Never, this cannot be changed and the value is always false. /// - public bool allowPostProcessAlphaOutput => intermediateTextureMode != IntermediateTextureMode.Never && m_AllowPostProcessAlphaOutput; + public bool allowPostProcessAlphaOutput => m_AllowPostProcessAlphaOutput; /// /// Returns true if fast approximation functions are used when converting between the sRGB and Linear color spaces, false otherwise. - /// If intermediateTextureMode is set to Never, this cannot be changed and the value is always false. /// - public bool useFastSRGBLinearConversion => intermediateTextureMode != IntermediateTextureMode.Never && m_UseFastSRGBLinearConversion; + public bool useFastSRGBLinearConversion => m_UseFastSRGBLinearConversion; /// /// Returns true if Screen Space Lens Flare are supported by this asset, false otherwise. - /// If intermediateTextureMode is set to Never, this cannot be changed and the value is always true. /// - public bool supportScreenSpaceLensFlare => intermediateTextureMode == IntermediateTextureMode.Never || m_SupportScreenSpaceLensFlare; + public bool supportScreenSpaceLensFlare => m_SupportScreenSpaceLensFlare; /// /// Returns true if Data Driven Lens Flare are supported by this asset, false otherwise. - /// If intermediateTextureMode is set to Never, this cannot be changed and the value is always true. /// - public bool supportDataDrivenLensFlare => intermediateTextureMode == IntermediateTextureMode.Never || m_SupportDataDrivenLensFlare; + public bool supportDataDrivenLensFlare => m_SupportDataDrivenLensFlare; /// /// Set to true to allow Adaptive performance to modify graphics quality settings during runtime. @@ -1813,10 +1762,10 @@ public GPUResidentDrawerMode gpuResidentDrawerMode /// public bool gpuResidentDrawerEnableOcclusionCullingInCameras { - get => m_IntermediateTextureMode != IntermediateTextureMode.Never && m_GPUResidentDrawerEnableOcclusionCullingInCameras ; + get => m_GPUResidentDrawerEnableOcclusionCullingInCameras; set { - if (!IsAllowedByIntermediateTextureMode() || value == m_GPUResidentDrawerEnableOcclusionCullingInCameras) + if (value == m_GPUResidentDrawerEnableOcclusionCullingInCameras) return; m_GPUResidentDrawerEnableOcclusionCullingInCameras = value; @@ -1871,14 +1820,6 @@ public float smallMeshScreenPercentage OnValidate(); } } - - bool IsAllowedByIntermediateTextureMode() - { - if (intermediateTextureMode != IntermediateTextureMode.Never) - return true; - Debug.LogWarning($"Cannot be changed if {nameof(intermediateTextureMode)} == {IntermediateTextureMode.Never}"); - return false; - } /// /// Unity raises a callback to this method before it serializes the asset. @@ -2058,21 +1999,9 @@ static void UpgradeAsset(EntityId assetInstanceID) #pragma warning restore CS0618 // Type or member is obsolete asset.k_AssetPreviousVersion = 12; } - + if (asset.k_AssetPreviousVersion < 13) { - bool hasAlways = false, hasAuto = false; - foreach (var rendererData in asset.m_RendererDataList) - { - if (rendererData is not UniversalRendererData universalData) - continue; - -#pragma warning disable CS0618 // Type or member is obsolete - hasAlways |= universalData.m_ObsoleteIntermediateTextureMode == IntermediateTextureMode.Always; - hasAuto |= universalData.m_ObsoleteIntermediateTextureMode == IntermediateTextureMode.Auto; -#pragma warning restore CS0618 // Type or member is obsolete - } - asset.intermediateTextureMode = hasAuto && !hasAlways ? IntermediateTextureMode.Auto : IntermediateTextureMode.Always; asset.k_AssetPreviousVersion = 13; } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Deprecated.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Deprecated.cs index 8c4a0b080b5..8bd9b193969 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Deprecated.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Deprecated.cs @@ -189,6 +189,16 @@ public TextureResources textures return m_Textures; } } + + /// + /// Controls when URP renders via an intermediate texture. + /// + [Obsolete("This property is not used. #from(6000.3)", false)] + public IntermediateTextureMode intermediateTextureMode + { + get => default; + set {} + } } public abstract partial class ScriptableRenderer diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/Universal2DResourceData.cs b/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/Universal2DResourceData.cs index 25baf9d1028..da8fa938434 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/Universal2DResourceData.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/Universal2DResourceData.cs @@ -80,7 +80,6 @@ internal TextureHandle cameraSortingLayerTexture /// public override void Reset() { - base.Reset(); _normalsDepth = TextureHandle.nullHandle; _shadowDepth = TextureHandle.nullHandle; _upscaleTexture = TextureHandle.nullHandle; diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalCameraData.cs b/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalCameraData.cs index fb428ca9c7a..2980025cd09 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalCameraData.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalCameraData.cs @@ -708,20 +708,5 @@ public override void Reset() stackAnyPostProcessingEnabled = false; stackLastCameraOutputToHDR = false; } - - internal void ForceNoIntermediateTexture() - { - requiresDepthTexture = false; - requiresOpaqueTexture = false; - isHdrEnabled = false; - postProcessEnabled = false; - renderScale = 1f; - antialiasing = AntialiasingMode.None; - - //Weirdly, this seems to never be assigned. - //Though the default value (false) prevent to remove optimization on 2D - //See Renderer2DRenderGraph.GetRenderPassInputs - isDefaultViewport = true; - } } } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalResourceBase.cs b/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalResourceBase.cs index b95733b181b..b82ecc65514 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalResourceBase.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalResourceBase.cs @@ -98,13 +98,5 @@ protected bool CheckAndWarnAboutAccessibility() return isAccessible; } - - internal bool allowsIntermediateTexture { get; set; } = true; - - /// - public override void Reset() - { - allowsIntermediateTexture = true; - } } } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalResourceData.cs b/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalResourceData.cs index 3a625c5e73f..c0405577739 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalResourceData.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalResourceData.cs @@ -338,7 +338,6 @@ internal TextureHandle stpDebugView /// public override void Reset() { - base.Reset(); _backBufferColor = TextureHandle.nullHandle; _backBufferDepth = TextureHandle.nullHandle; _cameraColor = TextureHandle.nullHandle; diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/IntermediateTextureMode.cs b/Packages/com.unity.render-pipelines.universal/Runtime/IntermediateTextureMode.cs index 9f44496f55e..b52a6ec7208 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/IntermediateTextureMode.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/IntermediateTextureMode.cs @@ -8,17 +8,10 @@ public enum IntermediateTextureMode /// /// Uses information declared by active Renderer Features to automatically determine whether to render via an intermediate texture or not. . /// - [InspectorName("Automatic")] Auto, /// /// Forces rendering via an intermediate texture if any Render Feature is active. Use this option for compatibility with Renderer Features that do not support rendering directly to backbuffer or RenderFeatures that do not declare their inputs with . Using this option might have a significant performance impact on some platforms such as Quest. /// - [InspectorName("Enabled")] - Always, - /// - /// Forces rendering directly into the backbuffer without any intermediate texture. Prefer this option for performances. It may disable some Render Features incompatible with this setting. - /// - [InspectorName("Disabled")] - Never + Always } } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/DecalRendererFeature.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/DecalRendererFeature.cs index 9e30c4c4076..acaca5a0b12 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/DecalRendererFeature.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/DecalRendererFeature.cs @@ -223,9 +223,6 @@ public partial class DecalRendererFeature : ScriptableRendererFeature internal bool intermediateRendering => m_Technique == DecalTechnique.DBuffer; internal bool requiresDecalLayers => m_Settings.decalLayers; internal static bool isGLDevice => SystemInfo.graphicsDeviceType == GraphicsDeviceType.OpenGLES3 || SystemInfo.graphicsDeviceType == GraphicsDeviceType.OpenGLCore; - - /// - protected override IntermediateTextureUsage useIntermediateTextures => IntermediateTextureUsage.Required; /// public override void Create() diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature.cs index 2a185b189ef..5599d00bd14 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/FullScreenPassRendererFeature.cs @@ -69,13 +69,6 @@ public enum InjectionPoint private FullScreenRenderPass m_FullScreenPass; - /// - protected override IntermediateTextureUsage useIntermediateTextures - => fetchColorBuffer || (requirements & (ScriptableRenderPassInput.Color | ScriptableRenderPassInput.Depth)) != ScriptableRenderPassInput.None - || !IsCustomPassUsed(requirements, bindDepthStencilAttachment) - ? IntermediateTextureUsage.Required - : IntermediateTextureUsage.NotRequired; - /// public override void Create() { @@ -122,10 +115,6 @@ protected override void Dispose(bool disposing) m_FullScreenPass.Dispose(); } #endif - static bool IsCustomPassUsed(ScriptableRenderPassInput input, bool bindDepthStencilAttachment) - { - return input != ScriptableRenderPassInput.None || bindDepthStencilAttachment; - } internal class FullScreenRenderPass : ScriptableRenderPass { @@ -259,11 +248,16 @@ public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer destination = resourcesData.activeColorTexture; // The AddBlitPass utility is not used when m_BindDepthStencilAttachment is active since SetRenderAttachmentDepth is not available with the returned builder of AddBlitPass. - if (IsCustomPassUsed(input, m_BindDepthStencilAttachment)) + bool useCustomPass = input != ScriptableRenderPassInput.None || m_BindDepthStencilAttachment; + + if (useCustomPass) + { AddFullscreenRenderPassInputPass(renderGraph, resourcesData, cameraData, source, destination); + } else { var blitMaterialParameters = new BlitMaterialParameters(source, destination, m_Material, m_PassIndex); + renderGraph.AddBlitPass(blitMaterialParameters, passName: "Blit Color Full Screen"); } } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/RenderObjects.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/RenderObjects.cs index 069fdb0dcb7..70ad2ac5cde 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/RenderObjects.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/RenderObjects.cs @@ -188,9 +188,6 @@ public class CustomCameraSettings RenderObjectsPass renderObjectsPass; - /// - protected override IntermediateTextureUsage useIntermediateTextures => IntermediateTextureUsage.NotRequired; - /// public override void Create() { diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/ScreenSpaceAmbientOcclusion.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/ScreenSpaceAmbientOcclusion.cs index 13c124fa989..8ba3d62d8ef 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/ScreenSpaceAmbientOcclusion.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/ScreenSpaceAmbientOcclusion.cs @@ -138,9 +138,6 @@ public class ScreenSpaceAmbientOcclusion : ScriptableRendererFeature internal const string k_SampleCountLowKeyword = "_SAMPLE_COUNT_LOW"; internal const string k_SampleCountMediumKeyword = "_SAMPLE_COUNT_MEDIUM"; internal const string k_SampleCountHighKeyword = "_SAMPLE_COUNT_HIGH"; - - /// - protected override IntermediateTextureUsage useIntermediateTextures => IntermediateTextureUsage.Required; /// public override void Create() diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/ScreenSpaceShadows.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/ScreenSpaceShadows.cs index fec6c04a212..7e68a874ab4 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/ScreenSpaceShadows.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/ScreenSpaceShadows.cs @@ -31,9 +31,6 @@ internal class ScreenSpaceShadows : ScriptableRendererFeature // Constants private const string k_ShaderName = "Hidden/Universal Render Pipeline/ScreenSpaceShadows"; - - /// - protected override IntermediateTextureUsage useIntermediateTextures => IntermediateTextureUsage.Required; /// public override void Create() diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs b/Packages/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs index 41fcd76e0ad..b4e002efa7a 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs @@ -650,10 +650,8 @@ static class RenderPassBlock public static readonly int AfterRendering = 3; } -#if URP_COMPATIBILITY_MODE private StoreActionsOptimization m_StoreActionsOptimizationSetting = StoreActionsOptimization.Auto; private static bool m_UseOptimizedStoreActions = false; -#endif const int k_RenderPassBlockCount = 4; @@ -773,11 +771,12 @@ public ScriptableRenderer(ScriptableRendererData data) Clear(CameraRenderType.Base); m_ActiveRenderPassQueue.Clear(); -#if URP_COMPATIBILITY_MODE if (UniversalRenderPipeline.asset) + { m_StoreActionsOptimizationSetting = UniversalRenderPipeline.asset.storeActionsOptimization; + } + m_UseOptimizedStoreActions = m_StoreActionsOptimizationSetting != StoreActionsOptimization.Store; -#endif } /// @@ -1665,76 +1664,36 @@ internal void AddRenderPasses(ref RenderingData renderingData) { using var profScope = new ProfilingScope(Profiling.addRenderPasses); - var urpAsset = UniversalRenderPipeline.asset; - var isIntermediateTextureFilteringEnabled = urpAsset != null && urpAsset.intermediateTextureMode == IntermediateTextureMode.Never; - // Add render passes from custom renderer features - for (int featureIndex = 0; featureIndex < rendererFeatures.Count; ++featureIndex) + for (int i = 0; i < rendererFeatures.Count; ++i) { - var rendererFeature = rendererFeatures[featureIndex]; - if (!rendererFeature.isActive) - continue; - - // skipping if declaration made it not compatible - rendererFeature.deactivatedAfterIntermediateNotAllowed = false; - if (isIntermediateTextureFilteringEnabled && rendererFeature.useIntermediateTexturesInternal == ScriptableRendererFeature.IntermediateTextureUsage.Required) + if (!rendererFeatures[i].isActive) + { continue; - - int previousCount = activeRenderPassQueue.Count; + } #if URP_COMPATIBILITY_MODE - if (!rendererFeature.SupportsNativeRenderPass()) + if (!rendererFeatures[i].SupportsNativeRenderPass()) disableNativeRenderPassInFeatures = true; #endif - rendererFeature.AddRenderPasses(this, ref renderingData); + rendererFeatures[i].AddRenderPasses(this, ref renderingData); #if URP_COMPATIBILITY_MODE disableNativeRenderPassInFeatures = false; #endif - - if (isIntermediateTextureFilteringEnabled) - { - bool declaresNoIntermediateTexture = rendererFeature.useIntermediateTexturesInternal == ScriptableRendererFeature.IntermediateTextureUsage.NotRequired; -#if !(DEVELOPMENT_BUILD || UNITY_EDITOR) - // In release builds, trust the declaration and skip verification if feature declares it won't use it. - if (declaresNoIntermediateTexture) - continue; -#endif - VerifyAndFilterRendererFeaturePasses(rendererFeature, previousCount, declaresNoIntermediateTexture); - } } // Remove any null render pass that might have been added by user by mistake - activeRenderPassQueue.RemoveAll(item => item == null); - -#if URP_COMPATIBILITY_MODE - // if any pass was injected, the "automatic" store optimization policy will disable the optimized load actions - if (activeRenderPassQueue.Count > 0 && m_StoreActionsOptimizationSetting == StoreActionsOptimization.Auto) - m_UseOptimizedStoreActions = false; -#endif - } - - private void VerifyAndFilterRendererFeaturePasses(ScriptableRendererFeature feature, int startIndex, bool declaresNoIntermediateTexture) - { - // Remove fully any feature requiring IntermediateTexture in any pass if it is forbidden by settings - bool requiresIntermediateTexture = false; - for (int passIndex = activeRenderPassQueue.Count - 1; passIndex >= startIndex && !requiresIntermediateTexture; passIndex--) + int count = activeRenderPassQueue.Count; + for (int i = count - 1; i >= 0; i--) { - var renderPass = activeRenderPassQueue[passIndex]; - requiresIntermediateTexture |= renderPass.requiresIntermediateTexture - || (renderPass.input & ScriptableRenderPassInput.Color) != ScriptableRenderPassInput.None // Needs color - || (renderPass.input & ScriptableRenderPassInput.Depth) != ScriptableRenderPassInput.None; // Needs depth + if (activeRenderPassQueue[i] == null) + activeRenderPassQueue.RemoveAt(i); } - if (!requiresIntermediateTexture) - return; - - if (declaresNoIntermediateTexture) - Debug.LogError($"{feature.name} declare not using IntermediateTexture but actually use it. Deactivating it. Important: This will cause issue on non development builds!"); - - activeRenderPassQueue.RemoveRange(startIndex, activeRenderPassQueue.Count - startIndex); - - feature.deactivatedAfterIntermediateNotAllowed = true; + // if any pass was injected, the "automatic" store optimization policy will disable the optimized load actions + if (count > 0 && m_StoreActionsOptimizationSetting == StoreActionsOptimization.Auto) + m_UseOptimizedStoreActions = false; } #if URP_COMPATIBILITY_MODE diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/ScriptableRendererFeature.cs b/Packages/com.unity.render-pipelines.universal/Runtime/ScriptableRendererFeature.cs index 4d1937faf67..17f78cbcb18 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/ScriptableRendererFeature.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/ScriptableRendererFeature.cs @@ -16,11 +16,12 @@ public abstract partial class ScriptableRendererFeature : ScriptableObject, IDis /// Returns the state of the ScriptableRenderFeature (true: the feature is active, false: the feature is inactive). Use the method ScriptableRenderFeature.SetActive to change the value of this variable. /// public bool isActive => m_Active; - + /// /// Specifies whether a render pass makes use of an intermediate texture. /// This allows for early optimization by skipping incompatible passes. /// + [Obsolete("This enum is not used. #from(6000.3)", false)] public enum IntermediateTextureUsage { /// @@ -37,16 +38,12 @@ public enum IntermediateTextureUsage /// NotRequired } - + /// /// Specifies the feature's dependency on an intermediate texture. Override this property to allow the renderer to optimize its setup by skipping the creation of render passes for features that are incompatible with the pipeline's Intermediate Texture setting. /// + [Obsolete("This property is not used. #from(6000.3)", false)] protected virtual IntermediateTextureUsage useIntermediateTextures => IntermediateTextureUsage.Unknown; - - internal IntermediateTextureUsage useIntermediateTexturesInternal => useIntermediateTextures; - - // Set by AddRenderPasses pass enqueued when useIntermediateTextures is set to Unknown - internal bool deactivatedAfterIntermediateNotAllowed = false; /// /// Initializes this feature's resources. This is called every time serialization happens. diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index d55a53ebf7d..0a13d7c7c7b 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -846,7 +846,7 @@ static void RenderSingleCamera(ScriptableRenderContext context, UniversalCameraD using (new ProfilingScope(Profiling.Pipeline.initializeRenderingData)) { - CreateUniversalResourceData(frameData, asset); + CreateUniversalResourceData(frameData); lightData = CreateLightData(frameData, asset, data.cullResults.visibleLights, renderingMode); shadowData = CreateShadowData(frameData, asset, renderingMode); CreatePostProcessingData(frameData, asset); @@ -1926,11 +1926,9 @@ static UniversalPostProcessingData CreatePostProcessingData(ContextContainer fra return postProcessingData; } - static UniversalResourceData CreateUniversalResourceData(ContextContainer frameData, UniversalRenderPipelineAsset settings) + static UniversalResourceData CreateUniversalResourceData(ContextContainer frameData) { - var data = frameData.Create(); - data.allowsIntermediateTexture = settings.intermediateTextureMode != IntermediateTextureMode.Never; - return data; + return frameData.Create(); } static UniversalLightData CreateLightData(ContextContainer frameData, UniversalRenderPipelineAsset settings, NativeArray visibleLights, RenderingMode? renderingMode) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs index a6ad205e3e3..d06df99a79c 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs @@ -283,9 +283,8 @@ public UniversalRenderer(UniversalRendererData data) : base(data) m_DefaultStencilState.SetPassOperation(stencilData.passOperation); m_DefaultStencilState.SetFailOperation(stencilData.failOperation); m_DefaultStencilState.SetZFailOperation(stencilData.zFailOperation); - - var asset = UniversalRenderPipeline.asset; - m_IntermediateTextureMode = asset != null ? asset.intermediateTextureMode : IntermediateTextureMode.Always; + + m_IntermediateTextureMode = data.intermediateTextureMode; #if URP_COMPATIBILITY_MODE if (GraphicsSettings.TryGetRenderPipelineSettings(out var renderGraphSettings) @@ -304,6 +303,7 @@ public UniversalRenderer(UniversalRendererData data) : base(data) transparentLayerMask = data.transparentLayerMask; shadowTransparentReceive = data.shadowTransparentReceive; + var asset = UniversalRenderPipeline.asset; if (asset != null && asset.supportsLightCookies) { var settings = LightCookieManager.Settings.Create(); diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererData.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererData.cs index ea888620a63..57d74aa93d2 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererData.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererData.cs @@ -7,7 +7,6 @@ using UnityEngine.Scripting.APIUpdating; using UnityEngine.Assertions; using UnityEngine.Experimental.Rendering; -using UnityEngine.Serialization; namespace UnityEngine.Rendering.Universal { @@ -154,8 +153,7 @@ static void CreateUniversalRendererData() [SerializeField] bool m_AccurateGbufferNormals = false; - // Kept for data migration (see UniversalRenderPipelineAsset version 13) - [SerializeField, FormerlySerializedAs("m_IntermediateTextureMode")] internal IntermediateTextureMode m_ObsoleteIntermediateTextureMode = IntermediateTextureMode.Always; + [SerializeField] IntermediateTextureMode m_IntermediateTextureMode = IntermediateTextureMode.Always; /// protected override ScriptableRenderer Create() @@ -338,21 +336,13 @@ public bool accurateGbufferNormals /// /// Controls when URP renders via an intermediate texture. /// - [Obsolete("Use UniversalRenderPipelineAsset.intermediateTextureMode instead", false)] public IntermediateTextureMode intermediateTextureMode { - get - { - var asset = QualitySettings.renderPipeline as UniversalRenderPipelineAsset; - if (asset == null) - return m_ObsoleteIntermediateTextureMode; // No value to return normally. So prefer returning former value in case it is still relevant, instead of default. - return asset.intermediateTextureMode; - } + get => m_IntermediateTextureMode; set { - var asset = QualitySettings.renderPipeline as UniversalRenderPipelineAsset; - if (asset != null) - asset.intermediateTextureMode = value; + SetDirty(); + m_IntermediateTextureMode = value; } } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs index 2a41933e859..6c7cfacecb0 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs @@ -574,14 +574,12 @@ public override void OnBeginRenderGraphFrame() { UniversalResourceData resourceData = frameData.Get(); resourceData.InitFrame(); - - if (!resourceData.allowsIntermediateTexture) - frameData.Get().ForceNoIntermediateTexture(); } internal override void OnRecordRenderGraph(RenderGraph renderGraph, ScriptableRenderContext context) { UniversalResourceData resourceData = frameData.Get(); + UniversalRenderingData renderingData = frameData.Get(); UniversalCameraData cameraData = frameData.Get(); UniversalLightData lightData = frameData.Get(); @@ -603,7 +601,7 @@ internal override void OnRecordRenderGraph(RenderGraph renderGraph, ScriptableRe bool requireDepthTexture = RequireDepthTexture(cameraData, in renderPassInputs, applyPostProcessing); bool requirePrepassForTextures = RequirePrepassForTextures(cameraData, renderPassInputs, requireDepthTexture); - useDepthPriming = IsDepthPrimingEnabledRenderGraph(cameraData, renderPassInputs, m_DepthPrimingMode, requireDepthTexture, requirePrepassForTextures, usesDeferredLighting, m_IntermediateTextureMode); + useDepthPriming = IsDepthPrimingEnabledRenderGraph(cameraData, renderPassInputs, m_DepthPrimingMode, requireDepthTexture, requirePrepassForTextures, usesDeferredLighting); bool requirePrepass = requirePrepassForTextures || useDepthPriming; @@ -964,6 +962,7 @@ private void OnMainRendering(RenderGraph renderGraph, ScriptableRenderContext co UniversalResourceData resourceData = frameData.Get(); UniversalCameraData cameraData = frameData.Get(); UniversalLightData lightData = frameData.Get(); + UniversalPostProcessingData postProcessingData = frameData.Get(); if (!renderGraph.nativeRenderPassesEnabled) { @@ -1585,11 +1584,8 @@ static bool RequireDepthTexture(UniversalCameraData cameraData, in RenderPassInp /// to ensure that the pipeline will actually do depth priming. /// When this is true then we are sure that after RenderPassEvent.AfterRenderingPrePasses the currentCameraDepth has been primed. /// - static bool IsDepthPrimingEnabledRenderGraph(UniversalCameraData cameraData, in RenderPassInputSummary renderPassInputs, DepthPrimingMode depthPrimingMode, bool requireDepthTexture, bool requirePrepassForTextures, bool usesDeferredLighting, IntermediateTextureMode intermediateTextureMode) + static bool IsDepthPrimingEnabledRenderGraph(UniversalCameraData cameraData, in RenderPassInputSummary renderPassInputs, DepthPrimingMode depthPrimingMode, bool requireDepthTexture, bool requirePrepassForTextures, bool usesDeferredLighting) { - if (intermediateTextureMode == IntermediateTextureMode.Never) - return false; - #if UNITY_EDITOR // We need to disable depth-priming for DrawCameraMode.Wireframe, since depth-priming forces ZTest to Equal // for opaques rendering, which breaks wireframe rendering. From 89ee6a7bf1980912c1062a5c07a81c1c1202ec34 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Wed, 10 Sep 2025 22:58:53 +0000 Subject: [PATCH 07/65] [Port] [6000.3] Local volumetric fog and decal projector icons in the Inspector window are hardly visible when Editor theme is set to Light --- .../Icons/Processed/DecalProjector Icon.asset | 48 ++++ .../Processed/DecalProjector Icon.asset.meta | 8 + .../Processed/LocalVolumetricFog Icon.asset | 48 ++++ .../LocalVolumetricFog Icon.asset.meta | 8 + .../Processed/d_DecalProjector Icon.asset | 48 ++++ .../d_DecalProjector Icon.asset.meta | 8 + .../Processed/d_LocalVolumetricFog Icon.asset | 48 ++++ .../d_LocalVolumetricFog Icon.asset.meta | 8 + .../Texture/LocalVolumetricFog.png | Bin 2813 -> 0 bytes .../Texture/LocalVolumetricFog.png.meta | 260 ------------------ .../VolumetricLighting/LocalVolumetricFog.cs | 2 +- .../LocalVolumetricFog.cs.meta | 1 - .../Runtime/Material/Decal/DecalProjector.cs | 2 +- .../Material/Decal/DecalProjector.cs.meta | 1 - 14 files changed, 226 insertions(+), 264 deletions(-) create mode 100644 Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/DecalProjector Icon.asset create mode 100644 Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/DecalProjector Icon.asset.meta create mode 100644 Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/LocalVolumetricFog Icon.asset create mode 100644 Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/LocalVolumetricFog Icon.asset.meta create mode 100644 Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_DecalProjector Icon.asset create mode 100644 Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_DecalProjector Icon.asset.meta create mode 100644 Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_LocalVolumetricFog Icon.asset create mode 100644 Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_LocalVolumetricFog Icon.asset.meta delete mode 100644 Packages/com.unity.render-pipelines.high-definition/Editor/RenderPipelineResources/Texture/LocalVolumetricFog.png delete mode 100644 Packages/com.unity.render-pipelines.high-definition/Editor/RenderPipelineResources/Texture/LocalVolumetricFog.png.meta diff --git a/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/DecalProjector Icon.asset b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/DecalProjector Icon.asset new file mode 100644 index 00000000000..8d18b861754 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/DecalProjector Icon.asset @@ -0,0 +1,48 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!28 &2800000 +Texture2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: DecalProjector Icon + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_IsAlphaChannelOptional: 0 + serializedVersion: 4 + m_Width: 256 + m_Height: 256 + m_CompleteImageSize: 349524 + m_MipsStripped: 0 + m_TextureFormat: 4 + m_MipCount: 9 + m_IsReadable: 0 + m_IsPreProcessed: 0 + m_IgnoreMipmapLimit: 1 + m_MipmapLimitGroupName: + m_StreamingMipmaps: 0 + m_StreamingMipmapsPriority: 0 + m_VTOnly: 0 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 1 + m_PlatformBlob: + image data: 349524 + _typelessdata: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656565c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5353534d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d5454549d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5353538d5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5353538d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5353538d5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050501d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec5555555d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454547d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5353538d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454549d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454549d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454549d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454549d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454549d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454549d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353538d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454547d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454547d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5353534d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec5050501d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353538d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5353538d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656565c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353538d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5555559c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5050501d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656565c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656565c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454544c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5050501d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5353538d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5353538d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5050501d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656565c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353538d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5555559c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555cc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555552d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5555552d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454544c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454547d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454549d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5555559c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555cc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454549d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5555559c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454547d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5555555d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555552d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5555552d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454549d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5353538d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5555555d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555cc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353538d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454547d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353538d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454547d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555cc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656565c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5353534d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454549d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656568c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656568c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656568c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec5050501d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656565c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656568c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555559c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5555559c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555559c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5555559c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555559c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5555559c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656568c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656565c555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec5353534d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5656568c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656568c5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5656565c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5656568c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5555559c5050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050501d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5656565c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5656565c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555bc5353534d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5656567c555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5353538d5050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d5656567c555555cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555cc5353538d5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5555555d5353538d555555cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555cc5555559c5656565c5050501d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5555552d5555555d5454547d5555559c555555bc555555dc555555dc555555ec555555fc555555fc555555fc555555fc555555ec555555dc555555cc555555bc5555559c5454547d5353534d5555552d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d5454547d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec5454547d5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5353534d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5353538d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5353538d5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555cc5050501d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050501d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050501d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353538d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5353538d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656565c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050501d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454547d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5555559c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656565c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ad000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454546d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454549d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ad000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555cc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454ac555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5555559c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454546d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454ac555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454544c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec5050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454549d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454547d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454547d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5353534d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656568c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656568c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555cc5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050501d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050501d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5656568c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656568c5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5656565c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5656567c555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c5050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5656567c555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5555559c5050501d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5353534d555555bc555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec565656ac5656565c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5454543d5555556c5555559c555555cc555555dc555555fc555555fc555555fc555555fc555555dc555555bc565656ac5555556c5454543d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656565c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555cc5050501d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec5555555d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5353534d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec5050501d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656565c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353538d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5353538d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353538d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5353538d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656565c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555cc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec5050501d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656565c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656565c555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec5353534d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5050501d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc5656565c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d5353538d555555cc555555ec555555fc555555fc555555ec555555bc5353538d5454543d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d0000000000000000000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555fc555555fc555555fc555555fc555555fc555555fc5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555ec5555555d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454546d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec5050501d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5555559c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555cc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454cc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555dc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454549d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454547d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555ec5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005757576c555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656565c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656565c555555ec555555fc555555fc555555fc555555fc555555fc555555fc555555ec5656566d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5656567c555555dc555555fc555555fc555555cc5555559c5050501d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454543d555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc5454543d000000000000000000000000555555bc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc555555fc545454bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005656567c555555fc555555fc555555fc555555fc555555fc555555fc555555fc5656567c00000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc5454546d000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d555555fc555555fc555555fc555555fc555555fc5656565c000000000000000000000000000000000000000000000000000000000000000000000000555555dc555555fc555555fc555555fc555555fc555555fc555555cc000000000000000000000000000000000000000000000000000000000000000000000000555555fc555555fc555555fc555555fc555555fc555555fc555555fc000000000000000000000000000000000000000000000000000000000000000000000000545454cc555555fc555555fc555555fc555555fc555555fc555555dc0000000000000000000000000000000000000000000000000000000000000000000000005555555d555555fc555555fc555555fc555555fc555555fc5656566d000000000000000000000000000000000000000000000000000000000000000000000000000000005757576c555555dc555555fc555555cc5656565c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001515153e555555fc555555fc555555fc555555fc555555fc404040bc00000000000000000b0b0b1f2a2a2a7e2a2a2a7e2a2a2a7e2020205e0000000000000000000000000000000000000000555555fc2a2a2a7e00000000000000000000000000000000000000002525256a555555fc474747d20808081600000000000000000000000000000000515151f0555555fc555555fc2727277200000000000000000000000000000000444444c8555555fc555555fb1a1a1a4a0000000000000000000000000000000008080815272727731a1a1a4a0000000000000000000000001a1a1a4e2a2a2a7e2a2a2a7e1010102f020202072a2a2a7e1d1d1d560000000000000000484848d43232329500000000000000003131319322222263000000001c1c1c54151515401e1e1e591515153d1818184a + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: diff --git a/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/DecalProjector Icon.asset.meta b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/DecalProjector Icon.asset.meta new file mode 100644 index 00000000000..97b96fe4f79 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/DecalProjector Icon.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9603ab9e0ac90754298d959374a0ec29 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/LocalVolumetricFog Icon.asset b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/LocalVolumetricFog Icon.asset new file mode 100644 index 00000000000..877c9cd226f --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/LocalVolumetricFog Icon.asset @@ -0,0 +1,48 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!28 &2800000 +Texture2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: LocalVolumetricFog Icon + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_IsAlphaChannelOptional: 0 + serializedVersion: 4 + m_Width: 256 + m_Height: 256 + m_CompleteImageSize: 349524 + m_MipsStripped: 0 + m_TextureFormat: 4 + m_MipCount: 9 + m_IsReadable: 0 + m_IsPreProcessed: 0 + m_IgnoreMipmapLimit: 1 + m_MipmapLimitGroupName: + m_StreamingMipmaps: 0 + m_StreamingMipmapsPriority: 0 + m_VTOnly: 0 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 1 + m_PlatformBlob: + image data: 349524 + _typelessdata: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5353534d535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485545454a4535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b4545454a05353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485545454a4535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a4535353685555552d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a1535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5555556955555509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454985555550900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a15454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050501d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353538d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353538d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454549800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5353536800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5555552d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454549855555509000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353685555550900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d515151455454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454548c545454a0555555b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0545454a4525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454548c545454a0555555b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454549854545474555555150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555155454547454545498545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b4545454a05353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d515151455050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555550953535368545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a1535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5151514540404005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555550954545498545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d515151654040400500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053535368545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a15454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5151514500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555552d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053535368545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353534d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454a4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353536500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054545498545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054545474545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d515151450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055555515545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053535368545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d555555450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555550954545498545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353536540404005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555550953535368545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555554540404005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555552d53535368545454a4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0545454a4525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353655353534d5050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5353534d535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485545454a4535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b4545454a05353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d515151455050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a1535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5151514540404005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d515151654040400500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a15454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d515151450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050501d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353538d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353534d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353536500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5151514500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d555555450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353536540404005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d555555454040400500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d515151455454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454548c545454a0555555b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0545454a4525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353655353534d5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5353534d535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485545454a4535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b4545454a05353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d515151455050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5353534d535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d515151455050501d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a1535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d515151454040400500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d51515145404040050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d51515165404040050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5151516540404005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a15454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5151514500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5151514500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050501d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353538d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050501d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353534d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353534d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353536500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5151514500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d51515145000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050501d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050501d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555554500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555554500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535365404040050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535365404040050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d555555454040400500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555554540404005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d515151455454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454548c545454a0555555b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0545454a4525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353655353534d5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d515151455454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353655353534d5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5353534d535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485545454a4535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b4545454a05353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485545454a4535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b4545454a05353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d515151455050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a1535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a1535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5151514540404005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d515151654040400500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a15454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a15454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d515151450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050501d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353538d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353538d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353534d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353536500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5151514500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050501d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d555555450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353536540404005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d555555454040400500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d515151455454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454548c545454a0555555b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0545454a4525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454548c545454a0555555b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0545454a4525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353655353534d5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5353534d535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485545454a4535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b4545454a05353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485545454a4535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b4545454a05353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d515151455050501d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a1535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a1535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d515151454040400500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d51515165404040050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a15454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a15454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d51515145000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050501d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353538d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353538d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353534d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d515151450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050501d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d55555545000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353654040400500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d55555545404040050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d515151455454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454548c545454a0555555b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0545454a4525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454548c545454a0555555b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0545454a4525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353655353534d5050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5353534d535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485545454a4535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b4545454a05353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d515151455050501d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a1535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d51515145404040050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5151516540404005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a15454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5151514500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050501d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353538d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353534d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d51515145000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5353538d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050501d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a05454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555554500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535365404040050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535381545454a0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a0535353815454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555554540404005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d515151455454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454548c545454a0555555b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0545454a4525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353655353534d5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5353534d535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d515151455050501d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d51515145404040050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060606005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5151516540404005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5151514500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050501d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353534d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005353534d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d51515145000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5050501d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555554500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005535353655454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535365404040050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040404005555555455454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555554540404005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858581d515151455454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353655353534d5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d545454555454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8535353ac545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b05454548c5555551500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b055555515000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005252525d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454ac545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454ac545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454548000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000515151555454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454ac5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454548c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b8525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b05555551500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5555555d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285545454ac535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a8525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285545454ac535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454805555551500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555551554545480545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8535353ac545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755252525d5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055555515545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454548c545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054545480545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454ac5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555555d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055555515545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b8525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555155454548c545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a8525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454555050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d545454555454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8535353ac545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755252525d5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005252525d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454ac545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454545500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5353537500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000515151555454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454ac5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555555d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b8525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5555555d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285545454ac535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a8525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454555050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d545454555454547d5454547d5454547d5454547d5454547d5454547d54545485535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8535353ac545454855454547d5454547d5454547d5454547d5454547d535353755252525d5050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d545454555454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755252525d5050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d54545485535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8545454855454547d5454547d5454547d5454547d5454547d5454547d535353755050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005252525d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454ac545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a85454547d5454547d5454547d5454547d5454547d5454547d5454547d54545455000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005252525d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5454547d5454547d5454547d5454547d53535375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000515151555454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454ac5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555555d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000515151555454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555555d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d52525285535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b8525252855454547d5454547d5454547d5454547d5454547d5454547d535353755050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5555555d555555755454547d5454547d5454547d5454547d5454547d52525285545454ac535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a8525252855454547d5454547d5454547d5454547d5454547d5454547d545454555050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5555555d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454555050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d545454555454547d5454547d5454547d5454547d5454547d5454547d54545485535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8535353ac545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8535353ac545454855454547d5454547d5454547d5454547d5454547d535353755252525d5050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d54545485535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8545454855454547d5454547d5454547d5454547d5454547d5454547d535353755050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005252525d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454ac545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454ac545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454545500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5454547d5454547d5454547d5454547d5353537500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000515151555454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454ac5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454ac5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555555d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d52525285535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b8525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b8525252855454547d5454547d5454547d5454547d5454547d5454547d535353755050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5555555d555555755454547d5454547d5454547d5454547d5454547d52525285545454ac535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a8525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285545454ac535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a8525252855454547d5454547d5454547d5454547d5454547d5454547d545454555050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d545454555454547d5454547d5454547d5454547d5454547d5454547d54545485535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8535353ac545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8535353ac545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755252525d5050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d54545485535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8545454855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005252525d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454ac545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454ac545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545455000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000515151555454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454ac5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454ac5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555555d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d52525285535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b8525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b8525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5555555d555555755454547d5454547d5454547d5454547d5454547d52525285545454ac535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a8525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285545454ac535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a8525252855454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454555050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d545454555454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8535353ac545454855454547d5454547d5454547d5454547d5454547d535353755252525d5050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545485535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8545454855454547d5454547d5454547d5454547d5454547d5454547d535353755050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005252525d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454ac545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a85454547d5454547d5454547d5454547d5454547d5454547d5454547d545454550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5454547d5454547d5454547d5454547d535353750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000515151555454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353a8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454ac5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555555d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b8525252855454547d5454547d5454547d5454547d5454547d5454547d535353755050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5555555d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d52525285545454ac535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555a8525252855454547d5454547d5454547d5454547d5454547d5454547d545454555050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d545454555454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755252525d5050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755050500d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005252525d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000515151555454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5555555d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755050500d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050500d5555555d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454555050500d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050502d5252526d5454547d5454547d5454547d5454547d54545495545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8525252955454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545495545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b0555555450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555552d555555755454547d5454547d5454547d5454547d54545494535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b4545454945454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545494535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454a45151514500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055555545545454a4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8525252955454547d5454547d5454547d5454547d5454547d5454547d535353755555552d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d5454547d5454547d5454547d5252526d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454a4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5454547d5454547d5454547d5454547d535353750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053535344545454b0545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b4545454945454547d5454547d5454547d5454547d5454547d5454547d5454546d5050502d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050502d5252526d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545495545454b4545454bc545454bc545454bc545454bc535353b8525252955454547d5454547d5454547d5454547d5454547d5454547d535353755555552d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d5454547d5454547d5454547d5252526d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5454547d5454547d5454547d5454547d5353537500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555552d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545494535353b8545454bc545454bc545454bc545454bc545454b4545454945454547d5454547d5454547d5454547d5454547d5454547d5454546d5050502d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050502d5252526d5454547d5454547d54545495545454b4545454bc545454bc545454bc545454bc535353b8525252955454547d5454547d535353755555552d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050502d5252526d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755555552d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5252526d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5252526d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5353537500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555552d555555755454547d5454547d54545494535353b8545454bc545454bc545454bc545454bc545454b4545454945454547d5454547d5454546d5050502d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555552d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d5050502d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050502d5252526d5454547d5454547d54545495545454b4545454bc545454bc545454bc545454bc535353b8525252955454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545495545454b4545454bc545454bc545454bc545454bc535353b8525252955454547d5454547d535353755555552d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5252526d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5353537500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555552d555555755454547d5454547d54545494535353b8545454bc545454bc545454bc545454bc545454b4545454945454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545494535353b8545454bc545454bc545454bc545454bc545454b4545454945454547d5454547d5454546d5050502d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050502d5252526d5454547d5454547d54545495545454b4545454bc545454bc545454bc545454bc535353b8525252955454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545495545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8525252955454547d5454547d5454547d5454547d5454547d5454547d535353755555552d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d5454547d5454547d5454547d5252526d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d5454547d5454547d5454547d5454547d535353750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555552d555555755454547d5454547d54545494535353b8545454bc545454bc545454bc545454bc545454b4545454945454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d54545494535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b4545454945454547d5454547d5454547d5454547d5454547d5454547d5454546d5050502d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050502d5252526d5454547d5454547d5454547d5454547d5454547d5454547d54545495545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc535353b8525252955454547d5454547d535353755555552d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5252526d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc555555b85454547d5454547d5454547d53535375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555552d555555755454547d5454547d5454547d5454547d5454547d5454547d54545494535353b8545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454bc545454b4545454945454547d5454547d5454546d5050502d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005050502d5252526d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d535353755555552d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5252526d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d53535375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555552d555555755454547d5454547d5454547d5454547d5454547d5454547d5454547d5454547d5454546d5050502d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005252526d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454a4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454a4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454a4545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5252526d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000545454a4545454bc545454bc545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454546d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005252526d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454b45454547d5454547d5454547d5252526d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454547d5454547d5454547d545454b4545454bc545454bc545454b45454547d5454547d5454547d5454546d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005252526d5454547d545454b4545454bc545454bc545454b45454547d5252526d000000000000000000000000000000000000000000000000000000000000000000000000000000005252526d5454547d5454547d5454547d5454547d5252526d00000000000000000000000000000000000000000000000000000000000000005454546d5454547d545454b4545454bc545454bc545454b45454547d5454546d000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454546d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005252526d5454547d545454b4545454bc545454bc545454b45454547d5454547d5454547d5454547d545454b4545454bc545454bc545454b45454547d5252526d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d545454b4545454bc545454bc545454b45454547d5454547d5454547d5454547d545454b4545454bc545454bc545454b45454547d5454546d000000000000000000000000000000000000000000000000000000000000000000000000000000005252526d5454547d545454b4545454bc545454bc545454b45454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5252526d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d545454b4545454bc545454bc545454b45454547d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454b45454547d5454547d5454547d5454546d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005252526d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454b45454547d5252526d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d545454b4545454bc545454bc545454bc545454bc545454b45454547d5454546d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005252526d5454547d5454547d5454547d5454547d5252526d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d5454547d5454546d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005555552d5454547d545454b4545454bc545454b45454547d5454547d545454b4545454bc545454a4000000000000000000000000000000000000000000000000000000000000000000000000545454a4545454bc545454bc545454b45454547d5252526d000000000000000000000000000000000000000000000000000000005454546d5454547d5454547d5454547d545454b4545454b45454547d5252526d0000000000000000000000000000000000000000000000000000000000000000000000005454546d545454b4545454b45252526d00000000000000000000000000000000000000005454546d5454547d5252526d0000000000000000000000000000000000000000000000000000000000000000000000005454546d545454b4545454b45454547d5454547d545454b4545454b45252526d00000000000000000000000000000000000000005454546d545454b4545454b45454547d5454547d545454b4545454bc545454b45454547d5252526d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d545454b4545454bc545454b45252526d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005454546d5454547d5252526d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000909090c2929294c525252b45353539a515151971313132900000000000000001313131b52525287515151952929294c1313131b1313131b2828283b000000000000000000000000282828493d3d3d68535353a75353539a515151951313131b1313131b2929294c2929295c1313131b00000000000000000000000000000000000000001313131b2828283b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002525253e4747478b2222223d0a0a0a0e0f0f0f1928282849292929501919192c040404060a0a0a0e00000000000000001b1b1b320b0b0b121111111d1010101f11111120 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: diff --git a/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/LocalVolumetricFog Icon.asset.meta b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/LocalVolumetricFog Icon.asset.meta new file mode 100644 index 00000000000..8c52e67d65a --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/LocalVolumetricFog Icon.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: acb29b12f9f806e4086dd007d41e47e2 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_DecalProjector Icon.asset b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_DecalProjector Icon.asset new file mode 100644 index 00000000000..d59f5c80bd0 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_DecalProjector Icon.asset @@ -0,0 +1,48 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!28 &2800000 +Texture2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: d_DecalProjector Icon + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_IsAlphaChannelOptional: 0 + serializedVersion: 4 + m_Width: 256 + m_Height: 256 + m_CompleteImageSize: 349524 + m_MipsStripped: 0 + m_TextureFormat: 4 + m_MipCount: 9 + m_IsReadable: 0 + m_IsPreProcessed: 0 + m_IgnoreMipmapLimit: 1 + m_MipmapLimitGroupName: + m_StreamingMipmaps: 0 + m_StreamingMipmapsPriority: 0 + m_VTOnly: 0 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 1 + m_PlatformBlob: + image data: 349524 + _typelessdata: 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c45c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcc2c2c24d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bcc3c3c33d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc2c2c29dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c38dbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcc3c3c33d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c38dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c38dbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc4c4c4ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3ecc4c4c45d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c37d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c38d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c29dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc2c2c29d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c29dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc2c2c29d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c29dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc2c2c29d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c38dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c37d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c37d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc2c2c24d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc4c4c4ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3ecbfbfbf1d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c38dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c38d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c45c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c38dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c49c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c45c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c45c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c54c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcbfbfbf1d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c38d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c38d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4cc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c45c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c38dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c49c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf2dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c42d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c54c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c37d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c29dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c59c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4cc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c29dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c59c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c37d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc2c2c25d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf2dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c42d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4cc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c29dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c38d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc2c2c25d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcbfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c38dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c37d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c38dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c37d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c45c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc2c2c24d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c29dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c48c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c48cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c48c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ecbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc7c7c75c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c48c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c49cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c49c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c49cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c49c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c49cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c49c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c48cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c7c7c75cc3c3c3ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ecc2c2c24d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc4c4c48cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c48cbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcc4c4c45c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc4c4c48cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c49cbfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcc4c4c45c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcc4c4c45c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bcc2c2c24d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc5c5c57cc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcc3c3c38dbfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc5c5c57cc4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ccc3c3c38dc3c3c33d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c25dc3c3c38dc4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ccc4c4c49cc4c4c45cbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc4c4c42dc2c2c25dc3c3c37dc5c5c59cc4c4c4bcc3c3c3dcc3c3c3dcc3c3c3ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3ecc3c3c3dcc4c4c4ccc4c4c4bcc5c5c59cc3c3c37dc2c2c24dc4c4c42d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c37dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3ecc3c3c37dbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcc2c2c24d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c38dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c38dbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ccbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf1d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c38dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c38d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c45c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf1d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c37d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc4c4c4ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcbfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c49c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc4c4c4ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c45c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3ad00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc4c4c4ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ec00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c46d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c29dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3ad000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4cc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3acc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c59c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c46d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ecbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3acc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c54c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ecbfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c29dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c37d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ecbfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c37d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc2c2c24d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c48cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c48c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ccbfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf1d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc4c4c48cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c48cbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc3c3c3ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcc4c4c45c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc5c5c57cc3c3c3ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57cbfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc5c5c57cc3c3c3ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcc4c4c49cbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c24dc4c4c4bcc3c3c3ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3ecc5c5c5acc4c4c45c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c33dc3c3c36cc5c5c59cc4c4c4ccc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcc4c4c4bcc5c5c5acc3c3c36cc3c3c33d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c45c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ccbfbfbf1d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc4c4c4ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3ecc4c4c45d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc2c2c24d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc4c4c4ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3ecbfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c45c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c38dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c38d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4cc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c38dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c38d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c45c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4cc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ecbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc7c7c75c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c7c7c75cc3c3c3ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ecc2c2c24d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcbfbfbf1d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dcc4c4c45c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc3c3c38dc4c4c4ccc3c3c3ecc4c4c4fcc4c4c4fcc3c3c3ecc4c4c4bcc3c3c38dc3c3c33d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d0000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc00000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcbfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1c1c16dc4c4c4ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3ecc4c4c45d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c46d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc4c4c4ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3ecbfbfbf1d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c49c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4cc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c29dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c37d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c3ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ecbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c56cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc7c7c75c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c7c7c75cc3c3c3ecc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4ecc4c4c46d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc5c5c57cc3c3c3dcc4c4c4fcc4c4c4fcc4c4c4ccc4c4c49cbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c33dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c33d000000000000000000000000c4c4c4bcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4bc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c57cc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc5c5c57c00000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c46d00000000000000000000000000000000000000000000000000000000000000000000000000000000c1c1c16dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c45c000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3dcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4cc000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4ccc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc3c3c3dc000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c46d00000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c56cc3c3c3dcc4c4c4fcc4c4c4ccc4c4c45c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003333333ec4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fcc4c4c4fc959595bc00000000000000001a1a1a1f6262627e6262627e6262627e4b4b4b5e0000000000000000000000000000000000000000c4c4c4fc6262627e00000000000000000000000000000000000000005555556ac4c4c4fca5a5a5d21212121600000000000000000000000000000000bdbdbdf0c4c4c4fcc4c4c4fc5b5b5b72000000000000000000000000000000009e9e9ec8c4c4c4fcc4c4c4fb3d3d3d4a00000000000000000000000000000000121212155b5b5b733d3d3d4a0000000000000000000000003d3d3d4e6262627e6262627e2525252f060606076262627e434343560000000000000000a6a6a6d4757575950000000000000000737373934f4f4f63000000004141415432323240464646593030303d3a3a3a4a + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: diff --git a/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_DecalProjector Icon.asset.meta b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_DecalProjector Icon.asset.meta new file mode 100644 index 00000000000..62a10a116d1 --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_DecalProjector Icon.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 340b2e8f8761e254d8ee52bc663cedbd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_LocalVolumetricFog Icon.asset b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_LocalVolumetricFog Icon.asset new file mode 100644 index 00000000000..8f79c0a7a2b --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_LocalVolumetricFog Icon.asset @@ -0,0 +1,48 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!28 &2800000 +Texture2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: d_LocalVolumetricFog Icon + m_ImageContentsHash: + serializedVersion: 2 + Hash: 00000000000000000000000000000000 + m_IsAlphaChannelOptional: 0 + serializedVersion: 4 + m_Width: 256 + m_Height: 256 + m_CompleteImageSize: 349524 + m_MipsStripped: 0 + m_TextureFormat: 4 + m_MipCount: 9 + m_IsReadable: 0 + m_IsPreProcessed: 0 + m_IgnoreMipmapLimit: 1 + m_MipmapLimitGroupName: + m_StreamingMipmaps: 0 + m_StreamingMipmapsPriority: 0 + m_VTOnly: 0 + m_AlphaIsTransparency: 0 + m_ImageCount: 1 + m_TextureDimension: 2 + m_TextureSettings: + serializedVersion: 2 + m_FilterMode: 1 + m_Aniso: 1 + m_MipBias: 0 + m_WrapU: 0 + m_WrapV: 0 + m_WrapW: 0 + m_LightmapFormat: 0 + m_ColorSpace: 1 + m_PlatformBlob: + image data: 349524 + _typelessdata: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c24dc2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a4c3c3c3b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3b4c3c3c3a0c3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a4c3c3c3b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a4c6c6c668c4c4c42d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c469bfbfbf090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c498bfbfbf0900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c469000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c38dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c38dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcbfbfbf150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c42d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc6c6c66800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c498bfbfbf090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc6c6c668bfbfbf090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c345c1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c48cc5c5c5a0c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c5c5c5a4c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c48cc5c5c5a0c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c498c5c5c574bfbfbf150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf15c5c5c574c4c4c498c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3b4c3c3c3a0c3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c16dc3c3c345bfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf09c6c6c668c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf09c4c4c498c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c6c6c668c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c42dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c368c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c24d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3a4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c26500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c498c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c46d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c574c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c34500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf15c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c368c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf09c5c5c598c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf09c3c3c368c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf2dc6c6c668c3c3c3a4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c5c5c5a4c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265c2c2c24dbfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c24dc2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a4c3c3c3b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3b4c3c3c3a0c3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c16dc3c3c345bfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c38dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c24d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c2650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c46d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf1d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c34500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c345c1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c48cc5c5c5a0c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c5c5c5a4c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265c2c2c24dbfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c24dc2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a4c3c3c3b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3b4c3c3c3a0c3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c16dc3c3c345bfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c24dc2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c16dc3c3c345bfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c34500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c38dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c24d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c24d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c2650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c26500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c46d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c46d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c34500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c34500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c345c1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c48cc5c5c5a0c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c5c5c5a4c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265c2c2c24dbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c345c1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265c2c2c24dbfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c24dc2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a4c3c3c3b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3b4c3c3c3a0c3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a4c3c3c3b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3b4c3c3c3a0c3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c16dc3c3c345bfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c38dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c38dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c24d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c2650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c46d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf1d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c34500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c345c1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c48cc5c5c5a0c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c5c5c5a4c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c48cc5c5c5a0c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c5c5c5a4c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265c2c2c24dbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c24dc2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a4c3c3c3b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3b4c3c3c3a0c3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a4c3c3c3b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3b4c3c3c3a0c3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c16dc3c3c345bfbfbf1d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c34500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c38dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c38dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c24d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c46d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c345c1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c48cc5c5c5a0c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c5c5c5a4c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c48cc5c5c5a0c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c5c5c5a4c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265c2c2c24dbfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c24dc2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a4c3c3c3b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3b4c3c3c3a0c3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c16dc3c3c345bfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc2c2c2a1c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c38dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c24d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c26500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c46d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c34500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c38dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c381c5c5c5a0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a0c3c3c381c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c345c1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c48cc5c5c5a0c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0c5c5c5a4c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265c2c2c24dbfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c24dc2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c16dc3c3c345bfbfbf1d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c2c2c265c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf05000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c24d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c26500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c46d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c24dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c34500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dbfbfbf1d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c4c4c465c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf05c3c3c345c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c345bfbfbf0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf1dc3c3c345c1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c265c2c2c24dbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c3acc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3b0c4c4c48cbfbfbf150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3b0bfbfbf1500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5acc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5acc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5acc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c48c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b0bfbfbf150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c25dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c5c5c5acc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c5c5c5acc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c480bfbfbf150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf15c4c4c480c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c3acc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175c2c2c25dbfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf15c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175bfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c48cc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c2550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c480c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5acc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c25d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf15c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c375bfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf15c4c4c48cc4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c255bfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c3acc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175c2c2c25dbfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175bfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5acc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c25500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5acc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c25d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c375bfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c25dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c5c5c5acc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c255bfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c3acc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175c2c2c25dbfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175c2c2c25dbfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175bfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175bfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5acc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c25500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c2550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5acc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c25d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c25d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c375bfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c375bfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c25dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c5c5c5acc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c255bfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c25dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c255bfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c3acc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c3acc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175c2c2c25dbfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175bfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5acc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5acc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c25500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5acc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5acc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c25d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c375bfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c25dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c5c5c5acc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c5c5c5acc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c255bfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c3acc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c3acc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175c2c2c25dbfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175bfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5acc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5acc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c255000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5acc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5acc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c25d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c375bfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c25dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c5c5c5acc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c5c5c5acc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c255bfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c3c3c3a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c3acc3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175c2c2c25dbfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175bfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5acc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c2550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c5a8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5acc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c25d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c375bfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c25dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c385c5c5c5acc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a8c3c3c385c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c255bfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175c2c2c25dbfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175bfbfbf0d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c25dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c2550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2c2c255c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c25d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c375bfbfbf0d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf0dc2c2c25dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c255bfbfbf0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf2dc1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c295c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c2c2c295c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c295c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3b0c6c6c6450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c42dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c594c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c4c4c494c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c594c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a4c3c3c345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c345c3c3c3a4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c2c2c295c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175c4c4c42d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c16d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c5a4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c544c4c4c4b0c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c4c4c494c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c46dbfbfbf2d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf2dc1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c295c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c2c2c295c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175c4c4c42d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c16d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c3750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c42dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c594c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c4c4c494c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c46dbfbfbf2d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf2dc1c1c16dc3c3c37dc3c3c37dc2c2c295c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c2c2c295c3c3c37dc3c3c37dc1c1c175c4c4c42d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf2dc1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175c4c4c42d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc1c1c16d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c16d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c3750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c42dc3c3c375c3c3c37dc3c3c37dc5c5c594c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c4c4c494c3c3c37dc3c3c37dc4c4c46dbfbfbf2d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c42dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c46dbfbfbf2d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf2dc1c1c16dc3c3c37dc3c3c37dc2c2c295c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c2c2c295c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c295c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c2c2c295c3c3c37dc3c3c37dc1c1c175c4c4c42d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc1c1c16d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c3750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c42dc3c3c375c3c3c37dc3c3c37dc5c5c594c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c4c4c494c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c594c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c4c4c494c3c3c37dc3c3c37dc4c4c46dbfbfbf2d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf2dc1c1c16dc3c3c37dc3c3c37dc2c2c295c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c2c2c295c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c295c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c2c2c295c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175c4c4c42d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c16d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c42dc3c3c375c3c3c37dc3c3c37dc5c5c594c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c4c4c494c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c594c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c4c4c494c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c46dbfbfbf2d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf2dc1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc2c2c295c4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c2c2c295c3c3c37dc3c3c37dc1c1c175c4c4c42d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc1c1c16d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b8c3c3c37dc3c3c37dc3c3c37dc3c3c37500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c42dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc5c5c594c4c4c4b8c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c4c4c494c3c3c37dc3c3c37dc4c4c46dbfbfbf2d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfbfbf2dc1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c175c4c4c42d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c16d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c42dc3c3c375c3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c46dbfbfbf2d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1c1c16dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc3c3c3a400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc5c5c5a4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3c3c3a4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc1c1c16d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c5c5c5a4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc4c4c46d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc1c1c16d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc4c4c46d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1c1c16dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc1c1c16d00000000000000000000000000000000000000000000000000000000000000000000000000000000c1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c16d0000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc4c4c46d00000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c46d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1c1c16dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc1c1c16d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc4c4c46d00000000000000000000000000000000000000000000000000000000000000000000000000000000c1c1c16dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc1c1c16d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc3c3c37dc4c4c46d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1c1c16dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc1c1c16d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4bcc4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc4c4c46d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1c1c16dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc1c1c16d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc3c3c37dc4c4c46d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c42dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4b4c3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc3c3c3a4000000000000000000000000000000000000000000000000000000000000000000000000c5c5c5a4c4c4c4bcc4c4c4bcc4c4c4b4c3c3c37dc1c1c16d00000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc3c3c37dc3c3c37dc4c4c4b4c4c4c4b4c3c3c37dc1c1c16d000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc4c4c4b4c4c4c4b4c1c1c16d0000000000000000000000000000000000000000c4c4c46dc3c3c37dc1c1c16d000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc4c4c4b4c4c4c4b4c3c3c37dc3c3c37dc4c4c4b4c4c4c4b4c1c1c16d0000000000000000000000000000000000000000c4c4c46dc4c4c4b4c4c4c4b4c3c3c37dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4b4c3c3c37dc1c1c16d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc4c4c4b4c4c4c4bcc4c4c4b4c1c1c16d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4c4c46dc3c3c37dc1c1c16d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001515150c6161614cc0c0c0b4c3c3c39abfbfbf972d2d2d2900000000000000002d2d2d1bbfbfbf87bfbfbf956161614c2d2d2d1b2d2d2d1b5e5e5e3b0000000000000000000000005e5e5e498f8f8f68c3c3c3a7c3c3c39abfbfbf952d2d2d1b2d2d2d1b6161614c6161615c2d2d2d1b00000000000000000000000000000000000000002d2d2d1b5e5e5e3b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005858583ea8a8a88b5151513d1717170e232323195e5e5e49616161503b3b3b2c0b0b0b061717170e0000000000000000404040321a1a1a122828281d2727271f2a2a2a20 + m_StreamData: + serializedVersion: 2 + offset: 0 + size: 0 + path: diff --git a/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_LocalVolumetricFog Icon.asset.meta b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_LocalVolumetricFog Icon.asset.meta new file mode 100644 index 00000000000..edfee8a7dcc --- /dev/null +++ b/Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/d_LocalVolumetricFog Icon.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a51c08ea4f8a47641a38f14eff7be3db +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/RenderPipelineResources/Texture/LocalVolumetricFog.png b/Packages/com.unity.render-pipelines.high-definition/Editor/RenderPipelineResources/Texture/LocalVolumetricFog.png deleted file mode 100644 index 3eadb0952f1ae0b2971c3456b4d06f009cd048d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2813 zcmbtWdpMN&7k_6MWL%eAa=#7{)}=*hW|TsqrQEHl2$i%%40FM5l1h<#4YsJZ+{Kd1 zSZfj1HFpNN--cm~%gns{s{K9tJiq^b&+q#@@AEzHIp_O1=X>7o_jBI(^Y&+i1rG@V z03d8*eaaC4V2}s{1o)uIGx+sYXgYAq+ARbCN)GQouuHFW>H97rj%O@^!oTDfpch_0 ztQ{7zCL-CF5C9;UWOE98Asn_c*6>K7=^)?4Asx7sl)>+ox~dx1x`R)A)m__97RR}? zBu^j2IgDSDivPoKxfBy)9skq$%N|n5k<#V9^>PhAW96u~)o<-ttiV5YlOjI^u@)9r z%}FV6DB}MzcAlj?uew7Yrw5HyGbejrIiTNxJ7F2rp`jtsPKw1|E_Z{$X0wUWHp}@y z6l?5GP|eP4mNau3yprL1=uM0U|q-D^hcp8w_coXjGhRfMRDED@O z)iZVoq2xNCkN;W#5|c4)qS5?5A&yK9*g6mN*uRS(h(_?)dIO7uO|-3J+cHK*69RSU z>6IccmQpbbNb1hc4(r?63Uw#sz`!nCCQw=wcI74^fAaR|9<4T#RZ7KWMjw@O;hOF+ zVFs}l6+F!!m~*u-i4O7KlsXSjMf;AHN~WJ;!40aF>WNz(%+BZTz-nK8(9;8bmYYtT z6X;I_M&~ZwrH;`ifjcrLNaa1bM(gY3dRcr=^w4y6m?c@MyauBj?UfzKlxj)xf!+1b z)8K0&cO?n)KwvSRZD&>@&?1qOrWXV|&HAkG!j(jk?$Hm?s-9U>fLdc|ayMt2d2Rd8 zG0r+d+cZ65%^J9i*(F+{fUNpLCkyMw4?6z1(L z++f!$GCvZOE3eCcio!@l0Jm@!g4FqV?Evqeo0h0O7z$93iKNaG+4yhRuhb8g@toy} zfR|s>177T{Ux)1m*<8yIADk-1#6nnDG?$b9gGbUE7dk1sM|v&hI1E3}5W967&F%5& zHGVeU!|7A z&_S+q1|r$Eo{qwOl|KS8e0f$d>mzN?B0C_Y@sK9cZE&!w(IguDH2 zyWKFp;HyuwyL^Z*JWd}FzdW4eBd_vO?QU(GpNO~o?Y^zbL$%;kdcvHYuYnrbQO`D3 zBRc#ZUaZ!MPp*nnaGG8pKIqAJEDGi?yQ_a!n2?5Ad6DNuA#8Fz#*KwTx8YsYVGR?J zw8^3&!?8UYZj&oVM9xV8BIjVHfq9fP;m8!DR{XtyG%YzOPAE=xc@3eQI&xU}a%+*H zb^A@7*oUKB=NBwm3nJ9pGzxalgk>A+TU)P^DjRrm-z2eI-)1;CiNxqu$o3kwEvzm`i3XfkyS=$*EYEc7b$-8$Tgvy`&C0n8cXt8eaa@M8E&*Rn;W%XcJLc3QDeM~ zcN4B#YRuD=^43$KCNtXJ01q~$pzVnrnB@C!8kn6M<7B52L?DQB{F#;}#31$do=KU)VtJAo% z9$JX~8n!r4uvz6JG&Khd%-SB3+y9j}?zGf!((<0bA3r-DdsVx#-i1Pj7xOTLhJ8l3 zln6K;7G??MA~`}k2Ce>*u;v)|6N5Kj2Z&tuLuZ8(wrc|{i2Vi|bhI7J)E2#WW2upD z75CXsqKw0Jk|e)imSx+OpI|HAHYFZ4>7}EaJoa_yEPukbg}(){;wYr60p#Cj6H=Lz zW!Ei;r!!_)*_U{4eSb*4Han~0v)@ZuA~=bdXyGgyy%Wv$%FhKujo92qB(-60=vBB~ zirdn<(cl`5b^&KvEGtO8v^UhL>8eEJhxjsclBM(m@MyG?dn4u_^sg$B@lK+fe-EB5 z6z0Y!2e}M)o@m=$8wxcg-c5(%PpM3F??O24N<>lj#O#8O&Asb6T%pryf%d_~+C13}0rRN3P| zk@7`FY+PrWU$KPOINWEcdG(0Le-s@EyH7k*7IJ-+l zBxlh+hqgzp5);0Hm@4xf@5q(+=m8S(ya>d=`ssq6O)2&A)6=31-tfsaM9vQ!+Q?op zsL9|JfH)>}9&|I)ih%!yFzxCB%_HDi0KXn!MWIe=LwqiX(T-cW^cY2jZnT8}=q_SQ z0iZ=pY#;3-77DnAn1DJrJyde-qM1wtoVOGB^-Q87!3~V^5V3@U&m&yr^JJlJqwfS1 z#=mK3Tc(PBB+f!zY2tL2G&vnqaKfay;l@xgeIUJZG5c7XZe_QG7e#I?5j=c#lr*!r zwLH?Cs6^UX{XoZubah`v;9^^f?NqDWAFeio2)8Yo%X)jhR7`G>0qb%yTnt50*d^3W znaBLNMl=r3DD)158i=stN`0`&q3vYVuA9k~z>hQDA>!RLA5&%~6vh)tUKJb{La~o& zmp>COrjmPI6LCghZn?2P>%nR>NoAe8XUvd8+EvKFJf9vsa-c>V3M|^nqBZ}l`Bs{2 z0-cg`CkH^IY9-Q>2$10DUy6shMh237ScL<^q>j`mP~qlS{P;PgwFrF4TAf=~XtkI)a!oNZSt6*Kwb%d}WM96BjwsPO(Tk zXMLcXE#8JrVU8v)yw}Kp{Pk_Bz{PKw(gfJb(Fg&V>kS36V7c+o%M2;=Y9+Ax#$M6x zR%g nlLb#`GU7L(U&{Y$q<;hfeWckpHD)qW`#?5U_NNLhaWQ`bR-s0b diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/RenderPipelineResources/Texture/LocalVolumetricFog.png.meta b/Packages/com.unity.render-pipelines.high-definition/Editor/RenderPipelineResources/Texture/LocalVolumetricFog.png.meta deleted file mode 100644 index faeb5597b72..00000000000 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/RenderPipelineResources/Texture/LocalVolumetricFog.png.meta +++ /dev/null @@ -1,260 +0,0 @@ -fileFormatVersion: 2 -guid: f1a8309765f875a468f713b57896df1c -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 13 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - flipGreenChannel: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - ignoreMipmapLimit: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: 0 - wrapU: 0 - wrapV: 0 - wrapW: 0 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - swizzle: 50462976 - cookieLightType: 0 - platformSettings: - - serializedVersion: 4 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - ignorePlatformSupport: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 4 - buildTarget: CloudRendering - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - ignorePlatformSupport: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 4 - buildTarget: Switch - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - ignorePlatformSupport: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 4 - buildTarget: WebGL - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - ignorePlatformSupport: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 4 - buildTarget: QNX - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - ignorePlatformSupport: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 4 - buildTarget: Android - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - ignorePlatformSupport: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 4 - buildTarget: Standalone - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - ignorePlatformSupport: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 4 - buildTarget: EmbeddedLinux - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - ignorePlatformSupport: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 4 - buildTarget: Kepler - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - ignorePlatformSupport: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 4 - buildTarget: WindowsStoreApps - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - ignorePlatformSupport: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 4 - buildTarget: iOS - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - ignorePlatformSupport: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 4 - buildTarget: VisionOS - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - ignorePlatformSupport: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - - serializedVersion: 4 - buildTarget: tvOS - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - ignorePlatformSupport: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - customData: - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spriteCustomMetadata: - entries: [] - nameFileIdTable: {} - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFog.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFog.cs index 7d1ad3a31b0..b457e4e42ca 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFog.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFog.cs @@ -197,7 +197,7 @@ internal LocalVolumetricFogEngineData ConvertToEngineData() [HDRPHelpURLAttribute("create-a-local-fog-effect")] [ExecuteAlways] [AddComponentMenu("Rendering/Local Volumetric Fog")] - [Icon("Fog")] + [Icon("Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/LocalVolumetricFog Icon.asset")] public partial class LocalVolumetricFog : MonoBehaviour { /// Local Volumetric Fog parameters. diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFog.cs.meta b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFog.cs.meta index 63fb2860484..f03ddda2af1 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFog.cs.meta +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricLighting/LocalVolumetricFog.cs.meta @@ -5,7 +5,6 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {fileID: 2800000, guid: f1a8309765f875a468f713b57896df1c, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalProjector.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalProjector.cs index a734f17e9ad..dfe4a53abb8 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalProjector.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalProjector.cs @@ -27,7 +27,7 @@ public enum DecalScaleMode [CanEditMultipleObjects] #endif [AddComponentMenu("Rendering/HDRP Decal Projector")] - [Icon("DecalProjector")] + [Icon("Packages/com.unity.render-pipelines.core/Editor/Icons/Processed/DecalProjector Icon.asset")] public partial class DecalProjector : MonoBehaviour { [SerializeField] diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalProjector.cs.meta b/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalProjector.cs.meta index 88b50107bf9..369590cb415 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalProjector.cs.meta +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Material/Decal/DecalProjector.cs.meta @@ -5,7 +5,6 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {fileID: 2800000, guid: b057b73ec5a603e4aa80ccf4b34db0d3, type: 3} userData: assetBundleName: assetBundleVariant: From 4532493dd962338182cd2d893c53fe51a9a3ef96 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Wed, 10 Sep 2025 22:58:53 +0000 Subject: [PATCH 08/65] [Port] [6000.3] Shader Graph Heatmap color mode details in docs --- .../Documentation~/Color-Modes.md | 90 +++++++++++++++--- .../Shader-Graph-Project-Settings.md | 4 +- .../Documentation~/images/HeatMapGradient.png | Bin 0 -> 241 bytes 3 files changed, 80 insertions(+), 14 deletions(-) create mode 100644 Packages/com.unity.shadergraph/Documentation~/images/HeatMapGradient.png diff --git a/Packages/com.unity.shadergraph/Documentation~/Color-Modes.md b/Packages/com.unity.shadergraph/Documentation~/Color-Modes.md index 56648ca32cd..c082f606967 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Color-Modes.md +++ b/Packages/com.unity.shadergraph/Documentation~/Color-Modes.md @@ -8,13 +8,13 @@ Shader Graph can display colors on nodes in your graph to improve readability. T | Name | Description | |:-------------|:------------| -| None | Does not display colors on the nodes. All nodes use the default gray. | -| Category | Displays colors on the nodes based on their assigned category. See **Category Colors** below. | -| Heatmap | Displays colors on the nodes based on the nodes relative performance cost. By default, dark colored nodes contribute very little to the overall GPU performance cost of the shader and brighter colored nodes require more GPU computation to run. | -| Precision | Displays colors on the nodes based on the current [Precision Mode](Precision-Modes.md) in use. | -| User Defined | Lets you set the display colors on a per-node basis. These are custom colors for your graph. See **User Defined Colors** below. | +| **None** | Does not display colors on the nodes. All nodes use the default gray. | +| **Category** | Displays colors on the nodes based on their assigned category. Refer to [Category colors](#category-colors). | +| **Heatmap** | Displays colors on the nodes based on the nodes relative performance cost. By default, dark colored nodes contribute very little to the overall GPU performance cost of the shader and brighter colored nodes require more GPU computation to run. Refer to [Heatmap colors](#heatmap-colors). | +| **Precision** | Displays colors on the nodes based on the current [Precision Mode](Precision-Modes.md) in use. Refer to [Precision colors](#precision-colors). | +| **User Defined** | Lets you set the display colors on a per-node basis. These are custom colors for your graph. Refer to [User Defined colors](#user-defined-colors). | -### Category Colors +### Category colors This mode displays colors on the nodes based on their category. See the [Node Library](Node-Library.md) to learn about the different categories available. @@ -32,13 +32,49 @@ The table below lists current categories and their corresponding colors. | Utility | #AEAEAE | | UV | #08D78B | -**Note:** [Sub Graph](Sub-Graph.md) nodes in a main [Shader Graph](index.md) fall in the Utility category. If you select **Category** mode, all Sub Graphs use the Utility color. +[Sub Graph](Sub-Graph.md) nodes in a main [Shader Graph](index.md) fall in the Utility category. If you select **Category** mode, all Sub Graphs use the Utility color. -### Precision Colors +**Note:** You can [override the Category colors](#override-category-and-precision-default-colors) according to your needs. -This mode displays colors on the nodes based on their current precision. If you set a node to **Inherit Precision**, the display color reflects the currently active precision. See [Precision Modes](Precision-Modes.md) for more information about inheritance. +### Heatmap colors -### User Defined Colors +This mode displays colors on the nodes based on their relative performance cost: +* Darker colored nodes (black to purple-red) have a lower impact on the overall GPU performance of the shader. +* Brighter colored nodes (red to yellow) require more GPU computation to run. +* Nodes colored in light blue have an unknown impact on the GPU performance. + +You can use this color mode to identify and adjust the most expensive parts of the shader graph if your shader's overall performance is low. + +**Note:** Platforms and hardware profiles may introduce variations in the costs of specific nodes and operations. You should consider the Heatmap color mode as an indication to help start the shader optimization process rather than a precise and exact measurement of final results. The best way to measure shader performance is still to run the shader on the target platform in the context of your project. + +#### The default Heatmap colors + +The default Heatmap color set includes 10 colors. + +![The 10 default colors of the Heatmap mode, in a gradient from the left to the right: from black through purple, red, and orange, to yellow.](images/HeatMapGradient.png) + +Each color corresponds to a range of GPU cycle numbers that would be required to run the node's code once compiled, and the scale is exponential. For example, black corresponds to 0-3 GPU cycles, red corresponds to 64-127 cycles, and yellow corresponds to 1024 cycles and more. + +An additional color, light blue by default, is reserved for the unknown impact. + +A few considerations to better understand the default node color assignment in the Heatmap color mode: + +* Many nodes have no performance cost. This includes nodes that bring in data from outside the shader without performing any math, or straightforward math nodes such as Absolute and Saturate. + +* The node color assignments are broad estimates, as some nodes produce a variable number of cycles depending on the input data type or the various parameters you've set up. + +* The unknown impact color is for nodes that do texture samples or whose results can vary widely. Texture samples take a long time and some factors such as filtering settings and texture resolution can also change their performance cost a lot. + + +### Precision colors + +This mode displays colors on the nodes based on their current precision. + +If you set a node to **Inherit Precision**, the display color reflects the currently active precision. See [Precision Modes](Precision-Modes.md) for more information about inheritance. + +**Note:** You can [override the Precision colors](#override-category-and-precision-default-colors) according to your needs. + +### User-defined colors This mode displays colors on the nodes based on user preferences. In this mode, the user defines colors for each node. If a custom color is not set, the node displays in the default gray. @@ -50,8 +86,38 @@ To set a custom color for a node, right-click on the target node to bring up the | Reset | Removes the currently selected color and sets it to the default gray. | -## Overriding Default Colors +## Customize the predefined color modes + +For each project, you can customize the predefined color modes according to your needs. -For each project, you can override preset colors in the **Category** and **Precision** modes. Unity uses a `.uss` style sheet and Hex color codes to set colors. The default style sheet in your project is `Packages/com.unity.shadergraph/Editor/Resources/Styles/ColorMode.uss`. +### Override the Category and Precision default colors + +You can override preset colors in the **Category** and **Precision** modes. Unity uses a `.uss` style sheet and Hex color codes to set colors. The default style sheet in your project is `Packages/com.unity.shadergraph/Editor/Resources/Styles/ColorMode.uss`. The best practice is to create a copy of this file to override the presets. Under your project's **Assets** folder, create a new `Editor/Resources/Styles` folder structure, and place a copy of `ColorMode.uss` in the `Styles` folder. Change the Hex color codes in this `.uss` file to override the presets and use your own custom colors for the **Category** and **Precision** modes. + +### Customize the Heatmap color mode + +You can customize the whole Heatmap color mode, which includes the number of available colors, the color assignment for all available nodes and sub graphs, and the colors themselves. For this, you have to create a custom Shader Graph Heatmap Values asset and then reference it in the [Project Settings](Shader-Graph-Project-Settings.md#heatmap-color-mode-settings). + +To create and apply a custom Shader Graph Heatmap Values asset in your project, follow these steps: + +1. In the Project window, right-click in any folder, select **Create** > **Shader Graph** > **Custom Heatmap Values**. +1. Choose between **Heatmap with Default Values** or **Empty Heatmap** depending on your needs. +1. Give your new asset a name and select it. +1. In the inspector: + * In the **Categories** section, define the colors and the number of colors you need in your custom color set. Use **+** (plus) or **-** (minus) at the bottom of the list to add or remove colors. + * In the **Subgraphs** and **Nodes** sections, assign each listed sub graph and node a color based on the category indexes listed in the **Categories** section. + * In the **Subgraphs** section, you can add sub graphs of your project that aren't listed and also assign them a color. +1. From the Editor's main menu, select **Edit** > **Project Settings**, and select **Shader Graph**. +1. Under **Heatmap Color Mode Settings**, in **Custom Values**, select the Shader Graph Heatmap Values asset you just configured. + +**Note**: When you assign color category values to **Nodes** and **Subgraphs** in the Shader Graph Heatmap Values asset, make sure to only use values that correspond to category indexes that exist in the **Category** list. + +#### Beyond the configuration + +If you need to roll back to the default Heatmap color mode setup, in the **Project Settings**, under **Heatmap Color Mode Settings**, in **Custom Values**, select **None**. + +You can create multiple custom Shader Graph Heatmap Values assets and alternatively use them based on the current needs of the project. You can only select one Custom Heatmap Values asset at a time in the [Project Settings](Shader-Graph-Project-Settings.md#heatmap-color-mode-settings). + +When you set up a custom Shader Graph Heatmap Values asset, you can completely change the purpose of the Heatmap color mode and define a color set that represents a totally different kind of information. For example, a technical director could decide to use only two colors, green and red, and inform the team that green nodes are available to use while red nodes are off limits. diff --git a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Project-Settings.md b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Project-Settings.md index bc1055356c4..3780da6fa18 100644 --- a/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Project-Settings.md +++ b/Packages/com.unity.shadergraph/Documentation~/Shader-Graph-Project-Settings.md @@ -22,11 +22,11 @@ It's impossible to limit the number of channels users can create in a Shader Gra ## Heatmap Color Mode Settings -You can create multiple customized heatmap values assets and swap them in and out based on the current needs of your project. Use **Heatmap Color Mode Settings** to specify which custom heatmap values asset to use for your project. +You can customize the [Heatmap color mode](Color-Modes.md#heatmap-colors) and use different sets of colors with different node assignments according to your project needs. For this, you first have to [create a custom Shader Graph Heatmap Values asset](Color-Modes.md#customize-the-heatmap-color-mode). | Property | Description | |:------------------|:-------------------------------------------| -| **Custom Values** | Specify which set of customized heatmap values to use for your project. | +| **Custom Values** | Specify the Shader Graph Heatmap Values asset to use for your project, or **None** if you want to use the default values. | ## Additional resources diff --git a/Packages/com.unity.shadergraph/Documentation~/images/HeatMapGradient.png b/Packages/com.unity.shadergraph/Documentation~/images/HeatMapGradient.png new file mode 100644 index 0000000000000000000000000000000000000000..e9b4150a0cea4c7e72dbba334f80c02cf884224a GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0y~yU_1n5Yj7|F$*4Robs(h};1l9{)}e5oetnUAqYHnT z1ivi<1IwSk`~RKl{W~q=V?ylz|Nn2_kVyq9?)G$X45_&F_Toz30}c$#2mhS^8ecG> z+1G#8QMGG2&Xc$I6q=>hhotT`Pu&xmy4UQl{_0J2vyJLjZQ3{6Xx}OUC6^8XMW+@H gLCP5FDp&5*a@zE)%DT4CALuLwPgg&ebxsLQ0M0~F^Z)<= literal 0 HcmV?d00001 From a514c217e7dd7844e69d58e361c3a490e5fbe418 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Thu, 11 Sep 2025 15:44:24 +0000 Subject: [PATCH 09/65] [Port] [6000.3] [UUM-116587][UUM-116583][6000.4][URP 2D] Fix Light 2D name on game object creation --- .../LightBatchingDebugger.cs | 18 +++++++++++------- .../Editor/2D/Renderer2DMenus.cs | 3 ++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/LightBatchingDebugger/LightBatchingDebugger.cs b/Packages/com.unity.render-pipelines.universal/Editor/2D/LightBatchingDebugger/LightBatchingDebugger.cs index f98c64c2e4a..660a9f08a15 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/LightBatchingDebugger/LightBatchingDebugger.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/LightBatchingDebugger/LightBatchingDebugger.cs @@ -162,7 +162,7 @@ private void ViewBatch(int index) foreach (var obj in batch1.Lights) { - if(obj != null) + if (obj != null) lightBubble1.Add(MakePill(obj)); } @@ -241,7 +241,7 @@ private void CompareBatch(int index1, int index2) lightBubble1.Clear(); foreach (var obj in lightSet1) { - if(obj != null) + if (obj != null) lightBubble1.Add(MakePill(obj)); } @@ -255,7 +255,7 @@ private void CompareBatch(int index1, int index2) lightBubble2.Clear(); foreach (var obj in lightSet2) { - if(obj != null) + if (obj != null) lightBubble2.Add(MakePill(obj)); } @@ -391,7 +391,7 @@ private void OnSelectionChanged() var firstIndex = batchListView.selectedIndices.First(); var secondIndex = batchListView.selectedIndices.Last(); - if(secondIndex > firstIndex + 1 || secondIndex < firstIndex - 1) + if (secondIndex > firstIndex + 1 || secondIndex < firstIndex - 1) { // Clamp since we do adjacent batch comparisons secondIndex = Mathf.Clamp(secondIndex, firstIndex - 1, firstIndex + 1); @@ -408,7 +408,7 @@ private void OnSelectionChanged() default: // Account for multiple select either with shift or ctrl keys - if(batchListView.selectedIndices.Count() > 2) + if (batchListView.selectedIndices.Count() > 2) { if (selectedIndices.Count == 1) { @@ -466,8 +466,12 @@ private bool IsDirty() isDirty |= Light2DManager.GetCachedSortingLayer().Count() != batchList.Sum(x => x.LayerNames.Count()); isDirty |= cachedSceneHandle != SceneManager.GetActiveScene().handle; isDirty |= cachedCamPos != Camera.main?.transform.position; - isDirty |= totalLightCount != lightCullResult.visibleLights.Count(); - isDirty |= totalShadowCount != lightCullResult.visibleShadows.Count(); + + if (lightCullResult.IsGameView()) + { + isDirty |= totalLightCount != lightCullResult.visibleLights.Count(); + isDirty |= totalShadowCount != lightCullResult.visibleShadows.Count(); + } return isDirty; } diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/Renderer2DMenus.cs b/Packages/com.unity.render-pipelines.universal/Editor/2D/Renderer2DMenus.cs index 45d2db18cbb..9e9981e7e2b 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/Renderer2DMenus.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/Renderer2DMenus.cs @@ -101,7 +101,8 @@ internal static void Place(GameObject go, GameObject parent) static Light2D CreateLight(MenuCommand menuCommand, Light2D.LightType type, Vector3[] shapePath = null) { - GameObject go = ObjectFactory.CreateGameObject("Light 2D", typeof(Light2D)); + var lightName = type != Light2D.LightType.Point ? type.ToString() : "Spot"; + GameObject go = ObjectFactory.CreateGameObject(lightName + " Light 2D", typeof(Light2D)); Light2D light2D = go.GetComponent(); light2D.batchSlotIndex = LightBatch.batchSlotIndex; light2D.lightType = type; From 7b9b07aa72050191c2684eebb5ddc612f17c032e Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Fri, 12 Sep 2025 13:16:05 +0000 Subject: [PATCH 10/65] [Port] [6000.3] Screen Space Ambient Occlusion is not visible when the directional light intensity is 0.001 or lower with the Deferred Rendering Path selected --- .../Shaders/Utils/StencilDeferred.shader | 1 + 1 file changed, 1 insertion(+) diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.shader index eb4fdaf2499..375e409e1ce 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Utils/StencilDeferred.shader @@ -418,6 +418,7 @@ Shader "Hidden/Universal Render Pipeline/StencilDeferred" // ------------------------------------- // Universal Pipeline keywords #pragma multi_compile _ _SCREEN_SPACE_OCCLUSION + #pragma multi_compile_fragment _ _RENDER_PASS_ENABLED #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" // ------------------------------------- From f28b8f1c6429d6d189912aa395c5c59548ea13fb Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Fri, 12 Sep 2025 13:16:05 +0000 Subject: [PATCH 11/65] [Port] [6000.3] SwitchActiveTexturesToBackbuffer for URP --- .../Runtime/FrameData/UniversalResourceData.cs | 13 +++++++++++++ .../Runtime/UniversalRendererRenderGraph.cs | 9 +++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalResourceData.cs b/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalResourceData.cs index c0405577739..7c7a6779816 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalResourceData.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/FrameData/UniversalResourceData.cs @@ -36,6 +36,19 @@ public TextureHandle activeColorTexture } } + /// + /// Switch the active color and depth texture to the backbuffer. Once switched, isActiveTargetBackBuffer will return true. + /// The activeColorTexture and activeDepthTexture will then return the backbuffer. This should be called after a render pass + /// that blits/copies the cameraColor to the backbuffer is recorded in the render graph. The following passes will then + /// automatically use the backbuffer as active color and depth. URP will not add the final blit pass if this method is called before + /// that render pass. + /// + public void SwitchActiveTexturesToBackbuffer() + { + activeColorID = UniversalResourceData.ActiveID.BackBuffer; + activeDepthID = UniversalResourceData.ActiveID.BackBuffer; + } + /// /// The active depth target ID. /// diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs index 6c7cfacecb0..adf9b40d5b5 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs @@ -1429,8 +1429,7 @@ private void OnAfterRendering(RenderGraph renderGraph, bool applyPostProcessing) if (isTargetBackbuffer) { - resourceData.activeColorID = UniversalResourceData.ActiveID.BackBuffer; - resourceData.activeDepthID = UniversalResourceData.ActiveID.BackBuffer; + resourceData.SwitchActiveTexturesToBackbuffer(); } } @@ -1459,8 +1458,7 @@ private void OnAfterRendering(RenderGraph renderGraph, bool applyPostProcessing) var source = resourceData.cameraColor; m_PostProcessPassRenderGraph.RenderFinalPassRenderGraph(renderGraph, frameData, in source, in overlayUITexture, in target, needsColorEncoding); - resourceData.activeColorID = UniversalResourceData.ActiveID.BackBuffer; - resourceData.activeDepthID = UniversalResourceData.ActiveID.BackBuffer; + resourceData.SwitchActiveTexturesToBackbuffer(); } bool cameraTargetResolved = @@ -1487,8 +1485,7 @@ private void OnAfterRendering(RenderGraph renderGraph, bool applyPostProcessing) debugHandler?.UpdateShaderGlobalPropertiesForFinalValidationPass(renderGraph, cameraData, !resolveToDebugScreen); m_FinalBlitPass.Render(renderGraph, frameData, cameraData, source, target, overlayUITexture); - resourceData.activeColorID = UniversalResourceData.ActiveID.BackBuffer; - resourceData.activeDepthID = UniversalResourceData.ActiveID.BackBuffer; + resourceData.SwitchActiveTexturesToBackbuffer(); } // TODO RENDERGRAPH: we need to discuss and decide if RenderPassEvent.AfterRendering injected passes should only be called after the last camera in the stack From 8051279fd1eec30b8bf095d7022f610bd7bf5a2c Mon Sep 17 00:00:00 2001 From: Angela Dematte Date: Fri, 12 Sep 2025 13:16:06 +0000 Subject: [PATCH 12/65] Disable unstable tests --- .../Tests/Editor/VFXAdditionalPackageTest.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/VFXAdditionalPackageTest.cs b/Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/VFXAdditionalPackageTest.cs index 085384229b8..a15dea02348 100644 --- a/Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/VFXAdditionalPackageTest.cs +++ b/Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/VFXAdditionalPackageTest.cs @@ -22,6 +22,7 @@ public class VFXAdditionalPackageTest private static string m_CurrentMatch; [UnityTest, Timeout(10 * 60 * 1000)] + [UnityPlatform(exclude = new RuntimePlatform[] { RuntimePlatform.WindowsEditor })] // Unstable: https://jira.unity3d.com/browse/UUM-117433 public IEnumerator Check_Additional_Doesnt_Generate_Any_Errors([ValueSource(nameof(kAdditionalSampleMatches))] string expectedMatch) { m_CurrentMatch = expectedMatch; From 099c2f77829ba847bfd0d323c1039b43abe75b15 Mon Sep 17 00:00:00 2001 From: Thomas Zeng Date: Fri, 12 Sep 2025 19:33:04 +0000 Subject: [PATCH 13/65] [Port] [6000.3] [XR] SRP On-Tile Post Processing Feature --- .../Compiler/NativePassCompiler.cs | 21 +- .../RenderGraph.ExceptionMessages.cs | 3 + .../NativePassCompilerRenderGraphTests.cs | 2 +- .../Tests/Editor/RenderGraphTests.cs | 14 +- .../OnTilePostProcessStripper.cs | 34 ++ .../OnTilePostProcessStripper.cs.meta | 2 + .../OnTilePostProcessFeatureEditor.cs | 53 +++ .../OnTilePostProcessFeatureEditor.cs.meta | 2 + .../SerializedUniversalRenderPipelineAsset.cs | 6 - .../UniversalRenderPipelineAssetUI.Drawers.cs | 3 - .../Data/UniversalRenderPipelineAsset.cs | 13 - .../Runtime/Passes/ColorGradingLutPass.cs | 11 + .../Passes/ScreenSpaceAmbientOcclusionPass.cs | 1 + .../OnTilePostProcessFeature.cs | 157 +++++++ .../OnTilePostProcessFeature.cs.meta | 2 + .../RendererFeatures/OnTilePostProcessPass.cs | 435 ++++++++++++++++++ .../OnTilePostProcessPass.cs.meta | 2 + .../OnTilePostProcessResource.cs | 38 ++ .../OnTilePostProcessResource.cs.meta | 2 + .../RendererFeatures/OnTileUberPost.shader | 340 ++++++++++++++ .../OnTileUberPost.shader.meta | 9 + .../Runtime/UniversalRenderPipeline.cs | 6 +- .../Runtime/UniversalRenderPipelineCore.cs | 7 +- .../UniversalRenderPipelineRenderGraph.cs | 8 +- .../Runtime/UniversalRenderer.cs | 1 + .../Runtime/UniversalRendererRenderGraph.cs | 42 +- 26 files changed, 1167 insertions(+), 47 deletions(-) create mode 100644 Packages/com.unity.render-pipelines.universal/Editor/BuildProcessors/GraphicsSettingsStrippers/OnTilePostProcessStripper.cs create mode 100644 Packages/com.unity.render-pipelines.universal/Editor/BuildProcessors/GraphicsSettingsStrippers/OnTilePostProcessStripper.cs.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/OnTilePostProcessFeatureEditor.cs create mode 100644 Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/OnTilePostProcessFeatureEditor.cs.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessFeature.cs create mode 100644 Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessFeature.cs.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs create mode 100644 Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessResource.cs create mode 100644 Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessResource.cs.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTileUberPost.shader create mode 100644 Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTileUberPost.shader.meta diff --git a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/NativePassCompiler.cs b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/NativePassCompiler.cs index 00fbf914f0b..6ee0ecefcdb 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/NativePassCompiler.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/NativePassCompiler.cs @@ -836,6 +836,10 @@ void DetectMemoryLessResources() { using (new ProfilingScope(ProfilingSampler.Get(NativeCompilerProfileId.NRPRGComp_DetectMemorylessResources))) { + // No need to go further if we don't support memoryless textures + if (!SystemInfo.supportsMemorylessTextures) + return; + // Native renderpasses and create/destroy lists have now been set-up. Detect memoryless resources, i.e resources that are created/destroyed // within the scope of an nrp foreach (ref readonly var nativePass in contextData.NativePasses) @@ -1493,13 +1497,26 @@ internal unsafe void ExecuteBeginRenderPass(InternalRenderGraphContext rgContext if (nativePass.extendedFeatureFlags.HasFlag(ExtendedFeatureFlags.MultisampledShaderResolve)) { + var lastSubpass = nativeSubPassArray[^1]; + + // All input attachments must be memoryless for the shader resolve enabled subpass. + for (int i = 0; i < lastSubpass.inputs.Length; i++) + { + int inputIndex = lastSubpass.inputs[i]; + ref var inputAttachment = ref m_BeginRenderPassAttachments.ElementAt(inputIndex); + if (inputAttachment.storeAction != RenderBufferStoreAction.DontCare) + { + throw new Exception(RenderGraph.RenderGraphExceptionMessages.k_MultisampledShaderResolveInputAttachmentNotMemoryless); + } + } + // The last subpass in a native pass with shader resolve is required to be the subpass that handles the resolve, and this subpass can only have 1 color attachment. - if (nativeSubPassArray[^1].colorOutputs.Length != 1) + if (lastSubpass.colorOutputs.Length != 1) throw new Exception(RenderGraph.RenderGraphExceptionMessages.k_MultisampledShaderResolveInvalidAttachmentSetup); if (SystemInfo.supportsMultisampledShaderResolve) { - int attachmentIndex = nativeSubPassArray[^1].colorOutputs[0]; + int attachmentIndex = lastSubpass.colorOutputs[0]; ref var currBeginAttachment = ref m_BeginRenderPassAttachments.ElementAt(attachmentIndex); currBeginAttachment.resolveTarget = currBeginAttachment.loadStoreTarget; diff --git a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.ExceptionMessages.cs b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.ExceptionMessages.cs index 76643e7a79f..2e8091abfdb 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.ExceptionMessages.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraph.ExceptionMessages.cs @@ -151,6 +151,9 @@ internal static string IncompatibleTextureUVOriginUseTexture(TextureUVOriginSele internal const string k_MultisampledShaderResolveInvalidAttachmentSetup = "Low level rendergraph error: last subpass with shader resolve must have one color attachment."; + internal const string k_MultisampledShaderResolveInputAttachmentNotMemoryless = + "Low level rendergraph error: last subpass with shader resolve must have all input attachments as memoryless attachments."; + internal const string k_InvalidMRTSetup = "Multiple render texture (MRT) setup is invalid. Some indices are not used."; internal const string k_NoDepthBufferMRT = "Setting multiple render textures (MRTs) without a depth buffer is not supported."; diff --git a/Packages/com.unity.render-pipelines.core/Tests/Editor/NativePassCompilerRenderGraphTests.cs b/Packages/com.unity.render-pipelines.core/Tests/Editor/NativePassCompilerRenderGraphTests.cs index a38306941e8..6fb2d3b6ab9 100644 --- a/Packages/com.unity.render-pipelines.core/Tests/Editor/NativePassCompilerRenderGraphTests.cs +++ b/Packages/com.unity.render-pipelines.core/Tests/Editor/NativePassCompilerRenderGraphTests.cs @@ -854,7 +854,7 @@ public void MemorylessWorks() Assert.AreEqual(2, firstUsed.Count); Assert.AreEqual(renderTargets.extraTextures[0].handle.index, firstUsed[1].index); ref var info = ref result.contextData.UnversionedResourceData(firstUsed[1]); - Assert.AreEqual(true, info.memoryLess); + Assert.AreEqual(SystemInfo.supportsMemorylessTextures, info.memoryLess); // Pass 1 : last used = {depthBuffer, extraTextures[0], backBuffer} List lastUsed = new List(); diff --git a/Packages/com.unity.render-pipelines.core/Tests/Editor/RenderGraphTests.cs b/Packages/com.unity.render-pipelines.core/Tests/Editor/RenderGraphTests.cs index 8a1ee07109a..6422e619858 100644 --- a/Packages/com.unity.render-pipelines.core/Tests/Editor/RenderGraphTests.cs +++ b/Packages/com.unity.render-pipelines.core/Tests/Editor/RenderGraphTests.cs @@ -6,6 +6,7 @@ using UnityEngine.TestTools; using Unity.Collections; using UnityEngine.Rendering.RendererUtils; +using System.Text.RegularExpressions; #if UNITY_EDITOR using UnityEditor; @@ -1079,6 +1080,11 @@ public void RenderGraphMultisampledShaderResolvePassWorks() { m_RenderGraphTestPipeline.recordRenderGraphBody = (context, camera, cmd) => { + if (!SystemInfo.supportsMultisampledShaderResolve) + { + return; // Skip the test if the platform does not support multisampled shader resolve + } + var colorTexDesc = new TextureDesc(Vector2.one, false, false) { width = 4, @@ -2023,8 +2029,14 @@ public void CastToRTHandle_WithMemorylessResource() transientColorRTHandle = (RTHandle)data.transientColorOutputHandle; }); + if (!SystemInfo.supportsMemorylessTextures) + { + Assert.IsTrue(createdDepthRTHandle.rt.memorylessMode == RenderTextureMemoryless.None); + Assert.IsTrue(createdColorRTHandle.rt.memorylessMode == RenderTextureMemoryless.None); + Assert.IsTrue(transientColorRTHandle.rt.memorylessMode == RenderTextureMemoryless.None); + } // And let's make sure that the RTHandles are memoryless, i.e. no memory is allocated in system memory - if (msaaSamples != MSAASamples.None) + else if (msaaSamples != MSAASamples.None) { Assert.IsTrue(createdDepthRTHandle.rt.memorylessMode == (RenderTextureMemoryless.Depth | RenderTextureMemoryless.MSAA)); Assert.IsTrue(createdColorRTHandle.rt.memorylessMode == (RenderTextureMemoryless.Color | RenderTextureMemoryless.MSAA)); diff --git a/Packages/com.unity.render-pipelines.universal/Editor/BuildProcessors/GraphicsSettingsStrippers/OnTilePostProcessStripper.cs b/Packages/com.unity.render-pipelines.universal/Editor/BuildProcessors/GraphicsSettingsStrippers/OnTilePostProcessStripper.cs new file mode 100644 index 00000000000..836a4182175 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Editor/BuildProcessors/GraphicsSettingsStrippers/OnTilePostProcessStripper.cs @@ -0,0 +1,34 @@ +using UnityEditor.Rendering.Universal; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +namespace UnityEditor.Rendering +{ + class OnTilePostProcessResourceStripper : IRenderPipelineGraphicsSettingsStripper + { + public bool active => URPBuildData.instance.buildingPlayerForUniversalRenderPipeline; + + public bool CanRemoveSettings(OnTilePostProcessResource resources) + { + if (GraphicsSettings.TryGetRenderPipelineSettings(out var urpShaderStrippingSettings) && !urpShaderStrippingSettings.stripUnusedVariants) + return false; + + foreach (var urpAssetForBuild in URPBuildData.instance.renderPipelineAssets) + { + foreach (var rendererData in urpAssetForBuild.m_RendererDataList) + { + if (rendererData is not UniversalRendererData) + continue; + + foreach (var rendererFeature in rendererData.rendererFeatures) + { + if (rendererFeature is OnTilePostProcessFeature { isActive: true }) + return false; + } + } + } + + return true; + } + } +} diff --git a/Packages/com.unity.render-pipelines.universal/Editor/BuildProcessors/GraphicsSettingsStrippers/OnTilePostProcessStripper.cs.meta b/Packages/com.unity.render-pipelines.universal/Editor/BuildProcessors/GraphicsSettingsStrippers/OnTilePostProcessStripper.cs.meta new file mode 100644 index 00000000000..23d15cc3fe4 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Editor/BuildProcessors/GraphicsSettingsStrippers/OnTilePostProcessStripper.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5e9976b2da5c9bf42b66c3cc55397aae \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/OnTilePostProcessFeatureEditor.cs b/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/OnTilePostProcessFeatureEditor.cs new file mode 100644 index 00000000000..2525894cf73 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/OnTilePostProcessFeatureEditor.cs @@ -0,0 +1,53 @@ +using UnityEngine; +using UnityEngine.Rendering.Universal; +#if XR_MANAGEMENT_4_0_1_OR_NEWER +using UnityEditor.XR.Management; +#endif + +namespace UnityEditor.Rendering.Universal +{ + [CustomEditor(typeof(OnTilePostProcessFeature))] + internal class OnTilePostProcessFeatureEditor : Editor + { + #region Serialized Properties + private SerializedProperty m_UseFallbackProperty; + #endregion + + static class Styles + { + public static readonly string k_NoSettingsHelpBox = L10n.Tr("This feature performs post-processing operation on tiled memory for Android based untethered XR platforms. There are currently no available settings, they might be added later."); + public static readonly string k_NonUntetheredXRBuildTarget = L10n.Tr("On Tile PostProcessing feature is not fully supported on the current build target. Please switch to an untethered XR platform as the build target, and enable XR provider through XR Plug-in management. The render feature would fallback to texture read mode(slow off-tile rendering)"); + } + + private void OnEnable() + { + } + + bool IsBuildTargetUntetheredXR() + { + bool isBuildTargetUntetheredXR = false; +#if XR_MANAGEMENT_4_0_1_OR_NEWER + var buildTargetGroup = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget); + var buildTargetSettings = XRGeneralSettingsPerBuildTarget.XRGeneralSettingsForBuildTarget(buildTargetGroup); + if (buildTargetSettings != null && buildTargetSettings.AssignedSettings != null && buildTargetSettings.AssignedSettings.activeLoaders.Count > 0) + { + isBuildTargetUntetheredXR = buildTargetGroup == BuildTargetGroup.Android; + } +#endif + return isBuildTargetUntetheredXR; + } + + public override void OnInspectorGUI() + { + if (!IsBuildTargetUntetheredXR()) + { + EditorGUILayout.HelpBox( + Styles.k_NonUntetheredXRBuildTarget, + MessageType.Error + ); + } + + EditorGUILayout.HelpBox(Styles.k_NoSettingsHelpBox, MessageType.Info); + } + } +} diff --git a/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/OnTilePostProcessFeatureEditor.cs.meta b/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/OnTilePostProcessFeatureEditor.cs.meta new file mode 100644 index 00000000000..4f3a72b4875 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Editor/RendererFeatures/OnTilePostProcessFeatureEditor.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f5d299eb05d633847b9327742901f749 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs b/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs index ad5163d7bbd..79d38947f35 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/SerializedUniversalRenderPipelineAsset.cs @@ -16,9 +16,6 @@ internal class SerializedUniversalRenderPipelineAsset public SerializedProperty lodCrossFadeDitheringTypeProp { get; } public SerializedProperty storeActionsOptimizationProperty { get; } -#if ENABLE_RENDERTEXTURE_UV_ORIGIN_STRATEGY - public SerializedProperty renderTextureUVOriginStrategyProp { get; } -#endif public SerializedProperty hdr { get; } public SerializedProperty hdrColorBufferPrecisionProp { get; } public SerializedProperty msaa { get; } @@ -183,9 +180,6 @@ public SerializedUniversalRenderPipelineAsset(SerializedObject serializedObject) volumeProfileProp = serializedObject.FindProperty("m_VolumeProfile"); storeActionsOptimizationProperty = serializedObject.FindProperty("m_StoreActionsOptimization"); -#if ENABLE_RENDERTEXTURE_UV_ORIGIN_STRATEGY - renderTextureUVOriginStrategyProp = serializedObject.FindProperty("m_RenderTextureUVOriginStrategy"); -#endif colorGradingMode = serializedObject.FindProperty("m_ColorGradingMode"); colorGradingLutSize = serializedObject.FindProperty("m_ColorGradingLutSize"); diff --git a/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs b/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs index bb29bd57f57..a1b09038ae3 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/UniversalRenderPipelineAsset/UniversalRenderPipelineAssetUI.Drawers.cs @@ -182,9 +182,6 @@ static void DrawRenderingAdditional(SerializedUniversalRenderPipelineAsset seria EditorGUILayout.PropertyField(serialized.supportsDynamicBatching, Styles.dynamicBatching); EditorGUILayout.PropertyField(serialized.debugLevelProp, Styles.debugLevel); EditorGUILayout.PropertyField(serialized.storeActionsOptimizationProperty, Styles.storeActionsOptimizationText); -#if ENABLE_RENDERTEXTURE_UV_ORIGIN_STRATEGY - EditorGUILayout.PropertyField(serialized.renderTextureUVOriginStrategyProp, Styles.renderTextureUVOriginStrategyText); -#endif } static void DrawQuality(SerializedUniversalRenderPipelineAsset serialized, Editor ownerEditor) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs index f1bc1724a14..95087950abe 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Data/UniversalRenderPipelineAsset.cs @@ -580,9 +580,6 @@ public partial class UniversalRenderPipelineAsset : RenderPipelineAsset - /// Returns the intermediate texture uv origin strategy for the current render pipeline. - /// - public RenderTextureUVOriginStrategy renderTextureUVOriginStrategy - { - get => m_RenderTextureUVOriginStrategy; - set => m_RenderTextureUVOriginStrategy = value; - } -#endif /// /// Returns the selected ColorGradingMode in the URP Asset. /// diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ColorGradingLutPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ColorGradingLutPass.cs index e00d3e1face..7222c1041cf 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ColorGradingLutPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ColorGradingLutPass.cs @@ -317,6 +317,17 @@ internal void Render(RenderGraph renderGraph, ContextContainer frameData, out Te } } + /// + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) + { + var resourceData = frameData.Get(); + + TextureHandle colorLut; + Render(renderGraph, frameData, out colorLut); + + resourceData.internalColorLut = colorLut; + } + /// /// Cleans up resources used by the pass. /// diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ScreenSpaceAmbientOcclusionPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ScreenSpaceAmbientOcclusionPass.cs index 4423f63fe99..882e481ebef 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ScreenSpaceAmbientOcclusionPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/Passes/ScreenSpaceAmbientOcclusionPass.cs @@ -344,6 +344,7 @@ private static Vector4 ComputeScaleBias(UniversalCameraData cameraData, RTHandle return new Vector4(viewportScale.x, viewportScale.y, 0, 0); } + /// public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) { UniversalCameraData cameraData = frameData.Get(); diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessFeature.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessFeature.cs new file mode 100644 index 00000000000..b0d080bdf6f --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessFeature.cs @@ -0,0 +1,157 @@ +using System.IO; +using UnityEditor; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; +using UnityEngine.Experimental.Rendering; +using UnityEngine.Rendering.RenderGraphModule; +using UnityEngine.Rendering.Universal.Internal; + +/// +/// The class for the On-Tile Post Processing renderer feature. This renderer feature provides a reduced scope alternative to the built-in URP post-processing features but that can run more optimally on tile-based graphics hardware (most untethered-XR devices) +/// The renderer feature could only be added once. Adding multiple post processing passes is currently not supported. +/// +[DisallowMultipleRendererFeature("On Tile Post Processing (Untethered XR)")] +public partial class OnTilePostProcessFeature : ScriptableRendererFeature +{ + [SerializeField, HideInInspector] + PostProcessData m_PostProcessData; + + Shader m_UberPostShader; + + /// + /// Specifies at which injection point the pass will be rendered. + /// + RenderPassEvent postProcessingEvent = RenderPassEvent.AfterRenderingPostProcessing-1; + + Material m_OnTilePostProcessMaterial; + ColorGradingLutPass m_ColorGradingLutPass; + OnTilePostProcessPass m_OnTilePostProcessPass; + + bool TryLoadResources() + { + if (m_UberPostShader == null || m_OnTilePostProcessMaterial == null) + { + if (!GraphicsSettings.TryGetRenderPipelineSettings(out var resources)) + { + Debug.LogErrorFormat( + $"Couldn't find the required resources for the {nameof(OnTilePostProcessFeature)} render feature."); + return false; + } + + m_UberPostShader = resources.uberPostShader; + m_OnTilePostProcessMaterial = new Material(m_UberPostShader); + } + + return true; + } + + /// + public override void Create() + { + if (m_PostProcessData == null) + { +#if UNITY_EDITOR + m_PostProcessData = PostProcessData.GetDefaultPostProcessData(); +#endif + } + + if (m_PostProcessData != null) + { + m_ColorGradingLutPass = new ColorGradingLutPass(RenderPassEvent.BeforeRenderingPrePasses, m_PostProcessData); + m_OnTilePostProcessPass = new OnTilePostProcessPass(m_PostProcessData); + // On-tile PP requries memoryless intermediate texture to work. In case intermediate texture is not memoryless, on-tile PP will falls back to offtile rendering. + m_OnTilePostProcessPass.requiresIntermediateTexture = true; + } + + if (!TryLoadResources()) + return; + } + +#if ENABLE_VR && ENABLE_XR_MODULE + bool IsRuntimePlatformUntetheredXR() + { + // Return true if the current runtime platform is Android(untethered XR platform) + return Application.platform == RuntimePlatform.Android; + } + +#if UNITY_EDITOR + bool IsBuildTargetUntetheredXR() + { + // Return true if the current build target is Android(untethered XR platform). + return EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android; + } +#endif +#endif + + /// + public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) + { + bool useFallback = true; + +#if ENABLE_VR && ENABLE_XR_MODULE + // Enable on-tile post processing when running untethered XR + if (renderingData.cameraData.xr.enabled && IsRuntimePlatformUntetheredXR()) + { + useFallback = false; + } + +#if UNITY_EDITOR + // Enable on-tile post processing when running XR Editor Playmode (build target needs to be Android) + if (renderingData.cameraData.xr.enabled && IsBuildTargetUntetheredXR()) + { + useFallback = false; + } +#endif +#endif + + // Post processing needs to be enabled on the camera + if (!renderingData.cameraData.postProcessEnabled) + return; + + // NOTE: Ideally, we check here if the Post Processing is enabled on the UniversalRenderer asset through a public API. In that case, the built in post processing will be enabled. + // We currently do not have a public API for that, so we use internal API for now + var universalRenderer = renderer as UniversalRenderer; + if (universalRenderer.isPostProcessPassRenderGraphActive) + { + Debug.LogError("URP renderer(Universal Renderer Data) has post processing enabled, which conflicts with the On-Tile post processing feature. Only one of the post processing should be enabled. On-Tile post processing feature will not be added."); + return; + } + + if (m_ColorGradingLutPass == null || m_OnTilePostProcessPass == null) + return; + + var graphicsDeviceType = SystemInfo.graphicsDeviceType; + var deviceSupportsFbf = graphicsDeviceType == GraphicsDeviceType.Vulkan || graphicsDeviceType == GraphicsDeviceType.Metal || graphicsDeviceType == GraphicsDeviceType.Direct3D12; + if (!deviceSupportsFbf) + { + Debug.LogError("The On-Tile post processing feature is not supported on the graphics devices that don't support frame buffer fetch."); + return; + } + + // Internally force the correct mode we require while this is not a public setting. + UniversalRenderPipeline.renderTextureUVOriginStrategy = RenderTextureUVOriginStrategy.PropagateAttachmentOrientation; + + m_ColorGradingLutPass.renderPassEvent = RenderPassEvent.BeforeRenderingPrePasses; + + m_OnTilePostProcessPass.Setup(ref m_OnTilePostProcessMaterial); + m_OnTilePostProcessPass.renderPassEvent = postProcessingEvent; + + if (useFallback) + { + // Perform fallback logic to 1. use texture read(off-tile rendering) and 2. disable the UV origin propagation mode. + m_OnTilePostProcessPass.m_UseTextureReadFallback = true; + UniversalRenderPipeline.renderTextureUVOriginStrategy = RenderTextureUVOriginStrategy.BottomLeft; + } + + renderer.EnqueuePass(m_ColorGradingLutPass); + renderer.EnqueuePass(m_OnTilePostProcessPass); + } + + /// + protected override void Dispose(bool disposing) + { + // always dispose unmanaged resources + m_ColorGradingLutPass?.Cleanup(); + } +} diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessFeature.cs.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessFeature.cs.meta new file mode 100644 index 00000000000..2c6c6500ad8 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessFeature.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e2fb6109d22997344ab15423c6b63b45 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs new file mode 100644 index 00000000000..2085e5d12b3 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs @@ -0,0 +1,435 @@ +using UnityEngine; +using UnityEngine.Rendering.RenderGraphModule; +using UnityEngine.Rendering.RenderGraphModule.Util; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; +using UnityEngine.Experimental.Rendering; +using UnityEngine.Rendering.Universal.Internal; + +/// +/// Renders the on-tile post-processing stack. +/// +public class OnTilePostProcessPass : ScriptableRenderPass +{ + /// + /// The override shader to use. + /// + internal bool m_UseMultisampleShaderResolve = false; + internal bool m_UseTextureReadFallback = false; + + RTHandle m_UserLut; + Material m_OnTileUberMaterial; + static readonly int s_BlitScaleBias = Shader.PropertyToID("_BlitScaleBias"); + static readonly int s_BlitTexture = Shader.PropertyToID("_BlitTexture"); + int m_DitheringTextureIndex; + PostProcessData m_PostProcessData; + + const string m_PassName = "On Tile Post Processing"; + const string m_FallbackPassName = "On Tile Post Processing (sampling fallback) "; + + internal OnTilePostProcessPass(PostProcessData postProcessData) + { + m_PostProcessData = postProcessData; +#if ENABLE_VR && ENABLE_XR_MODULE + m_UseMultisampleShaderResolve = SystemInfo.supportsMultisampledShaderResolve; +#endif + } + + internal void Setup(ref Material onTileUberMaterial) + { + m_OnTileUberMaterial = onTileUberMaterial; + } + + /// + /// Disposes used resources. + /// + public void Dispose() + { + m_UserLut?.Release(); + CoreUtils.Destroy(m_OnTileUberMaterial); + } + + /// + public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer frameData) + { + if (m_OnTileUberMaterial == null) return; + + var resourceData = frameData.Get(); + var renderingData = frameData.Get(); + var cameraData = frameData.Get(); + var postProcessingData = frameData.Get(); + + if (SystemInfo.graphicsShaderLevel < 30) + { + Debug.LogError("DrawProcedural is required for the On-Tile post processing feature but it is not supported by the platform. Pass will not execute."); + return; + } + + int lutSize = postProcessingData.lutSize; + + var stack = VolumeManager.instance.stack; + var vignette = stack.GetComponent(); + var colorLookup = stack.GetComponent(); + var colorAdjustments = stack.GetComponent(); + var tonemapping = stack.GetComponent(); + var filmgrain = stack.GetComponent(); + +#if ENABLE_VR && ENABLE_XR_MODULE + bool useVisibilityMesh = cameraData.xr.enabled && cameraData.xr.hasValidVisibleMesh; +#else + const bool useVisibilityMesh = false; +#endif + + TextureHandle source = resourceData.activeColorTexture; + TextureDesc srcDesc = renderGraph.GetTextureDesc(source); ; + + TextureHandle destination = resourceData.backBufferColor; + + SetupVignette(m_OnTileUberMaterial, cameraData.xr, srcDesc.width, srcDesc.height, vignette); + SetupLut(m_OnTileUberMaterial, colorLookup, colorAdjustments, lutSize); + SetupTonemapping(m_OnTileUberMaterial, tonemapping); + SetupGrain(m_OnTileUberMaterial, cameraData, filmgrain, m_PostProcessData); + SetupDithering(m_OnTileUberMaterial, cameraData, m_PostProcessData); + + CoreUtils.SetKeyword(m_OnTileUberMaterial, ShaderKeywordStrings._ENABLE_ALPHA_OUTPUT, cameraData.isAlphaOutputEnabled); + + UberShaderPasses shaderPass = useVisibilityMesh ? UberShaderPasses.NormalVisMesh : UberShaderPasses.Normal; +#if ENABLE_VR && ENABLE_XR_MODULE + bool setMultisamplesShaderResolveFeatureFlag = false; +#endif + if (srcDesc.msaaSamples != MSAASamples.None) + { + if (srcDesc.msaaSamples == MSAASamples.MSAA8x) + { + Debug.LogError("MSAA8x is enabled in Universal Render Pipeline Asset but it is not supported by the on-tile post-processing feature yet. Please use MSAA4x or MSAA2x instead."); + return; + } + + var destInfo = renderGraph.GetRenderTargetInfo(destination); + +#if ENABLE_VR && ENABLE_XR_MODULE + if (m_UseMultisampleShaderResolve) + { + // If we have support for msaa shader resolve we can do MSAA -> non MSAA in our render pass. + shaderPass = useVisibilityMesh ? UberShaderPasses.MSAASoftwareResolveVisMesh : UberShaderPasses.MSAASoftwareResolve; + + // When rendering into the backbuffer, we could enable the shader resolve extension to resolve into the msaa1x surface directly on platforms that support auto resolve. + // For platforms that don't support auto resolve, the backbuffer is a multisampled surface and we don't need to enable the extension. This is to maximize the pass merging because shader resolve enabled pass has to be the last subpass. + if (SystemInfo.supportsMultisampleAutoResolve) + { + + setMultisamplesShaderResolveFeatureFlag = true; + } + } + else +#endif + { + if (destInfo.msaaSamples == (int)srcDesc.msaaSamples) + { + // If we have MSAA -> MSAA we can still resolve in the shader running at fragmnet rate + // and the hardware resolve will sometimes be optimized as a result. + shaderPass = useVisibilityMesh ? UberShaderPasses.MSAASoftwareResolveVisMesh : UberShaderPasses.MSAASoftwareResolve; + } + else + { + // We are going MSAA -> Non MSAA without shader resolve support which is not a valid render pass + // configuration. So we need to force a resolve before running our shader which will cause us not + // to be on tile anymore. + shaderPass = useVisibilityMesh ? UberShaderPasses.TextureReadVisMesh : UberShaderPasses.TextureRead; + } + } + } + + // Fallback to texture read mode when requested. + if (m_UseTextureReadFallback) + { + shaderPass = useVisibilityMesh ? UberShaderPasses.TextureReadVisMesh : UberShaderPasses.TextureRead; +#if ENABLE_VR && ENABLE_XR_MODULE + setMultisamplesShaderResolveFeatureFlag = false; +#endif + } + + // Fallback logic to handle the case where Frame Buffer Fetch is not compatible with the pass setup. + TextureDesc destDesc; + var info = renderGraph.GetRenderTargetInfo(destination); + destDesc = new TextureDesc(info.width, info.height); + destDesc.format = info.format; + destDesc.msaaSamples = (MSAASamples)info.msaaSamples; + destDesc.bindTextureMS = info.bindMS; + destDesc.slices = info.volumeDepth; + destDesc.dimension = info.volumeDepth > 1 ? TextureDimension.Tex2DArray : TextureDimension.Tex2D; + + // Falls back to texture read mode if texture dimension does not match between source and destination (invalid frame buffer fetch setup). + if (srcDesc.width != destDesc.width || srcDesc.height != destDesc.height || srcDesc.slices != destDesc.slices) + { + shaderPass = useVisibilityMesh ? UberShaderPasses.TextureReadVisMesh : UberShaderPasses.TextureRead; +#if ENABLE_VR && ENABLE_XR_MODULE + setMultisamplesShaderResolveFeatureFlag = false; +#endif + } + + var lutTexture = resourceData.internalColorLut; + var passName = m_UseTextureReadFallback ? m_FallbackPassName : m_PassName; + using (var builder = renderGraph.AddRasterRenderPass(passName, out var passData)) + { + passData.source = source; + passData.destination = destination; + passData.material = m_OnTileUberMaterial; + passData.shaderPass = shaderPass; + + if (shaderPass == UberShaderPasses.TextureRead || shaderPass == UberShaderPasses.TextureReadVisMesh) + { + builder.UseTexture(source, AccessFlags.Read); + } + else + { + builder.SetInputAttachment(source, 0, AccessFlags.Read); + // MSAA shader resolve keywords require global state modification + builder.AllowGlobalStateModification(true); + } + + builder.UseTexture(lutTexture, AccessFlags.Read); + passData.lutTexture = lutTexture; + + var userLutTexture = TryGetCachedUserLutTextureHandle(colorLookup, renderGraph); + passData.userLutTexture = userLutTexture; + if (userLutTexture.IsValid()) + { + builder.UseTexture(userLutTexture, AccessFlags.Read); + } + + builder.SetRenderAttachment(destination, 0, AccessFlags.WriteAll); + builder.SetRenderFunc((PassData data, RasterGraphContext context) => ExecuteFBFetchPass(data, context)); + + passData.useXRVisibilityMesh = false; + passData.msaaSamples = (int)srcDesc.msaaSamples; + +#if ENABLE_VR && ENABLE_XR_MODULE + if (cameraData.xr.enabled) + { + ExtendedFeatureFlags xrFeatureFlag = ExtendedFeatureFlags.MultiviewRenderRegionsCompatible; + if (setMultisamplesShaderResolveFeatureFlag) + { + xrFeatureFlag |= ExtendedFeatureFlags.MultisampledShaderResolve; + } + builder.SetExtendedFeatureFlags(xrFeatureFlag); + + // We want our foveation logic to match other geometry passes(eg. Opaque, Transparent, Skybox) because we want to merge with previous passes. + bool passSupportsFoveation = cameraData.xrUniversal.canFoveateIntermediatePasses || resourceData.isActiveTargetBackBuffer; + builder.EnableFoveatedRasterization( + cameraData.xr.supportsFoveatedRendering && passSupportsFoveation); + + passData.useXRVisibilityMesh = useVisibilityMesh; + passData.xr = cameraData.xr; // Need to pass this down for the method call RenderVisibleMeshCustomMaterial() + } +#endif + } + + //This will prevent the final blit pass from being added/needed (still internal API in trunk) + resourceData.activeColorID = UniversalResourceData.ActiveID.BackBuffer; + resourceData.activeDepthID = UniversalResourceData.ActiveID.BackBuffer; + } + + enum UberShaderPasses + { + Normal, + MSAASoftwareResolve, + TextureRead, + NormalVisMesh, + MSAASoftwareResolveVisMesh, + TextureReadVisMesh, + }; + + // This static method is used to execute the pass and passed as the RenderFunc delegate to the RenderGraph render pass + static void ExecuteFBFetchPass(PassData data, RasterGraphContext context) + { + var cmd = context.cmd; + + data.material.SetTexture(ShaderConstants._InternalLut, data.lutTexture); + if (data.userLutTexture.IsValid()) + data.material.SetTexture(ShaderConstants._UserLut, data.userLutTexture); + + bool IsHandleYFlipped = RenderingUtils.IsHandleYFlipped(context, in data.destination); + // We need to set the "_BlitScaleBias" uniform for user materials with shaders relying on core Blit.hlsl to work + data.material.SetVector(s_BlitScaleBias, !IsHandleYFlipped ? new Vector4(1, -1, 0, 1) : new Vector4(1, 1, 0, 0)); + + if (data.shaderPass == UberShaderPasses.TextureRead || data.shaderPass == UberShaderPasses.TextureReadVisMesh) + { + data.material.SetTexture(s_BlitTexture, data.source); + } + else if (data.shaderPass == UberShaderPasses.MSAASoftwareResolve || data.shaderPass == UberShaderPasses.MSAASoftwareResolveVisMesh) + { + // Setup MSAA samples + switch (data.msaaSamples) + { + case 4: + CoreUtils.SetKeyword(data.material, ShaderKeywordStrings.Msaa2, false); + CoreUtils.SetKeyword(data.material, ShaderKeywordStrings.Msaa4, true); + break; + + case 2: + CoreUtils.SetKeyword(data.material, ShaderKeywordStrings.Msaa2, true); + CoreUtils.SetKeyword(data.material, ShaderKeywordStrings.Msaa4, false); + break; + + // MSAA disabled, auto resolve supported, resolve texture requested, or ms textures not supported + default: + CoreUtils.SetKeyword(data.material, ShaderKeywordStrings.Msaa2, false); + CoreUtils.SetKeyword(data.material, ShaderKeywordStrings.Msaa4, false); + break; + } + } + +#if ENABLE_VR && ENABLE_XR_MODULE + if (data.useXRVisibilityMesh) + { + MaterialPropertyBlock xrPropertyBlock = XRSystemUniversal.GetMaterialPropertyBlock(); + data.xr.RenderVisibleMeshCustomMaterial(cmd, data.xr.occlusionMeshScale, data.material, xrPropertyBlock, (int)(data.shaderPass), false); + } + else +#endif + { + cmd.DrawProcedural(Matrix4x4.identity, data.material, (int)(data.shaderPass), + MeshTopology.Triangles, 3, 1); + } + } + + private class PassData + { + internal TextureHandle source; + internal TextureHandle destination; + internal TextureHandle lutTexture; + internal TextureHandle userLutTexture; + internal Material material; + internal UberShaderPasses shaderPass; + internal Vector4 scaleBias; + internal bool useXRVisibilityMesh; + internal XRPass xr; + internal int msaaSamples; + } + + TextureHandle TryGetCachedUserLutTextureHandle(ColorLookup colorLookup, RenderGraph renderGraph) + { + if (colorLookup.texture.value == null) + { + if (m_UserLut != null) + { + m_UserLut.Release(); + m_UserLut = null; + } + } + else + { + if (m_UserLut == null || m_UserLut.externalTexture != colorLookup.texture.value) + { + m_UserLut?.Release(); + m_UserLut = RTHandles.Alloc(colorLookup.texture.value); + } + } + return m_UserLut != null ? renderGraph.ImportTexture(m_UserLut) : TextureHandle.nullHandle; + } + + void SetupLut(Material material, ColorLookup colorLookup, ColorAdjustments colorAdjustments, int lutSize) + { + int lutHeight = lutSize; + int lutWidth = lutHeight * lutHeight; + + float postExposureLinear = Mathf.Pow(2f, colorAdjustments.postExposure.value); + Vector4 lutParams = new Vector4(1f / lutWidth, 1f / lutHeight, lutHeight - 1f, postExposureLinear); + + Vector4 userLutParams = !colorLookup.IsActive() + ? Vector4.zero + : new Vector4(1f / colorLookup.texture.value.width, + 1f / colorLookup.texture.value.height, + colorLookup.texture.value.height - 1f, + colorLookup.contribution.value); + + material.SetVector(ShaderConstants._Lut_Params, lutParams); + material.SetVector(ShaderConstants._UserLut_Params, userLutParams); + } + +#region Vignette + + + //these methods should be publicly available for user features + void SetupVignette(Material material, XRPass xrPass, int width, int height, Vignette vignette) + { + var color = vignette.color.value; + var center = vignette.center.value; + var aspectRatio = width / (float)height; + +#if ENABLE_VR + if (xrPass != null && xrPass.enabled) + { + if (xrPass.singlePassEnabled) + material.SetVector(ShaderConstants._Vignette_ParamsXR, xrPass.ApplyXRViewCenterOffset(center)); + else + // In multi-pass mode we need to modify the eye center with the values from .xy of the corrected + // center since the version of the shader that is not single-pass will use the value in _Vignette_Params2 + center = xrPass.ApplyXRViewCenterOffset(center); + } +#endif + + var v1 = new Vector4( + color.r, color.g, color.b, + vignette.rounded.value ? aspectRatio : 1f + ); + var v2 = new Vector4( + center.x, center.y, + vignette.intensity.value * 3f, + vignette.smoothness.value * 5f + ); + + material.SetVector(ShaderConstants._Vignette_Params1, v1); + material.SetVector(ShaderConstants._Vignette_Params2, v2); + } + +#endregion + + private void SetupTonemapping(Material onTileUberMaterial, Tonemapping tonemapping) + { + CoreUtils.SetKeyword(m_OnTileUberMaterial, ShaderKeywordStrings.TonemapNeutral, + tonemapping.mode.value == TonemappingMode.Neutral); + CoreUtils.SetKeyword(m_OnTileUberMaterial, ShaderKeywordStrings.TonemapACES, + tonemapping.mode.value == TonemappingMode.ACES); + } + + void SetupGrain(Material onTileUberMaterial, UniversalCameraData cameraData, FilmGrain filmgrain, PostProcessData data) + { + if (filmgrain.IsActive()) + { + onTileUberMaterial.EnableKeyword(ShaderKeywordStrings.FilmGrain); + PostProcessUtils.ConfigureFilmGrain( + data, + filmgrain, + cameraData.pixelWidth, cameraData.pixelHeight, + onTileUberMaterial + ); + } + } + + void SetupDithering(Material onTileUberMaterial, UniversalCameraData cameraData, PostProcessData data) + { + if (cameraData.isDitheringEnabled) + { + onTileUberMaterial.EnableKeyword(ShaderKeywordStrings.Dithering); + m_DitheringTextureIndex = PostProcessUtils.ConfigureDithering( + data, + m_DitheringTextureIndex, + cameraData.pixelWidth, cameraData.pixelHeight, + onTileUberMaterial + ); + } + } + + static class ShaderConstants + { + public static readonly int _Vignette_Params1 = Shader.PropertyToID("_Vignette_Params1"); + public static readonly int _Vignette_Params2 = Shader.PropertyToID("_Vignette_Params2"); + public static readonly int _Vignette_ParamsXR = Shader.PropertyToID("_Vignette_ParamsXR"); + public static readonly int _Lut_Params = Shader.PropertyToID("_Lut_Params"); + public static readonly int _UserLut_Params = Shader.PropertyToID("_UserLut_Params"); + public static readonly int _InternalLut = Shader.PropertyToID("_InternalLut"); + public static readonly int _UserLut = Shader.PropertyToID("_UserLut"); + } +} diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs.meta new file mode 100644 index 00000000000..3d00c5267f0 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 7dc44b545f155e041b63be63e81832e3 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessResource.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessResource.cs new file mode 100644 index 00000000000..54f2c70b983 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessResource.cs @@ -0,0 +1,38 @@ +using System; +using UnityEngine; + +namespace UnityEngine.Rendering.Universal +{ + /// + /// Class containing shader resources used for On-Tile Post Processing Feature. + /// + [Serializable] + [SupportedOnRenderPipeline(typeof(UniversalRenderPipelineAsset))] + [Categorization.CategoryInfo(Name = "R: On Tile Post Process Resources", Order = 1000), HideInInspector] + class OnTilePostProcessResource : IRenderPipelineResources + { + [SerializeField, HideInInspector] + int m_Version = 0; + + /// Current version of the resource container. Used only for upgrading a project. + public int version => m_Version; + + /// + /// Indicates whether the resource is available in a player build. + /// + bool IRenderPipelineGraphicsSettings.isAvailableInPlayerBuild => true; + + [SerializeField] + [ResourcePath("Runtime/RendererFeatures/OnTileUberPost.shader")] + Shader m_UberPostShader; + + /// + /// Shader resources used for On Tile Post Processing. + /// + public Shader uberPostShader + { + get => m_UberPostShader; + set => this.SetValueAndNotify(ref m_UberPostShader, value, nameof(m_UberPostShader)); + } + } +} diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessResource.cs.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessResource.cs.meta new file mode 100644 index 00000000000..f8286167f88 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessResource.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 24921b8147a072847b68efb524c025e3 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTileUberPost.shader b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTileUberPost.shader new file mode 100644 index 00000000000..c26184b25ab --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTileUberPost.shader @@ -0,0 +1,340 @@ +Shader "OnTileUberPost" +{ + HLSLINCLUDE + #pragma multi_compile_local_fragment _ _HDR_GRADING _TONEMAP_ACES _TONEMAP_NEUTRAL + #pragma multi_compile_local_fragment _ _FILM_GRAIN + #pragma multi_compile_local_fragment _ _DITHERING + #pragma multi_compile_local_fragment _ _ENABLE_ALPHA_OUTPUT + #include_with_pragmas "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRenderingKeywords.hlsl" + + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Filtering.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/ScreenCoordOverride.hlsl" + + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.universal/Shaders/PostProcessing/Common.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/DebuggingFullscreen.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/DynamicScalingClamping.hlsl" + #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/FoveatedRendering.hlsl" + + TEXTURE2D(_InternalLut); + TEXTURE2D(_UserLut); + + TEXTURE2D(_BlueNoise_Texture); + TEXTURE2D(_Grain_Texture); + + float4 _Lut_Params; + float4 _UserLut_Params; + + half4 _Vignette_Params1; + float4 _Vignette_Params2; +#ifdef USING_STEREO_MATRICES + float4 _Vignette_ParamsXR; +#endif + float2 _Grain_Params; + float4 _Grain_TilingParams; + float4 _Dithering_Params; + float4 _HDROutputLuminanceParams; + + #define VignetteColor _Vignette_Params1.xyz + #ifdef USING_STEREO_MATRICES + #define VignetteCenterEye0 _Vignette_ParamsXR.xy + #define VignetteCenterEye1 _Vignette_ParamsXR.zw + #else + #define VignetteCenter _Vignette_Params2.xy + #endif + #define VignetteIntensity _Vignette_Params2.z + #define VignetteSmoothness _Vignette_Params2.w + #define VignetteRoundness _Vignette_Params1.w + + #define LutParams _Lut_Params.xyz + #define PostExposure _Lut_Params.w + #define UserLutParams _UserLut_Params.xyz + #define UserLutContribution _UserLut_Params.w + + #define GrainIntensity _Grain_Params.x + #define GrainResponse _Grain_Params.y + #define GrainScale _Grain_TilingParams.xy + #define GrainOffset _Grain_TilingParams.zw + + #define DitheringScale _Dithering_Params.xy + #define DitheringOffset _Dithering_Params.zw + + #define AlphaScale 1.0 + #define AlphaBias 0.0 + + #define MinNits _HDROutputLuminanceParams.x + #define MaxNits _HDROutputLuminanceParams.y + #define PaperWhite _HDROutputLuminanceParams.z + #define OneOverPaperWhite _HDROutputLuminanceParams.w + + half4 UberPost(half4 inputColor, float2 uv) + { + half3 color = inputColor.rgb; + + // To save on variants we use an uniform branch for vignette. This may have performance impact on lower end platforms + UNITY_BRANCH + if (VignetteIntensity > 0) + { + #ifdef USING_STEREO_MATRICES + // With XR, the views can use asymmetric FOV which will have the center of each + // view be at a different location. + const float2 VignetteCenter = unity_StereoEyeIndex == 0 ? VignetteCenterEye0 : VignetteCenterEye1; + #endif + + color = ApplyVignette(color, uv, VignetteCenter, VignetteIntensity, VignetteRoundness, VignetteSmoothness, VignetteColor); + } + + // Color grading is always enabled when post-processing/uber is active + { + color = ApplyColorGrading(color, PostExposure, TEXTURE2D_ARGS(_InternalLut, sampler_LinearClamp), LutParams, TEXTURE2D_ARGS(_UserLut, sampler_LinearClamp), UserLutParams, UserLutContribution, PaperWhite, OneOverPaperWhite); + } + + #if _FILM_GRAIN + { + color = ApplyGrain(color, uv, TEXTURE2D_ARGS(_Grain_Texture, sampler_LinearRepeat), GrainIntensity, GrainResponse, GrainScale, GrainOffset, OneOverPaperWhite); + } + #endif + + #if _DITHERING + { + color = ApplyDithering(color, uv, TEXTURE2D_ARGS(_BlueNoise_Texture, sampler_PointRepeat), DitheringScale, DitheringOffset, PaperWhite, OneOverPaperWhite); + } + #endif + +#if _ENABLE_ALPHA_OUTPUT + // Saturate is necessary to avoid issues when additive blending pushes the alpha over 1. + return half4(color, saturate(inputColor.a)); +#else + return half4(color, 1); +#endif + } + ENDHLSL + + SubShader + { + Tags { "RenderType" = "Opaque" "RenderPipeline" = "UniversalPipeline"} + + Pass + { + Name "OnTileUberPost" + LOD 100 + ZTest Always ZWrite Off Cull Off + + HLSLPROGRAM + #pragma vertex Vert + #pragma fragment FragUberPost + + // Declares the framebuffer input as a texture 2d containing half. + FRAMEBUFFER_INPUT_X_HALF(0); + + half4 FragUberPost(Varyings input) : SV_Target + { + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + float2 uv = input.texcoord; + + // NOTE: Hlsl specifies missing input.a to fill 1 (0 for .rgb). + // InputColor is a "bottom" layer for alpha output. + half4 inputColor = LOAD_FRAMEBUFFER_X_INPUT(0, input.positionCS.xy); + return UberPost(inputColor, uv); + } + ENDHLSL + } + + Pass + { + Name "OnTileUberPostMSSoftware" + LOD 100 + ZTest Always ZWrite Off Cull Off + + HLSLPROGRAM + #pragma vertex Vert + #pragma fragment FragUberPostMSSoftware + #pragma target 5.0 + + #pragma multi_compile _ _MSAA_2 _MSAA_4 + #if defined(_MSAA_2) + #define MSAA_SAMPLES 2 + #elif defined(_MSAA_4) + #define MSAA_SAMPLES 4 + #else + #define MSAA_SAMPLES 1 + #endif + + // Declares the framebuffer input as a texture 2d containing half. + FRAMEBUFFER_INPUT_X_HALF_MS(0); + + half4 MSAAShaderResolveInputAttachment0(float2 pos, const int msaaSamples) + { + half4 inputColor = half4(0.0, 0.0, 0.0, 0.0); + + UNITY_UNROLL + for (int i = 0; i < msaaSamples; ++i) { + half4 col = LOAD_FRAMEBUFFER_INPUT_X_MS(0, i, pos); + inputColor = inputColor + col; + } + return inputColor / msaaSamples; + } + + // Run run at fragment frequency and perform a software resolve of the MSAA + // color samples and then run the post-process shader the average result. Faster but not as correct + // as running it per-sample. The resultant output can either be written to a non MSAA surface as it has + // been resolved or to a MSAA surface where all the samples will end up the same which some hardware + // resolve operations will optimize due to detecting no difference in a fragment. + half4 FragUberPostMSSoftware(Varyings input) : SV_Target0 + { + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + float2 uv = input.texcoord; + + // NOTE: Hlsl specifies missing input.a to fill 1 (0 for .rgb). + // InputColor is a "bottom" layer for alpha output. + half4 inputColor = MSAAShaderResolveInputAttachment0(input.positionCS.xy, MSAA_SAMPLES); + return UberPost(inputColor, uv); + } + ENDHLSL + } + + Pass + { + Name "OnTileUberPostTextureReadVersion" + LOD 100 + ZTest Always ZWrite Off Cull Off + + HLSLPROGRAM + #pragma vertex Vert + #pragma fragment FragUberPostTextureReadVersion + #pragma target 5.0 + #pragma enable_d3d11_debug_symbols + #pragma debug + + // Fallback shader to use when we can't keep things on tile, so usually in the editor when dealing with + // MSAA source targets to a non MSAA destination we can't perform a software resolve in the shader and + // so have to fall back to resolving the color target and reading it in as a texture. + // Where we have a MSAA destination we can avoid this. + half4 FragUberPostTextureReadVersion(Varyings input) : SV_Target0 + { + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + float2 uv = SCREEN_COORD_APPLY_SCALEBIAS(UnityStereoTransformScreenSpaceTex(input.texcoord)); + half4 inputColor = SAMPLE_TEXTURE2D_X(_BlitTexture, sampler_LinearClamp, uv); + return UberPost(inputColor, uv); + } + ENDHLSL + } + + // Visibility Mesh Versions ------------------------------------------------------------------------------------ + Pass + { + Name "OnTileUberPostVisMesh" + LOD 100 + ZTest Always ZWrite Off Cull Off + + HLSLPROGRAM + #include "Packages/com.unity.render-pipelines.universal/Shaders/XR/XRVisibilityMeshHelper.hlsl" + #pragma vertex VertVisibilityMeshXR + #pragma fragment FragUberPost + + // Declares the framebuffer input as a texture 2d containing half. + FRAMEBUFFER_INPUT_X_HALF(0); + + half4 FragUberPost(Varyings input) : SV_Target + { + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + float2 uv = input.texcoord; + + // NOTE: Hlsl specifies missing input.a to fill 1 (0 for .rgb). + // InputColor is a "bottom" layer for alpha output. + half4 inputColor = LOAD_FRAMEBUFFER_X_INPUT(0, input.positionCS.xy); + return UberPost(inputColor, uv); + } + ENDHLSL + } + + Pass + { + Name "OnTileUberPostMSSoftwareVisMesh" + LOD 100 + ZTest Always ZWrite Off Cull Off + + HLSLPROGRAM + #include "Packages/com.unity.render-pipelines.universal/Shaders/XR/XRVisibilityMeshHelper.hlsl" + #pragma vertex VertVisibilityMeshXR + #pragma fragment FragUberPostMSSoftware + #pragma target 5.0 + + #pragma multi_compile _ _MSAA_2 _MSAA_4 + #if defined(_MSAA_2) + #define MSAA_SAMPLES 2 + #elif defined(_MSAA_4) + #define MSAA_SAMPLES 4 + #else + #define MSAA_SAMPLES 1 + #endif + + // Declares the framebuffer input as a texture 2d containing half. + FRAMEBUFFER_INPUT_X_HALF_MS(0); + + half4 MSAAShaderResolveInputAttachment0(float2 pos, const int msaaSamples) + { + half4 inputColor = half4(0.0, 0.0, 0.0, 0.0); + + UNITY_UNROLL + for (int i = 0; i < msaaSamples; ++i) { + half4 col = LOAD_FRAMEBUFFER_INPUT_X_MS(0, i, pos); + inputColor = inputColor + col; + } + return inputColor / msaaSamples; + } + + // Run at fragment frequency and perform a software resolve of the MSAA + // color samples and then run the post-process shader the average result. Faster but not as correct + // as running it per-sample. The resultant output can either be written to a non MSAA surface as it has + // been resolved or to a MSAA surface where all the samples will end up the same which some hardware + // resolve operations will optimize due to detecting no difference in a fragment. + half4 FragUberPostMSSoftware(Varyings input) : SV_Target0 + { + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + float2 uv = input.texcoord; + + // NOTE: Hlsl specifies missing input.a to fill 1 (0 for .rgb). + // InputColor is a "bottom" layer for alpha output. + half4 inputColor = MSAAShaderResolveInputAttachment0(input.positionCS.xy, MSAA_SAMPLES); + return UberPost(inputColor, uv); + } + ENDHLSL + } + + Pass + { + Name "OnTileUberPostTextureReadVersionVisMesh" + LOD 100 + ZTest Always ZWrite Off Cull Off + + HLSLPROGRAM + #include "Packages/com.unity.render-pipelines.universal/Shaders/XR/XRVisibilityMeshHelper.hlsl" + #pragma vertex VertVisibilityMeshXR + #pragma fragment FragUberPostTextureReadVersion + #pragma target 5.0 + #pragma debug + + // Fallback shader to use when we can't keep things on tile, so usually in the editor when dealing with + // MSAA source targets to a non MSAA destination we can't perform a software resolve in the shader and + // so have to fall back to resolving the color target and reading it in as a texture. + // Where we have a MSAA destination we can avoid this. + half4 FragUberPostTextureReadVersion(Varyings input) : SV_Target0 + { + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); + + float2 uv = SCREEN_COORD_APPLY_SCALEBIAS(UnityStereoTransformScreenSpaceTex(input.texcoord)); + half4 inputColor = SAMPLE_TEXTURE2D_X(_BlitTexture, sampler_LinearClamp, uv); + return UberPost(inputColor, uv); + } + ENDHLSL + } + } +} diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTileUberPost.shader.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTileUberPost.shader.meta new file mode 100644 index 00000000000..7be583d33c5 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTileUberPost.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fe4f13c1004a07d4ea1e30bfd0326d9e +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index 0a13d7c7c7b..9e55e678976 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -178,6 +178,8 @@ internal static bool UseDynamicBranchFogKeyword() internal UniversalRenderPipelineRuntimeTextures runtimeTextures { get; private set; } + internal static RenderTextureUVOriginStrategy renderTextureUVOriginStrategy { private get; set; } + /// /// The default Render Pipeline Global Settings. /// @@ -861,6 +863,7 @@ static void RenderSingleCamera(ScriptableRenderContext context, UniversalCameraD if (asset?.useAdaptivePerformance == true) ApplyAdaptivePerformance(frameData); #endif + UniversalRenderPipeline.renderTextureUVOriginStrategy = RenderTextureUVOriginStrategy.BottomLeft; CreateShadowAtlasAndCullShadowCasters(lightData, shadowData, cameraData, ref data.cullResults, ref context); @@ -883,7 +886,8 @@ static void RenderSingleCamera(ScriptableRenderContext context, UniversalCameraD else #endif { - RecordAndExecuteRenderGraph(s_RenderGraph, context, renderer, cmd, cameraData.camera, asset); + RenderTextureUVOriginStrategy uvOriginStrategy = UniversalRenderPipeline.renderTextureUVOriginStrategy; + RecordAndExecuteRenderGraph(s_RenderGraph, context, renderer, cmd, cameraData.camera, uvOriginStrategy); renderer.FinishRenderGraphRendering(cmd); } } // When ProfilingSample goes out of scope, an "EndSample" command is enqueued into CommandBuffer cmd diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs index d33f946dc57..1be61e12e3e 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineCore.cs @@ -1035,7 +1035,6 @@ internal static class ShaderGlobalKeywords public static GlobalKeyword LinearToSRGBConversion; public static GlobalKeyword _ENABLE_ALPHA_OUTPUT; public static GlobalKeyword ForwardPlus; // Backward compatibility. Deprecated in 6.1. - // TODO: Move following keywords to Local keywords? // https://docs.unity3d.com/ScriptReference/Rendering.LocalKeyword.html //public static GlobalKeyword TonemapACES; @@ -1480,6 +1479,12 @@ public static class ShaderKeywordStrings /// Deprecated keyword. Use ClusterLightLoop instead. internal const string ForwardPlus = "_FORWARD_PLUS"; // Backward compatibility. Deprecated in 6.1. + + /// Keyword used for Multi Sampling Anti-Aliasing (MSAA) with 2 per pixel sample count. + public const string Msaa2 = "_MSAA_2"; + + /// Keyword used for Multi Sampling Anti-Aliasing (MSAA) with 4 per pixel sample count. + public const string Msaa4 = "_MSAA_4"; } public sealed partial class UniversalRenderPipeline diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineRenderGraph.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineRenderGraph.cs index f48d60d7024..f75e2329177 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineRenderGraph.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipelineRenderGraph.cs @@ -5,7 +5,7 @@ namespace UnityEngine.Rendering.Universal { public sealed partial class UniversalRenderPipeline { - static void RecordAndExecuteRenderGraph(RenderGraph renderGraph, ScriptableRenderContext context, ScriptableRenderer renderer, CommandBuffer cmd, Camera camera, UniversalRenderPipelineAsset asset) + static void RecordAndExecuteRenderGraph(RenderGraph renderGraph, ScriptableRenderContext context, ScriptableRenderer renderer, CommandBuffer cmd, Camera camera, RenderTextureUVOriginStrategy uvOriginStrategy) { RenderGraphParameters rgParams = new RenderGraphParameters { @@ -14,11 +14,7 @@ static void RecordAndExecuteRenderGraph(RenderGraph renderGraph, ScriptableRende commandBuffer = cmd, scriptableRenderContext = context, currentFrameIndex = Time.frameCount, -#if ENABLE_RENDERTEXTURE_UV_ORIGIN_STRATEGY - renderTextureUVOriginStrategy = asset.renderTextureUVOriginStrategy, -#else - renderTextureUVOriginStrategy = RenderTextureUVOriginStrategy.BottomLeft, -#endif + renderTextureUVOriginStrategy = uvOriginStrategy, }; try diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs index d06df99a79c..496256d2e53 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs @@ -230,6 +230,7 @@ internal RenderingMode renderingModeActual { internal CompatibilityMode.PostProcessPass finalPostProcessPass { get => m_PostProcessPasses.finalPostProcessPass; } internal RTHandle colorGradingLut { get => m_PostProcessPasses.colorGradingLut; } #endif + internal bool isPostProcessPassRenderGraphActive { get => m_PostProcessPassRenderGraph != null; } internal DeferredLights deferredLights { get => m_DeferredLights; } internal LayerMask prepassLayerMask { get; set; } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs index adf9b40d5b5..39e75d879a2 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs @@ -170,9 +170,9 @@ public sealed partial class UniversalRenderer { null, null }; + private static RTHandle m_RenderGraphCameraDepthHandle; private static int m_CurrentColorHandle = 0; - private static RTHandle m_RenderGraphDebugTextureHandle; private RTHandle currentRenderGraphCameraColorHandle @@ -1825,9 +1825,7 @@ void CreateIntermediateCameraColorAttachment(RenderGraph renderGraph, UniversalC void CreateIntermediateCameraDepthAttachment(RenderGraph renderGraph, UniversalCameraData cameraData, bool clearDepth, Color clearBackgroundDepth, bool depthTextureIsDepthFormat) { - UniversalResourceData resourceData = frameData.Get(); - - bool lastCameraInTheStack = cameraData.resolveFinalTarget; + var resourceData = frameData.Get(); var depthDescriptor = cameraData.cameraTargetDescriptor; depthDescriptor.useMipMap = false; @@ -1847,18 +1845,36 @@ void CreateIntermediateCameraDepthAttachment(RenderGraph renderGraph, UniversalC depthDescriptor.graphicsFormat = GraphicsFormat.None; depthDescriptor.depthStencilFormat = cameraDepthAttachmentFormat; - RenderingUtils.ReAllocateHandleIfNeeded(ref m_RenderGraphCameraDepthHandle, depthDescriptor, FilterMode.Point, TextureWrapMode.Clamp, name: _CameraDepthAttachmentName); + // When there's a single camera setup, we can simplify the workflow by using a RenderGraph texture directly. + // In the multi camera setup case, we still have to use import mechanism because each camera records its own graph; they share the imported intermediate depth texture. + var isSingleCamera = cameraData.resolveFinalTarget && cameraData.renderType == CameraRenderType.Base; + if (isSingleCamera) + { + bool discardOnLastUse = cameraData.resolveFinalTarget; // Last camera in stack +#if UNITY_EDITOR + // scene filtering will reuse "camera" depth from the normal pass for the "filter highlight" effect + if (cameraData.isSceneViewCamera && CoreUtils.IsSceneFilteringEnabled()) + discardOnLastUse = false; +#endif + resourceData.cameraDepth = CreateRenderGraphTexture(renderGraph, depthDescriptor, _CameraDepthAttachmentName, clearDepth, clearBackgroundDepth, FilterMode.Point, TextureWrapMode.Clamp, discardOnLastUse: discardOnLastUse); + } + else + { + RenderingUtils.ReAllocateHandleIfNeeded(ref m_RenderGraphCameraDepthHandle, depthDescriptor, FilterMode.Point, TextureWrapMode.Clamp, name: _CameraDepthAttachmentName); + + ImportResourceParams importDepthParams = new ImportResourceParams(); + importDepthParams.clearOnFirstUse = clearDepth; + importDepthParams.clearColor = clearBackgroundDepth; + importDepthParams.discardOnLastUse = cameraData.resolveFinalTarget; // Last camera in stack - ImportResourceParams importDepthParams = new ImportResourceParams(); - importDepthParams.clearOnFirstUse = clearDepth; - importDepthParams.clearColor = clearBackgroundDepth; - importDepthParams.discardOnLastUse = lastCameraInTheStack; // Last camera in stack #if UNITY_EDITOR - // scene filtering will reuse "camera" depth from the normal pass for the "filter highlight" effect - if (cameraData.isSceneViewCamera && CoreUtils.IsSceneFilteringEnabled()) - importDepthParams.discardOnLastUse = false; + // scene filtering will reuse "camera" depth from the normal pass for the "filter highlight" effect + if (cameraData.isSceneViewCamera && CoreUtils.IsSceneFilteringEnabled()) + importDepthParams.discardOnLastUse = false; #endif - resourceData.cameraDepth = renderGraph.ImportTexture(m_RenderGraphCameraDepthHandle, importDepthParams); + resourceData.cameraDepth = renderGraph.ImportTexture(m_RenderGraphCameraDepthHandle, importDepthParams); + } + resourceData.activeDepthID = UniversalResourceData.ActiveID.Camera; // Configure the copy depth pass based on the allocated depth texture From 99ef3997bb2138249a43576c5cdb0778b489d359 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Fri, 12 Sep 2025 19:33:05 +0000 Subject: [PATCH 14/65] [Port] [6000.3] [VFX] Small UI fixes --- .../Editor/GraphView/Profiling/VFXProfilingBoard.cs | 4 +++- .../Editor/GraphView/VFXComponentBoard.cs | 11 ----------- .../GraphView/Views/Properties/NumericPropertiesRM.cs | 2 +- .../Editor/GraphView/Views/VFXView.cs | 9 ++++++++- .../Editor/Inspector/VisualEffectEditor.cs | 5 +++-- .../Editor/UIResources/uss/VFXContext.uss | 1 - .../Editor/UIResources/uss/VFXControls.uss | 4 ++++ .../UIResources/uxml/VFXCompileDropdownPanel.uxml | 2 +- 8 files changed, 20 insertions(+), 18 deletions(-) diff --git a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Profiling/VFXProfilingBoard.cs b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Profiling/VFXProfilingBoard.cs index e580deb044e..d90751aafee 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Profiling/VFXProfilingBoard.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Profiling/VFXProfilingBoard.cs @@ -513,9 +513,11 @@ void SetupHeatMapSettings() m_HeatmapSettingsContainer.Add(m_TopExecutionTimeField); m_TopExecutionTimeField.RegisterValueChangedCallback(evt => { + var value = Mathf.Max(0, evt.newValue); + m_TopExecutionTimeField.SetValueWithoutNotify(value); foreach (var anchoredPanel in m_AnchoredProfilerPanels) { - anchoredPanel.SetHeatmapRefValue(evt.newValue); + anchoredPanel.SetHeatmapRefValue(value); } }); } diff --git a/Packages/com.unity.visualeffectgraph/Editor/GraphView/VFXComponentBoard.cs b/Packages/com.unity.visualeffectgraph/Editor/GraphView/VFXComponentBoard.cs index 5ad19cbe615..6ed0767b61c 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/GraphView/VFXComponentBoard.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/GraphView/VFXComponentBoard.cs @@ -419,17 +419,6 @@ void EffectRestart() m_DebugUI.Notify(VFXUIDebug.Events.VFXReset); } - public void OnVisualEffectComponentChanged(IEnumerable visualEffects) - { - if (m_AttachedComponent != null - && visualEffects.Contains(m_AttachedComponent) - && m_AttachedComponent.visualEffectAsset != controller.graph.visualEffectResource.asset) - { - //The Visual Effect Asset has been changed and is no longer valid, we don't want to modify capacity on the wrong graph. We have to detach. - m_View.attachedComponent = null; - } - } - VisualEffect m_AttachedComponent; public VisualEffect GetAttachedComponent() diff --git a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Properties/NumericPropertiesRM.cs b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Properties/NumericPropertiesRM.cs index f5aac661162..3888669e86b 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Properties/NumericPropertiesRM.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Properties/NumericPropertiesRM.cs @@ -164,7 +164,6 @@ public override object FilterValue(object value) class UintPropertyRM : NumericPropertyRM { private VFXEnumValuePopup m_EnumPopup; - private VFX32BitField m_BitField; public UintPropertyRM(IPropertyRMProvider controller, float labelWidth) : base(controller, labelWidth) { @@ -212,6 +211,7 @@ protected override VisualElement CreateSimpleField(string label) { var nameLabel = new Label(label); nameLabel.AddToClassList("label"); + nameLabel.AddToClassList("bitfield-label"); Insert(0, nameLabel); return new VFX32BitField(); } diff --git a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/VFXView.cs b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/VFXView.cs index e3e7bc956e4..b7ba397f702 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/VFXView.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/VFXView.cs @@ -1134,7 +1134,14 @@ void ToggleProfilingBoard(ChangeEvent e) public void OnVisualEffectComponentChanged(IEnumerable visualEffects) { - m_ComponentBoard.OnVisualEffectComponentChanged(visualEffects); + if (attachedComponent == null || attachedComponent.visualEffectAsset != controller.graph.visualEffectResource.asset) + { + Detach(); + foreach (VisualEffect visualEffect in visualEffects) + { + TryAttachTo(visualEffect, true); + } + } } public void Delete() diff --git a/Packages/com.unity.visualeffectgraph/Editor/Inspector/VisualEffectEditor.cs b/Packages/com.unity.visualeffectgraph/Editor/Inspector/VisualEffectEditor.cs index a71a2c23888..6e6319ce44d 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/Inspector/VisualEffectEditor.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/Inspector/VisualEffectEditor.cs @@ -851,9 +851,10 @@ public override void OnInspectorGUI() EditorGUI.indentLevel = 0; if (serializedObject.ApplyModifiedProperties()) { - var window = WindowLayout.FindEditorWindowOfType(typeof(VFXViewWindow)) as VFXViewWindow; - if (window != null) + foreach (var window in VFXViewWindow.GetAllWindows()) + { window.OnVisualEffectComponentChanged(targets.Cast()); + } } } diff --git a/Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXContext.uss b/Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXContext.uss index 3e03d5a570b..859eb2710ca 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXContext.uss +++ b/Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXContext.uss @@ -319,7 +319,6 @@ TextField#user-title-textfield #unity-text-input #user-label { overflow: hidden; - max-height: 120px; } VFXContextUI.inputTypespawnevent #user-label diff --git a/Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXControls.uss b/Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXControls.uss index 408276ae413..e040741e7bb 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXControls.uss +++ b/Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXControls.uss @@ -120,6 +120,10 @@ VFXStringFieldPushButton > Label { -unity-slice-right: 12; } +.propertyrm > Label.bitfield-label { + margin-left: 0; +} + VFX32BitField { margin-left: 2px; } diff --git a/Packages/com.unity.visualeffectgraph/Editor/UIResources/uxml/VFXCompileDropdownPanel.uxml b/Packages/com.unity.visualeffectgraph/Editor/UIResources/uxml/VFXCompileDropdownPanel.uxml index e33892797c7..e699be856f1 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/UIResources/uxml/VFXCompileDropdownPanel.uxml +++ b/Packages/com.unity.visualeffectgraph/Editor/UIResources/uxml/VFXCompileDropdownPanel.uxml @@ -8,7 +8,7 @@ - + From fde3b5f30da1864a893de630bcef95fa69b0dbe5 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Fri, 12 Sep 2025 19:33:05 +0000 Subject: [PATCH 15/65] [Port] [6000.3] Change APV WebGL warning to be non-WebGPU --- .../ProbeVolume/ProbeVolumeBuildProcessor.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBuildProcessor.cs b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBuildProcessor.cs index 65552dc6aaf..67fcbca0a7d 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBuildProcessor.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Lighting/ProbeVolume/ProbeVolumeBuildProcessor.cs @@ -1,3 +1,4 @@ +using System; using System.IO; using System.Collections.Generic; using UnityEditor.Build; @@ -120,10 +121,16 @@ public override void PrepareForBuild(BuildPlayerContext buildPlayerContext) // APV doesn't work with WebGL, so let's warn the user. if (buildPlayerContext.BuildPlayerOptions.target == BuildTarget.WebGL) { - Debug.LogError( - $"The scene '{scene}' contains baked Adaptive Probe Volumes, but the build target is WebGL. " + - "Adaptive Probe Volumes are not supported when targeting WebGL."); - continue; + // WebGPU does support APV so only warn if WebGPU is not enabled. + GraphicsDeviceType[] apis = PlayerSettings.GetGraphicsAPIs(BuildTarget.WebGL); + var index = Array.FindIndex(apis, x => x == GraphicsDeviceType.WebGPU); + if (index == -1) + { + Debug.LogError( + $"The scene '{scene}' contains baked Adaptive Probe Volumes, but the build target is WebGL. " + + "Adaptive Probe Volumes are not supported when targeting WebGL."); + continue; + } } var bakingSetGUID = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(bakingSet)); From 3ec130e48febbd313a566c6e9dff63aab072795c Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Fri, 12 Sep 2025 19:33:05 +0000 Subject: [PATCH 16/65] [Port] [6000.3] Use strict RWTexture formats for APV compute shaders --- .../Lighting/ProbeVolume/ProbeVolume.hlsl | 16 ++++++++-------- .../ProbeVolume/ProbeVolumeBlendStates.compute | 16 ++++++++-------- .../ProbeVolume/ProbeVolumeUploadData.compute | 6 +++--- .../ProbeVolume/ProbeVolumeUploadDataL2.compute | 8 ++++---- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolume.hlsl b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolume.hlsl index b7ae5454872..58292d06a54 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolume.hlsl +++ b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolume.hlsl @@ -77,14 +77,14 @@ struct APVResources struct APVResourcesRW { - RWTexture3D L0_L1Rx; - RWTexture3D L1G_L1Ry; - RWTexture3D L1B_L1Rz; - RWTexture3D L2_0; - RWTexture3D L2_1; - RWTexture3D L2_2; - RWTexture3D L2_3; - RWTexture3D ProbeOcclusion; + RWTexture3D L0_L1Rx; + RWTexture3D L1G_L1Ry; + RWTexture3D L1B_L1Rz; + RWTexture3D L2_0; + RWTexture3D L2_1; + RWTexture3D L2_2; + RWTexture3D L2_3; + RWTexture3D ProbeOcclusion; }; #ifndef USE_APV_PROBE_OCCLUSION diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBlendStates.compute b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBlendStates.compute index 20b28b21c60..30f8252f1d0 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBlendStates.compute +++ b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeBlendStates.compute @@ -15,9 +15,9 @@ Texture3D _State1_L0_L1Rx; Texture3D _State1_L1G_L1Ry; Texture3D _State1_L1B_L1Rz; -RWTexture3D _Out_L0_L1Rx; -RWTexture3D _Out_L1G_L1Ry; -RWTexture3D _Out_L1B_L1Rz; +RWTexture3D _Out_L0_L1Rx; +RWTexture3D _Out_L1G_L1Ry; +RWTexture3D _Out_L1B_L1Rz; #ifdef PROBE_VOLUMES_L2 Texture3D _State0_L2_0; @@ -30,16 +30,16 @@ Texture3D _State1_L2_1; Texture3D _State1_L2_2; Texture3D _State1_L2_3; -RWTexture3D _Out_L2_0; -RWTexture3D _Out_L2_1; -RWTexture3D _Out_L2_2; -RWTexture3D _Out_L2_3; +RWTexture3D _Out_L2_0; +RWTexture3D _Out_L2_1; +RWTexture3D _Out_L2_2; +RWTexture3D _Out_L2_3; #endif #ifdef USE_APV_PROBE_OCCLUSION Texture3D _State0_ProbeOcclusion; Texture3D _State1_ProbeOcclusion; -RWTexture3D _Out_ProbeOcclusion; +RWTexture3D _Out_ProbeOcclusion; #endif float4 _ChunkList[1000]; diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeUploadData.compute b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeUploadData.compute index d80bf698404..33418a71fe4 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeUploadData.compute +++ b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeUploadData.compute @@ -9,9 +9,9 @@ #pragma multi_compile_local _ PROBE_VOLUMES_SKY_SHADING_DIRECTION #pragma multi_compile_local _ PROBE_VOLUMES_PROBE_OCCLUSION -RWTexture3D _Out_L0_L1Rx; -RWTexture3D _Out_L1G_L1Ry; -RWTexture3D _Out_L1B_L1Rz; +RWTexture3D _Out_L0_L1Rx; +RWTexture3D _Out_L1G_L1Ry; +RWTexture3D _Out_L1B_L1Rz; #ifdef PROBE_VOLUMES_SHARED_DATA diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeUploadDataL2.compute b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeUploadDataL2.compute index 5fbf608d11a..6c821c22913 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeUploadDataL2.compute +++ b/Packages/com.unity.render-pipelines.core/Runtime/Lighting/ProbeVolume/ProbeVolumeUploadDataL2.compute @@ -4,10 +4,10 @@ #pragma kernel UploadDataL2 -RWTexture3D _Out_L2_0; -RWTexture3D _Out_L2_1; -RWTexture3D _Out_L2_2; -RWTexture3D _Out_L2_3; +RWTexture3D _Out_L2_0; +RWTexture3D _Out_L2_1; +RWTexture3D _Out_L2_2; +RWTexture3D _Out_L2_3; [numthreads(64, 1, 1)] From 2398a3c7838725852cbd62d49b0bfc2a0da2c0ce Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Tue, 16 Sep 2025 11:10:07 +0000 Subject: [PATCH 17/65] [Port] [6000.3] [VFX] Fixed enum field was not set properly and then UI was always resetting to default value --- .../Editor/Controls/VFXEnumValuePopup.cs | 20 +++++++------------ .../GraphView/Views/Properties/PropertyRM.cs | 2 +- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/Packages/com.unity.visualeffectgraph/Editor/Controls/VFXEnumValuePopup.cs b/Packages/com.unity.visualeffectgraph/Editor/Controls/VFXEnumValuePopup.cs index 153835ba588..6363f3a6756 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/Controls/VFXEnumValuePopup.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/Controls/VFXEnumValuePopup.cs @@ -7,7 +7,7 @@ namespace UnityEditor.VFX.UI { class VFXEnumValuePopup : VisualElement, INotifyValueChanged { - DropdownField m_DropDownButton; + readonly DropdownField m_DropDownButton; long m_Value; public IEnumerable choices => m_DropDownButton.choices; @@ -32,26 +32,20 @@ public long value set => SetValueAndNotify(value); } - public void SetValueAndNotify(long newValue) + private void SetValueAndNotify(long newValue) { if (!EqualityComparer.Default.Equals(value, newValue)) { - using (ChangeEvent evt = ChangeEvent.GetPooled(value, newValue)) - { - evt.target = this; - SetValueWithoutNotify(newValue); - SendEvent(evt); - } + using var evt = ChangeEvent.GetPooled(value, newValue); + evt.target = this; + SetValueWithoutNotify(newValue); + m_DropDownButton.value = m_DropDownButton.choices[(int)m_Value]; + SendEvent(evt); } } public void SetValueWithoutNotify(long newValue) { - if (newValue >= 0 && newValue < m_DropDownButton.choices.Count) - { - m_Value = newValue; - } - m_Value = Math.Clamp(newValue, 0, m_DropDownButton.choices.Count - 1); } } diff --git a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Properties/PropertyRM.cs b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Properties/PropertyRM.cs index 4ab1c28ed00..0370c9cbb9a 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Properties/PropertyRM.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Properties/PropertyRM.cs @@ -624,7 +624,7 @@ public override void UpdateGUI(bool force) if (m_Field is IVFXNotifyValueChanged vfxNotifyValueChanged) vfxNotifyValueChanged.SetValueWithoutNotify(value, force); else - m_Field.SetValueWithoutNotify(value); + m_Field.value = value; } catch (System.Exception ex) { From 40c07fcd6349ee9268a0eb05c07432d2d6308cdd Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Tue, 16 Sep 2025 11:10:07 +0000 Subject: [PATCH 18/65] [Port] [6000.3] [XR][URP] Remove XR Dynamic resolution code that caused regression on Screen Space effects --- .../Runtime/DeferredLights.cs | 17 +++-------------- .../Runtime/PostProcessUtils.cs | 14 ++------------ .../Runtime/ScriptableRenderer.cs | 15 ++------------- .../Runtime/UniversalRenderPipeline.cs | 6 ------ 4 files changed, 7 insertions(+), 45 deletions(-) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/DeferredLights.cs b/Packages/com.unity.render-pipelines.universal/Runtime/DeferredLights.cs index 3249ac5f6e5..0308b05d64f 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/DeferredLights.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/DeferredLights.cs @@ -333,20 +333,9 @@ internal void SetupLights(CommandBuffer cmd, UniversalCameraData cameraData, Vec Camera camera = cameraData.camera; -#if ENABLE_VR && ENABLE_XR_MODULE - // Use eye texture's scaled width and height as screen params when XR is enabled - if (cameraData.xr.enabled) - { - this.RenderWidth = camera.allowDynamicResolution ? cameraData.xr.renderTargetScaledWidth : cameraTargetSizeCopy.x; - this.RenderHeight = camera.allowDynamicResolution ? cameraData.xr.renderTargetScaledHeight : cameraTargetSizeCopy.y; - } - else -#endif - { - // Support for dynamic resolution. - this.RenderWidth = camera.allowDynamicResolution ? Mathf.CeilToInt(ScalableBufferManager.widthScaleFactor * cameraTargetSizeCopy.x) : cameraTargetSizeCopy.x; - this.RenderHeight = camera.allowDynamicResolution ? Mathf.CeilToInt(ScalableBufferManager.heightScaleFactor * cameraTargetSizeCopy.y) : cameraTargetSizeCopy.y; - } + // Support for dynamic resolution. + this.RenderWidth = camera.allowDynamicResolution ? Mathf.CeilToInt(ScalableBufferManager.widthScaleFactor * cameraTargetSizeCopy.x) : cameraTargetSizeCopy.x; + this.RenderHeight = camera.allowDynamicResolution ? Mathf.CeilToInt(ScalableBufferManager.heightScaleFactor * cameraTargetSizeCopy.y) : cameraTargetSizeCopy.y; if (!m_UseDeferredPlus) { diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/PostProcessUtils.cs b/Packages/com.unity.render-pipelines.universal/Runtime/PostProcessUtils.cs index 4f5fafee5e3..7c7683eb7aa 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/PostProcessUtils.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/PostProcessUtils.cs @@ -119,18 +119,8 @@ internal static void SetSourceSize(RasterCommandBuffer cmd, float width, float h { if (rt != null && rt.useDynamicScale) { -#if ENABLE_VR && ENABLE_XR_MODULE - if (rt.vrUsage != VRTextureUsage.None) - { - width = XRSystem.ScaleTextureWidthForXR(rt); - height = XRSystem.ScaleTextureHeightForXR(rt); - } - else -#endif - { - width *= ScalableBufferManager.widthScaleFactor; - height *= ScalableBufferManager.heightScaleFactor; - } + width *= ScalableBufferManager.widthScaleFactor; + height *= ScalableBufferManager.heightScaleFactor; } cmd.SetGlobalVector(ShaderConstants._SourceSize, new Vector4(width, height, 1.0f / width, 1.0f / height)); } diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs b/Packages/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs index b4e002efa7a..08f85d7bd20 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/ScriptableRenderer.cs @@ -321,19 +321,8 @@ void SetPerCameraShaderVariables(RasterCommandBuffer cmd, UniversalCameraData ca if (camera.allowDynamicResolution) { -#if ENABLE_VR && ENABLE_XR_MODULE - // Use eye texture's scaled width and height as screen params when XR is enabled - if (cameraData.xr.enabled) - { - scaledCameraTargetWidth = (float)cameraData.xr.renderTargetScaledWidth; - scaledCameraTargetHeight = (float)cameraData.xr.renderTargetScaledHeight; - } - else -#endif - { - scaledCameraTargetWidth *= ScalableBufferManager.widthScaleFactor; - scaledCameraTargetHeight *= ScalableBufferManager.heightScaleFactor; - } + scaledCameraTargetWidth *= ScalableBufferManager.widthScaleFactor; + scaledCameraTargetHeight *= ScalableBufferManager.heightScaleFactor; } float near = camera.nearClipPlane; diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs index 9e55e678976..d0e619a6b34 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderPipeline.cs @@ -1033,12 +1033,6 @@ static void RenderCameraStack(ScriptableRenderContext context, Camera baseCamera // Apply XR display's viewport scale to URP's dynamic resolution solution float scaleToApply = XRSystem.GetRenderViewportScale(); - if (XRSystem.GetDynamicResolutionScale() < 1.0f) - { - // If XR dynamic resolution is enabled use the XRSystem dynamic resolution scale - // Smaller than 1.0 renderViewport scale are not supported to have the best performance gain - scaleToApply = XRSystem.GetDynamicResolutionScale(); - } ScalableBufferManager.ResizeBuffers(scaleToApply, scaleToApply); } From 3b3868c06b1af3adffbd3e588905be58c63a4b6b Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Fri, 19 Sep 2025 14:03:06 +0000 Subject: [PATCH 19/65] [content automatically redacted] touching PlatformDependent folder --- .../Tests/Runtime/RuntimeExampleTest.cs | 1 + .../Assets/Tests/HDRP_Runtime_Graphics_Tests.cs | 10 ---------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/Packages/com.unity.render-pipelines.high-definition/Tests/Runtime/RuntimeExampleTest.cs b/Packages/com.unity.render-pipelines.high-definition/Tests/Runtime/RuntimeExampleTest.cs index e08ffec278f..a697d48d3ce 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Tests/Runtime/RuntimeExampleTest.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Tests/Runtime/RuntimeExampleTest.cs @@ -14,6 +14,7 @@ public void PlayModeSampleTestSimplePasses() // A UnityTest behaves like a coroutine in PlayMode // and allows you to yield null to skip a frame in EditMode [UnityTest] + [Ignore("Unstable: https://jira.unity3d.com/browse/UUM-102848")] public IEnumerator PlayModeSampleTestWithEnumeratorPasses() { // Use the Assert class to test conditions. diff --git a/Tests/SRPTests/Projects/HDRP_RuntimeTests/Assets/Tests/HDRP_Runtime_Graphics_Tests.cs b/Tests/SRPTests/Projects/HDRP_RuntimeTests/Assets/Tests/HDRP_Runtime_Graphics_Tests.cs index 78178309d68..81ff50a5d31 100644 --- a/Tests/SRPTests/Projects/HDRP_RuntimeTests/Assets/Tests/HDRP_Runtime_Graphics_Tests.cs +++ b/Tests/SRPTests/Projects/HDRP_RuntimeTests/Assets/Tests/HDRP_Runtime_Graphics_Tests.cs @@ -49,16 +49,6 @@ public class HDRP_Runtime_Graphics_Tests "Multiple materials are fully black or completely missing.", runtimePlatforms: new RuntimePlatform[] { RuntimePlatform.Switch } )] - [IgnoreGraphicsTest( - "003-VirtualTexturing$", - "Artifacts appear at random on objects within the scene, see UUM-113462.", - graphicsDeviceTypes: new GraphicsDeviceType[] { GraphicsDeviceType.GameCoreXboxSeries } - )] - [IgnoreGraphicsTest( - "003-VirtualTexturing-Forward$", - "Artifacts appear at random on objects within the scene, see UUM-113462.", - graphicsDeviceTypes: new GraphicsDeviceType[] { GraphicsDeviceType.GameCoreXboxSeries } - )] [IgnoreGraphicsTest( "004-CloudsFlaresDecals$", "Area with cloud-coverage is blue on Intel-based MacOS (CI).", From 0e4098b5aa497ca2ea5434992bb1ff09c81921e2 Mon Sep 17 00:00:00 2001 From: Rasmus Roenn Nielsen Date: Fri, 19 Sep 2025 14:03:07 +0000 Subject: [PATCH 20/65] Shorten SurfaceCacheGlobalIlluminationRendererFeature folder name (fixing UUM-114156) --- ...ndererFeature.meta => SurfaceCacheGI.meta} | 2 +- .../Debug.compute | 0 .../Debug.compute.meta | 0 .../FallbackMaterial.mat | 0 .../FallbackMaterial.mat.meta | 0 .../FallbackMaterial.shader | 0 .../FallbackMaterial.shader.meta | 0 .../FlatNormalResolution.compute | 0 .../FlatNormalResolution.compute.meta | 0 .../PatchAllocation.compute | 0 .../PatchAllocation.compute.meta | 0 .../ScreenResolveLookup.compute | 0 .../ScreenResolveLookup.compute.meta | 0 .../ScreenResolveUpsampling.compute | 0 .../ScreenResolveUpsampling.compute.meta | 0 .../SurfaceCacheCore.meta | 0 .../SurfaceCacheCore/Common.hlsl | 0 .../SurfaceCacheCore/Common.hlsl.meta | 0 .../SurfaceCacheCore/Defrag.compute | 0 .../SurfaceCacheCore/Defrag.compute.meta | 0 .../SurfaceCacheCore/Estimation.hlsl | 0 .../SurfaceCacheCore/Estimation.hlsl.meta | 0 .../SurfaceCacheCore/Eviction.compute | 0 .../SurfaceCacheCore/Eviction.compute.meta | 0 .../IrradianceCompression.hlsl | 0 .../IrradianceCompression.hlsl.meta | 0 .../SurfaceCacheCore/PatchUtil.hlsl | 0 .../SurfaceCacheCore/PatchUtil.hlsl.meta | 0 .../SurfaceCacheCore/PathTracing.hlsl | 0 .../SurfaceCacheCore/PathTracing.hlsl.meta | 0 .../SurfaceCacheCore/PathTracingCommon.hlsl | 0 .../PathTracingCommon.hlsl.meta | 0 .../PathTracingMaterials.hlsl | 0 .../PathTracingMaterials.hlsl.meta | 0 .../RestirCandidateTemporal.hlsl | 0 .../RestirCandidateTemporal.hlsl.meta | 0 .../RestirCandidateTemporal.urtshader | 0 .../RestirCandidateTemporal.urtshader.meta | 0 .../SurfaceCacheCore/RestirEstimation.compute | 0 .../RestirEstimation.compute.meta | 0 .../SurfaceCacheCore/RestirEstimation.hlsl | 0 .../RestirEstimation.hlsl.meta | 0 .../SurfaceCacheCore/RestirSpatial.compute | 0 .../RestirSpatial.compute.meta | 0 .../SurfaceCacheCore/RingBuffer.hlsl | 0 .../SurfaceCacheCore/RingBuffer.hlsl.meta | 0 .../SurfaceCacheCore/RisEstimation.hlsl | 0 .../SurfaceCacheCore/RisEstimation.hlsl.meta | 0 .../SurfaceCacheCore/RisEstimation.urtshader | 0 .../RisEstimation.urtshader.meta | 0 .../SurfaceCacheCore/Scrolling.compute | 0 .../SurfaceCacheCore/Scrolling.compute.meta | 0 .../SurfaceCacheCore/SpatialFiltering.compute | 0 .../SpatialFiltering.compute.meta | 0 .../SurfaceCacheCore/SurfaceCache.cs | 0 .../SurfaceCacheCore/SurfaceCache.cs.meta | 0 .../SurfaceCacheRenderPipelineResources.cs | 26 +++++++++---------- ...urfaceCacheRenderPipelineResources.cs.meta | 0 .../TemporalFiltering.compute | 0 .../TemporalFiltering.compute.meta | 0 .../SurfaceCacheCore/TemporalFiltering.hlsl | 0 .../TemporalFiltering.hlsl.meta | 0 .../SurfaceCacheCore/UniformEstimation.hlsl | 0 .../UniformEstimation.hlsl.meta | 0 .../UniformEstimation.urtshader | 0 .../UniformEstimation.urtshader.meta | 0 .../SurfaceCacheCore/VectorLogic.hlsl | 0 .../SurfaceCacheCore/VectorLogic.hlsl.meta | 0 ...eCacheGlobalIlluminationRendererFeature.cs | 12 ++++----- ...eGlobalIlluminationRendererFeature.cs.meta | 0 70 files changed, 20 insertions(+), 20 deletions(-) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature.meta => SurfaceCacheGI.meta} (77%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/Debug.compute (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/Debug.compute.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/FallbackMaterial.mat (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/FallbackMaterial.mat.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/FallbackMaterial.shader (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/FallbackMaterial.shader.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/FlatNormalResolution.compute (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/FlatNormalResolution.compute.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/PatchAllocation.compute (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/PatchAllocation.compute.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/ScreenResolveLookup.compute (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/ScreenResolveLookup.compute.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/ScreenResolveUpsampling.compute (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/ScreenResolveUpsampling.compute.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/Common.hlsl (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/Common.hlsl.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/Defrag.compute (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/Defrag.compute.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/Estimation.hlsl (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/Estimation.hlsl.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/Eviction.compute (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/Eviction.compute.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/IrradianceCompression.hlsl (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/IrradianceCompression.hlsl.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/PatchUtil.hlsl (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/PatchUtil.hlsl.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/PathTracing.hlsl (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/PathTracing.hlsl.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/PathTracingCommon.hlsl (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/PathTracingCommon.hlsl.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/PathTracingMaterials.hlsl (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/PathTracingMaterials.hlsl.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RestirCandidateTemporal.hlsl (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RestirCandidateTemporal.hlsl.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RestirCandidateTemporal.urtshader (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RestirCandidateTemporal.urtshader.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RestirEstimation.compute (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RestirEstimation.compute.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RestirEstimation.hlsl (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RestirEstimation.hlsl.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RestirSpatial.compute (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RestirSpatial.compute.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RingBuffer.hlsl (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RingBuffer.hlsl.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RisEstimation.hlsl (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RisEstimation.hlsl.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RisEstimation.urtshader (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/RisEstimation.urtshader.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/Scrolling.compute (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/Scrolling.compute.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/SpatialFiltering.compute (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/SpatialFiltering.compute.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/SurfaceCache.cs (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/SurfaceCache.cs.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/SurfaceCacheRenderPipelineResources.cs (70%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/SurfaceCacheRenderPipelineResources.cs.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/TemporalFiltering.compute (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/TemporalFiltering.compute.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/TemporalFiltering.hlsl (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/TemporalFiltering.hlsl.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/UniformEstimation.hlsl (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/UniformEstimation.hlsl.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/UniformEstimation.urtshader (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/UniformEstimation.urtshader.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/VectorLogic.hlsl (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheCore/VectorLogic.hlsl.meta (100%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheGlobalIlluminationRendererFeature.cs (99%) rename Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/{SurfaceCacheGlobalIlluminationRendererFeature => SurfaceCacheGI}/SurfaceCacheGlobalIlluminationRendererFeature.cs.meta (100%) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI.meta similarity index 77% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI.meta index 093b98c3cf1..9fbf3fd4305 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature.meta +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d71af0079d49214429c1d2e98f012e07 +guid: e25bb11ca8db4cf4c8c43aa44f544dc1 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/Debug.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/Debug.compute similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/Debug.compute rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/Debug.compute diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/Debug.compute.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/Debug.compute.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/Debug.compute.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/Debug.compute.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/FallbackMaterial.mat b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FallbackMaterial.mat similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/FallbackMaterial.mat rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FallbackMaterial.mat diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/FallbackMaterial.mat.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FallbackMaterial.mat.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/FallbackMaterial.mat.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FallbackMaterial.mat.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/FallbackMaterial.shader b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FallbackMaterial.shader similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/FallbackMaterial.shader rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FallbackMaterial.shader diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/FallbackMaterial.shader.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FallbackMaterial.shader.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/FallbackMaterial.shader.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FallbackMaterial.shader.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/FlatNormalResolution.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FlatNormalResolution.compute similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/FlatNormalResolution.compute rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FlatNormalResolution.compute diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/FlatNormalResolution.compute.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FlatNormalResolution.compute.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/FlatNormalResolution.compute.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FlatNormalResolution.compute.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/PatchAllocation.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/PatchAllocation.compute similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/PatchAllocation.compute rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/PatchAllocation.compute diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/PatchAllocation.compute.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/PatchAllocation.compute.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/PatchAllocation.compute.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/PatchAllocation.compute.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/ScreenResolveLookup.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveLookup.compute similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/ScreenResolveLookup.compute rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveLookup.compute diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/ScreenResolveLookup.compute.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveLookup.compute.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/ScreenResolveLookup.compute.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveLookup.compute.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/ScreenResolveUpsampling.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveUpsampling.compute similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/ScreenResolveUpsampling.compute rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveUpsampling.compute diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/ScreenResolveUpsampling.compute.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveUpsampling.compute.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/ScreenResolveUpsampling.compute.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveUpsampling.compute.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Common.hlsl b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Common.hlsl similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Common.hlsl rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Common.hlsl diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Common.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Common.hlsl.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Common.hlsl.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Common.hlsl.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Defrag.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Defrag.compute similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Defrag.compute rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Defrag.compute diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Defrag.compute.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Defrag.compute.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Defrag.compute.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Defrag.compute.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Estimation.hlsl b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Estimation.hlsl similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Estimation.hlsl rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Estimation.hlsl diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Estimation.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Estimation.hlsl.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Estimation.hlsl.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Estimation.hlsl.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Eviction.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Eviction.compute similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Eviction.compute rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Eviction.compute diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Eviction.compute.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Eviction.compute.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Eviction.compute.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Eviction.compute.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/IrradianceCompression.hlsl b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/IrradianceCompression.hlsl similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/IrradianceCompression.hlsl rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/IrradianceCompression.hlsl diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/IrradianceCompression.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/IrradianceCompression.hlsl.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/IrradianceCompression.hlsl.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/IrradianceCompression.hlsl.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PatchUtil.hlsl b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PatchUtil.hlsl similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PatchUtil.hlsl rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PatchUtil.hlsl diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PatchUtil.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PatchUtil.hlsl.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PatchUtil.hlsl.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PatchUtil.hlsl.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PathTracing.hlsl b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PathTracing.hlsl similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PathTracing.hlsl rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PathTracing.hlsl diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PathTracing.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PathTracing.hlsl.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PathTracing.hlsl.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PathTracing.hlsl.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PathTracingCommon.hlsl b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PathTracingCommon.hlsl similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PathTracingCommon.hlsl rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PathTracingCommon.hlsl diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PathTracingCommon.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PathTracingCommon.hlsl.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PathTracingCommon.hlsl.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PathTracingCommon.hlsl.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PathTracingMaterials.hlsl b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PathTracingMaterials.hlsl similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PathTracingMaterials.hlsl rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PathTracingMaterials.hlsl diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PathTracingMaterials.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PathTracingMaterials.hlsl.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/PathTracingMaterials.hlsl.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PathTracingMaterials.hlsl.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirCandidateTemporal.hlsl b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirCandidateTemporal.hlsl similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirCandidateTemporal.hlsl rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirCandidateTemporal.hlsl diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirCandidateTemporal.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirCandidateTemporal.hlsl.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirCandidateTemporal.hlsl.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirCandidateTemporal.hlsl.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirCandidateTemporal.urtshader b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirCandidateTemporal.urtshader similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirCandidateTemporal.urtshader rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirCandidateTemporal.urtshader diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirCandidateTemporal.urtshader.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirCandidateTemporal.urtshader.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirCandidateTemporal.urtshader.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirCandidateTemporal.urtshader.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirEstimation.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirEstimation.compute similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirEstimation.compute rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirEstimation.compute diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirEstimation.compute.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirEstimation.compute.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirEstimation.compute.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirEstimation.compute.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirEstimation.hlsl b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirEstimation.hlsl similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirEstimation.hlsl rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirEstimation.hlsl diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirEstimation.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirEstimation.hlsl.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirEstimation.hlsl.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirEstimation.hlsl.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirSpatial.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirSpatial.compute similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirSpatial.compute rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirSpatial.compute diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirSpatial.compute.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirSpatial.compute.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirSpatial.compute.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirSpatial.compute.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RingBuffer.hlsl b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RingBuffer.hlsl similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RingBuffer.hlsl rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RingBuffer.hlsl diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RingBuffer.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RingBuffer.hlsl.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RingBuffer.hlsl.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RingBuffer.hlsl.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RisEstimation.hlsl b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RisEstimation.hlsl similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RisEstimation.hlsl rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RisEstimation.hlsl diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RisEstimation.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RisEstimation.hlsl.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RisEstimation.hlsl.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RisEstimation.hlsl.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RisEstimation.urtshader b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RisEstimation.urtshader similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RisEstimation.urtshader rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RisEstimation.urtshader diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RisEstimation.urtshader.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RisEstimation.urtshader.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RisEstimation.urtshader.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RisEstimation.urtshader.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Scrolling.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Scrolling.compute similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Scrolling.compute rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Scrolling.compute diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Scrolling.compute.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Scrolling.compute.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Scrolling.compute.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Scrolling.compute.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/SpatialFiltering.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SpatialFiltering.compute similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/SpatialFiltering.compute rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SpatialFiltering.compute diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/SpatialFiltering.compute.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SpatialFiltering.compute.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/SpatialFiltering.compute.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SpatialFiltering.compute.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/SurfaceCache.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SurfaceCache.cs similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/SurfaceCache.cs rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SurfaceCache.cs diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/SurfaceCache.cs.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SurfaceCache.cs.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/SurfaceCache.cs.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SurfaceCache.cs.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/SurfaceCacheRenderPipelineResources.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SurfaceCacheRenderPipelineResources.cs similarity index 70% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/SurfaceCacheRenderPipelineResources.cs rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SurfaceCacheRenderPipelineResources.cs index 0ae41b8b2fe..05e82ac03b8 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/SurfaceCacheRenderPipelineResources.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SurfaceCacheRenderPipelineResources.cs @@ -14,43 +14,43 @@ class SurfaceCacheRenderPipelineResourceSet : IRenderPipelineResources int IRenderPipelineGraphicsSettings.version => m_Version; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/TemporalFiltering.compute")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/TemporalFiltering.compute")] public ComputeShader m_TemporalFilteringShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/SpatialFiltering.compute")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SpatialFiltering.compute")] public ComputeShader m_SpatialFilteringShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirEstimation.compute")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirEstimation.compute")] public ComputeShader m_RestirEstimationShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RisEstimation.urtshader")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RisEstimation.urtshader")] ComputeShader m_RisEstimationComputeShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RisEstimation.urtshader")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RisEstimation.urtshader")] public RayTracingShader m_RisEstimationRayTracingShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Scrolling.compute")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Scrolling.compute")] public ComputeShader m_ScrollingShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Defrag.compute")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Defrag.compute")] public ComputeShader m_DefragShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/Eviction.compute")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Eviction.compute")] public ComputeShader m_EvictionShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/UniformEstimation.urtshader")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/UniformEstimation.urtshader")] public ComputeShader m_UniformEstimationComputeShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/UniformEstimation.urtshader")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/UniformEstimation.urtshader")] public RayTracingShader m_UniformEstimationRayTracingShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirCandidateTemporal.urtshader")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirCandidateTemporal.urtshader")] public ComputeShader m_RestirCandidateTemporalComputeShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirCandidateTemporal.urtshader")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirCandidateTemporal.urtshader")] public RayTracingShader m_RestirCandidateTemporalRayTracingShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/RestirSpatial.compute")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirSpatial.compute")] public ComputeShader m_RestirSpatialShader; public ComputeShader spatialFilteringShader diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/SurfaceCacheRenderPipelineResources.cs.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SurfaceCacheRenderPipelineResources.cs.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/SurfaceCacheRenderPipelineResources.cs.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SurfaceCacheRenderPipelineResources.cs.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/TemporalFiltering.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/TemporalFiltering.compute similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/TemporalFiltering.compute rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/TemporalFiltering.compute diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/TemporalFiltering.compute.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/TemporalFiltering.compute.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/TemporalFiltering.compute.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/TemporalFiltering.compute.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/TemporalFiltering.hlsl b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/TemporalFiltering.hlsl similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/TemporalFiltering.hlsl rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/TemporalFiltering.hlsl diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/TemporalFiltering.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/TemporalFiltering.hlsl.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/TemporalFiltering.hlsl.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/TemporalFiltering.hlsl.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/UniformEstimation.hlsl b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/UniformEstimation.hlsl similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/UniformEstimation.hlsl rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/UniformEstimation.hlsl diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/UniformEstimation.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/UniformEstimation.hlsl.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/UniformEstimation.hlsl.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/UniformEstimation.hlsl.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/UniformEstimation.urtshader b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/UniformEstimation.urtshader similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/UniformEstimation.urtshader rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/UniformEstimation.urtshader diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/UniformEstimation.urtshader.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/UniformEstimation.urtshader.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/UniformEstimation.urtshader.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/UniformEstimation.urtshader.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/VectorLogic.hlsl b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/VectorLogic.hlsl similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/VectorLogic.hlsl rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/VectorLogic.hlsl diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/VectorLogic.hlsl.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/VectorLogic.hlsl.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheCore/VectorLogic.hlsl.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/VectorLogic.hlsl.meta diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheGlobalIlluminationRendererFeature.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheGlobalIlluminationRendererFeature.cs similarity index 99% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheGlobalIlluminationRendererFeature.cs rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheGlobalIlluminationRendererFeature.cs index c3e47259d67..73bf581a05a 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheGlobalIlluminationRendererFeature.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheGlobalIlluminationRendererFeature.cs @@ -24,22 +24,22 @@ class SurfaceCacheRenderPipelineResourceSet : IRenderPipelineResources int IRenderPipelineGraphicsSettings.version => m_Version; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/FallbackMaterial.mat")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/FallbackMaterial.mat")] public Material m_FallbackMaterial; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/PatchAllocation.compute")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/PatchAllocation.compute")] public ComputeShader m_AllocationShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/ScreenResolveLookup.compute")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveLookup.compute")] public ComputeShader m_ScreenResolveLookupShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/ScreenResolveUpsampling.compute")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveUpsampling.compute")] public ComputeShader m_ScreenResolveUpsamplingShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/Debug.compute")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/Debug.compute")] public ComputeShader m_DebugShader; - [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/FlatNormalResolution.compute")] + [ResourcePath("Runtime/RendererFeatures/SurfaceCacheGI/FlatNormalResolution.compute")] public ComputeShader m_FlatNormalResolutionShader; public Material fallbackMaterial diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheGlobalIlluminationRendererFeature.cs.meta b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheGlobalIlluminationRendererFeature.cs.meta similarity index 100% rename from Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGlobalIlluminationRendererFeature/SurfaceCacheGlobalIlluminationRendererFeature.cs.meta rename to Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheGlobalIlluminationRendererFeature.cs.meta From ce9741754d278bfa13514291885113adda425a09 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Mon, 22 Sep 2025 09:25:10 +0000 Subject: [PATCH 21/65] [Port] [6000.3] [UUM-116276][6000.4][2D] Fix Rendering Debug views for Rendergraph2D --- .../ShaderGraph/Includes/SpriteLitPass.hlsl | 6 +++- .../ShaderGraph/Includes/SpriteUnlitPass.hlsl | 11 +++++-- .../UniversalSpriteCustomLitSubTarget.cs | 6 ++-- .../Targets/UniversalSpriteLitSubTarget.cs | 6 ++-- .../Targets/UniversalSpriteUnlitSubTarget.cs | 1 + .../Runtime/2D/Rendergraph/DrawLight2DPass.cs | 15 ++++++++- .../2D/Rendergraph/DrawRenderer2DPass.cs | 32 ++++++++++++++++--- .../2D/Rendergraph/Renderer2DRendergraph.cs | 12 ++++--- .../ShaderLibrary/Debug/Debugging2D.hlsl | 11 +++++-- .../Shaders/2D/Include/Core2D.hlsl | 5 +-- .../Shaders/2D/Include/Lit2DCommon.hlsl | 16 +++++++--- .../2D/Include/NormalsRenderingShared.hlsl | 2 -- .../Shaders/2D/Include/SurfaceData2D.hlsl | 3 ++ 13 files changed, 97 insertions(+), 29 deletions(-) diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Includes/SpriteLitPass.hlsl b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Includes/SpriteLitPass.hlsl index bb22c30e4a1..a36fe011b1e 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Includes/SpriteLitPass.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Includes/SpriteLitPass.hlsl @@ -12,6 +12,9 @@ PackedVaryings vert(Attributes input) input.positionOS = UnityFlipSprite(input.positionOS, unity_SpriteProps.xy); output = BuildVaryings(input); output.color *= _RendererColor * unity_SpriteColor; // vertex color has to applied here +#if defined(DEBUG_DISPLAY) + output.normalWS = TransformObjectToWorldNormal(input.normalOS); +#endif PackedVaryings packedOutput = PackVaryings(output); return packedOutput; } @@ -40,11 +43,12 @@ half4 frag(PackedVaryings packedInput) : SV_TARGET #endif SurfaceData2D surfaceData; - InitializeSurfaceData(color.rgb, color.a, surfaceDescription.SpriteMask, surfaceData); + InitializeSurfaceData(color.rgb, color.a, surfaceDescription.SpriteMask, surfaceDescription.NormalTS, surfaceData); InputData2D inputData; InitializeInputData(unpacked.texCoord0.xy, half2(unpacked.screenPosition.xy / unpacked.screenPosition.w), inputData); #if defined(DEBUG_DISPLAY) SETUP_DEBUG_DATA_2D(inputData, unpacked.positionWS, unpacked.positionCS); + surfaceData.normalWS = unpacked.normalWS; #endif return CombinedShapeLightShared(surfaceData, inputData); diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Includes/SpriteUnlitPass.hlsl b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Includes/SpriteUnlitPass.hlsl index 61a7f121823..f97aa179688 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Includes/SpriteUnlitPass.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Includes/SpriteUnlitPass.hlsl @@ -13,6 +13,9 @@ PackedVaryings vert(Attributes input) input.positionOS = UnityFlipSprite(input.positionOS, unity_SpriteProps.xy); output = BuildVaryings(input); output.color *= _RendererColor * unity_SpriteColor; // vertex color has to applied here +#if defined(DEBUG_DISPLAY) + output.normalWS = TransformObjectToWorldNormal(input.normalOS); +#endif PackedVaryings packedOutput = PackVaryings(output); return packedOutput; } @@ -38,9 +41,13 @@ half4 frag(PackedVaryings packedInput) : SV_TARGET clip(color.a - surfaceDescription.AlphaClipThreshold); #endif - #if defined(DEBUG_DISPLAY) +#if defined(DEBUG_DISPLAY) SurfaceData2D surfaceData; InitializeSurfaceData(color.rgb, color.a, surfaceData); + surfaceData.normalWS = unpacked.normalWS; +#if (SHADERPASS == SHADERPASS_SPRITELIT) + surfaceData.normalTS = surfaceDescription.NormalTS; +#endif InputData2D inputData; InitializeInputData(unpacked.positionWS.xy, half2(unpacked.texCoord0.xy), inputData); half4 debugColor = 0; @@ -51,7 +58,7 @@ half4 frag(PackedVaryings packedInput) : SV_TARGET { return debugColor; } - #endif +#endif // Disable vertex color multiplication. Users can get the color from VertexColor node #if !defined(HAVE_VFX_MODIFICATION) && !defined(_DISABLE_COLOR_TINT) diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteCustomLitSubTarget.cs b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteCustomLitSubTarget.cs index 2652c6de8c3..6ea3d606033 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteCustomLitSubTarget.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteCustomLitSubTarget.cs @@ -224,15 +224,16 @@ static class SpriteLitBlockMasks { BlockFields.SurfaceDescription.BaseColor, BlockFields.SurfaceDescriptionLegacy.SpriteColor, - BlockFields.SurfaceDescription.Alpha, UniversalBlockFields.SurfaceDescription.SpriteMask, + BlockFields.SurfaceDescription.NormalTS, + BlockFields.SurfaceDescription.Alpha, BlockFields.SurfaceDescription.AlphaClipThreshold, }; public static BlockFieldDescriptor[] FragmentNormal = new BlockFieldDescriptor[] { - BlockFields.SurfaceDescription.Alpha, BlockFields.SurfaceDescription.NormalTS, + BlockFields.SurfaceDescription.Alpha, BlockFields.SurfaceDescription.AlphaClipThreshold, }; @@ -255,6 +256,7 @@ static class SpriteLitRequiredFields StructFields.Varyings.positionWS, StructFields.Varyings.texCoord0, StructFields.Varyings.screenPosition, + StructFields.Varyings.normalWS, }; public static FieldCollection Normal = new FieldCollection() diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteLitSubTarget.cs b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteLitSubTarget.cs index 42714872d57..9ac3fa8e090 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteLitSubTarget.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteLitSubTarget.cs @@ -245,8 +245,9 @@ static class SpriteLitBlockMasks { BlockFields.SurfaceDescription.BaseColor, BlockFields.SurfaceDescriptionLegacy.SpriteColor, - BlockFields.SurfaceDescription.Alpha, UniversalBlockFields.SurfaceDescription.SpriteMask, + BlockFields.SurfaceDescription.NormalTS, + BlockFields.SurfaceDescription.Alpha, BlockFields.SurfaceDescription.AlphaClipThreshold, }; @@ -254,8 +255,8 @@ static class SpriteLitBlockMasks { BlockFields.SurfaceDescription.BaseColor, BlockFields.SurfaceDescriptionLegacy.SpriteColor, - BlockFields.SurfaceDescription.Alpha, BlockFields.SurfaceDescription.NormalTS, + BlockFields.SurfaceDescription.Alpha, BlockFields.SurfaceDescription.AlphaClipThreshold, }; } @@ -270,6 +271,7 @@ static class SpriteLitRequiredFields StructFields.Varyings.positionWS, StructFields.Varyings.texCoord0, StructFields.Varyings.screenPosition, + StructFields.Varyings.normalWS, }; public static FieldCollection Normal = new FieldCollection() diff --git a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteUnlitSubTarget.cs b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteUnlitSubTarget.cs index 1337ad339f6..1114ed046f2 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteUnlitSubTarget.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/2D/ShaderGraph/Targets/UniversalSpriteUnlitSubTarget.cs @@ -214,6 +214,7 @@ static class SpriteUnlitRequiredFields StructFields.Varyings.positionWS, StructFields.Varyings.color, StructFields.Varyings.texCoord0, + StructFields.Varyings.normalWS, }; } #endregion diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawLight2DPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawLight2DPass.cs index 8d6a75cc3e1..13f90393c57 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawLight2DPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawLight2DPass.cs @@ -227,9 +227,22 @@ public void Render(RenderGraph graph, ContextContainer frameData, Renderer2DData { Universal2DResourceData universal2DResourceData = frameData.Get(); CommonResourceData commonResourceData = frameData.Get(); + UniversalCameraData cameraData = frameData.Get(); + + DebugHandler debugHandler = ScriptableRenderPass.GetActiveDebugHandler(cameraData); + var isDebugLightingActive = debugHandler?.IsLightingActive ?? true; + +#if UNITY_EDITOR + if (cameraData.isSceneViewCamera && UnityEditor.SceneView.currentDrawingSceneView != null) + isDebugLightingActive &= UnityEditor.SceneView.currentDrawingSceneView.sceneLighting; + + if (cameraData.camera.cameraType == CameraType.Preview) + isDebugLightingActive = false; +#endif if (!layerBatch.lightStats.useLights || - isVolumetric && !layerBatch.lightStats.useVolumetricLights) + isVolumetric && !layerBatch.lightStats.useVolumetricLights || + !isDebugLightingActive) return; // Render single RTs by using low level pass for apis that don't support MRTs diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawRenderer2DPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawRenderer2DPass.cs index 44fd1c8b84f..f798e4e548c 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawRenderer2DPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/DrawRenderer2DPass.cs @@ -56,8 +56,15 @@ private static void Execute(RasterGraphContext context, PassData passData) } } - // Draw all renderers in layer batch - cmd.DrawRendererList(passData.rendererList); + if (passData.activeDebugHandler) + { + passData.debugRendererLists.DrawWithRendererList(cmd); + } + else + { + // Draw all renderers in layer batch + cmd.DrawRendererList(passData.rendererList); + } RendererLighting.DisableAllKeywords(cmd); } @@ -76,6 +83,8 @@ class PassData internal bool layerUseLights; internal TextureHandle[] lightTextures; internal RendererListHandle rendererList; + internal DebugRendererLists debugRendererLists; + internal bool activeDebugHandler; #if UNITY_EDITOR internal bool isLitView; // Required for prefab view and preview camera @@ -142,9 +151,22 @@ public void Render(RenderGraph graph, ContextContainer frameData, Renderer2DData RendererLighting.GetTransparencySortingMode(rendererData, cameraData.camera, ref sortSettings); drawSettings.sortingSettings = sortSettings; - var param = new RendererListParams(renderingData.cullResults, drawSettings, filterSettings); - passData.rendererList = graph.CreateRendererList(param); - builder.UseRendererList(passData.rendererList); + var activeDebugHandler = GetActiveDebugHandler(cameraData); + passData.activeDebugHandler = activeDebugHandler != null; + + if (activeDebugHandler != null) + { + var renderStateBlock = new RenderStateBlock(RenderStateMask.Nothing); + passData.debugRendererLists = activeDebugHandler.CreateRendererListsWithDebugRenderState(graph, + ref renderingData.cullResults, ref drawSettings, ref filterSettings, ref renderStateBlock); + passData.debugRendererLists.PrepareRendererListForRasterPass(builder); + } + else + { + var param = new RendererListParams(renderingData.cullResults, drawSettings, filterSettings); + passData.rendererList = graph.CreateRendererList(param); + builder.UseRendererList(passData.rendererList); + } if (passData.layerUseLights) { diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/Renderer2DRendergraph.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/Renderer2DRendergraph.cs index 58075370848..dd83f85e91d 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/Renderer2DRendergraph.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Rendergraph/Renderer2DRendergraph.cs @@ -217,6 +217,7 @@ ImportResourceSummary GetImportResourceSummary(RenderGraph renderGraph, Universa { clearColor = true; clearDepth = true; + debugHandler.TryGetScreenClearColor(ref cameraBackgroundColor); } output.cameraColorParams.clearOnFirstUse = clearColor; @@ -948,11 +949,14 @@ private void OnAfterRendering(RenderGraph renderGraph) // If HDR debug views are enabled, DebugHandler will perform the blit from debugScreenColor (== finalColorHandle) to backBufferColor. DebugHandler?.Render(renderGraph, cameraData, finalColorHandle, commonResourceData.overlayUITexture, commonResourceData.backBufferColor); - if (cameraData.isSceneViewCamera) - DrawRenderGraphWireOverlay(renderGraph, frameData, commonResourceData.backBufferColor); + if (cameraData.resolveFinalTarget) + { + if (cameraData.isSceneViewCamera) + DrawRenderGraphWireOverlay(renderGraph, frameData, commonResourceData.backBufferColor); - if (drawGizmos) - DrawRenderGraphGizmos(renderGraph, frameData, commonResourceData.activeColorTexture, commonResourceData.activeDepthTexture, GizmoSubset.PostImageEffects); + if (drawGizmos) + DrawRenderGraphGizmos(renderGraph, frameData, commonResourceData.activeColorTexture, commonResourceData.activeDepthTexture, GizmoSubset.PostImageEffects); + } } public Renderer2DData GetRenderer2DData() diff --git a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/Debugging2D.hlsl b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/Debugging2D.hlsl index fb0a0295270..1e576ff1333 100644 --- a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/Debugging2D.hlsl +++ b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Debug/Debugging2D.hlsl @@ -38,7 +38,7 @@ bool CalculateDebugColorMaterialSettings(in SurfaceData2D surfaceData, in InputD case DEBUGMATERIALMODE_ALBEDO: { - debugColor = half4(surfaceData.albedo, 1); + debugColor = half4(surfaceData.albedo, surfaceData.alpha); return true; } @@ -54,10 +54,15 @@ bool CalculateDebugColorMaterialSettings(in SurfaceData2D surfaceData, in InputD return true; } - case DEBUGMATERIALMODE_NORMAL_TANGENT_SPACE: case DEBUGMATERIALMODE_NORMAL_WORLD_SPACE: { - debugColor = half4(surfaceData.normalTS, 1); + debugColor = half4(surfaceData.normalWS * 0.5 + 0.5, surfaceData.alpha); + return true; + } + + case DEBUGMATERIALMODE_NORMAL_TANGENT_SPACE: + { + debugColor = half4(surfaceData.normalTS * 0.5 + 0.5, surfaceData.alpha); return true; } diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/Core2D.hlsl b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/Core2D.hlsl index a65f8af872e..3b888875bd5 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/Core2D.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/Core2D.hlsl @@ -19,6 +19,7 @@ #define COMMON_2D_INPUTS \ float3 positionOS : POSITION; \ float2 uv : TEXCOORD0; \ + float3 normal : NORMAL; \ UNITY_VERTEX_INPUT_INSTANCE_ID #define COMMON_2D_OUTPUTS_SHARED \ @@ -29,7 +30,8 @@ #if defined(DEBUG_DISPLAY) #define COMMON_2D_OUTPUTS \ COMMON_2D_OUTPUTS_SHARED \ - float3 positionWS : TEXCOORD2; + float3 positionWS : TEXCOORD2; \ + half3 normalWS : TEXCOORD3; #else #define COMMON_2D_OUTPUTS \ COMMON_2D_OUTPUTS_SHARED @@ -38,7 +40,6 @@ // Normals #define COMMON_2D_NORMALS_INPUTS \ COMMON_2D_INPUTS \ - float3 normal : NORMAL; \ float4 tangent : TANGENT; \ #define COMMON_2D_NORMALS_OUTPUTS \ diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/Lit2DCommon.hlsl b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/Lit2DCommon.hlsl index a1774a151ef..7caee681621 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/Lit2DCommon.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/Lit2DCommon.hlsl @@ -10,6 +10,9 @@ UNITY_TEXTURE_STREAMING_DEBUG_VARS_FOR_TEX(_MainTex); TEXTURE2D(_MaskTex); SAMPLER(sampler_MaskTex); +TEXTURE2D(_NormalMap); +SAMPLER(sampler_NormalMap); + Varyings CommonLitVertex(Attributes input) { Varyings o = (Varyings) 0; @@ -17,9 +20,10 @@ Varyings CommonLitVertex(Attributes input) UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o); o.positionCS = TransformObjectToHClip(input.positionOS); - #if defined(DEBUG_DISPLAY) - o.positionWS = TransformObjectToWorld(input.positionOS); - #endif +#if defined(DEBUG_DISPLAY) + o.positionWS = TransformObjectToWorld(input.positionOS); + o.normalWS = TransformObjectToWorldDir(input.normal); +#endif o.uv = input.uv; o.lightingUV = half2(ComputeScreenPos(o.positionCS / o.positionCS.w).xy); return o; @@ -29,15 +33,17 @@ half4 CommonLitFragment(Varyings input, half4 color) { const half4 main = color * SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, input.uv); const half4 mask = SAMPLE_TEXTURE2D(_MaskTex, sampler_MaskTex, input.uv); - + const half3 normalTS = UnpackNormal(SAMPLE_TEXTURE2D(_NormalMap, sampler_NormalMap, input.uv)); + SurfaceData2D surfaceData; InputData2D inputData; - InitializeSurfaceData(main.rgb, main.a, mask, surfaceData); + InitializeSurfaceData(main.rgb, main.a, mask, normalTS, surfaceData); InitializeInputData(input.uv, input.lightingUV, inputData); #if defined(DEBUG_DISPLAY) SETUP_DEBUG_TEXTURE_DATA_2D_NO_TS(inputData, input.positionWS, input.positionCS, _MainTex); + surfaceData.normalWS = input.normalWS; #endif return CombinedShapeLightShared(surfaceData, inputData); diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/NormalsRenderingShared.hlsl b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/NormalsRenderingShared.hlsl index a2c951b3d7b..281c14cd649 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/NormalsRenderingShared.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/NormalsRenderingShared.hlsl @@ -13,6 +13,4 @@ half4 NormalsRenderingShared(half4 color, half3 normalTS, half3 tangent, half3 b return normalColor; } - - #endif diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/SurfaceData2D.hlsl b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/SurfaceData2D.hlsl index 1dc12b7c649..8d7e8095851 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/SurfaceData2D.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/SurfaceData2D.hlsl @@ -8,6 +8,9 @@ struct SurfaceData2D half alpha; half4 mask; half3 normalTS; +#if defined(DEBUG_DISPLAY) + half3 normalWS; +#endif }; void InitializeSurfaceData(half3 albedo, half alpha, half4 mask, half3 normalTS, out SurfaceData2D surfaceData) From f22207307a8b8e20629b9143a1fb27a9aaf57d26 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Mon, 22 Sep 2025 09:25:10 +0000 Subject: [PATCH 22/65] [Port] [6000.3] [VFX/SG] Fix Parallax Occlusion Node --- .../Editor/Data/Nodes/UV/ParallaxOcclusionMappingNode.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UV/ParallaxOcclusionMappingNode.cs b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UV/ParallaxOcclusionMappingNode.cs index 4c5385e662e..d9a49c56168 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UV/ParallaxOcclusionMappingNode.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UV/ParallaxOcclusionMappingNode.cs @@ -10,7 +10,7 @@ namespace UnityEditor.ShaderGraph [Title("UV", "Parallax Occlusion Mapping")] [FormerName("UnityEditor.Experimental.Rendering.HDPipeline.ParallaxOcclusionMappingNode")] [FormerName("UnityEditor.Rendering.HighDefinition.ParallaxOcclusionMappingNode")] - class ParallaxOcclusionMappingNode : AbstractMaterialNode, IGeneratesBodyCode, IGeneratesFunction, IMayRequireViewDirection, IMayRequireMeshUV + class ParallaxOcclusionMappingNode : AbstractMaterialNode, IGeneratesBodyCode, IGeneratesFunction, IMayRequireViewDirection, IMayRequireMeshUV, IMayRequireTransform { public ParallaxOcclusionMappingNode() { @@ -220,6 +220,8 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo "); } + public NeededTransform[] RequiresTransform(ShaderStageCapability stageCapability = ShaderStageCapability.All) => new[] { NeededTransform.WorldToObject }; + public NeededCoordinateSpace RequiresViewDirection(ShaderStageCapability stageCapability = ShaderStageCapability.All) { return NeededCoordinateSpace.Tangent; From 92b0fa907d98edb6792f702b4ab9f833449418af Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Mon, 22 Sep 2025 09:25:10 +0000 Subject: [PATCH 23/65] [Port] [6000.3] Fix an error (pass breaks) with Volumetric Clouds Combine --- .../VolumetricClouds/HDRenderPipeline.VolumetricClouds.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/HDRenderPipeline.VolumetricClouds.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/HDRenderPipeline.VolumetricClouds.cs index 64f3effead6..7d47f55781a 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/HDRenderPipeline.VolumetricClouds.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/HDRenderPipeline.VolumetricClouds.cs @@ -612,7 +612,10 @@ internal void CombineVolumetricClouds(RenderGraph renderGraph, HDCamera hdCamera { if (!opticalFogTransmittance.IsValid()) opticalFogTransmittance = renderGraph.CreateTexture(HDRenderPipeline.GetOpticalFogTransmittanceDesc(hdCamera)); - builder.SetRenderAttachmentDepth(transparentPrepass.depthBufferPreRefraction, AccessFlags.Read); // Dummy buffer to avoid 'Setting MRT without a depth buffer is not supported' + + if (!passData.perPixelSorting) + builder.SetRenderAttachmentDepth(transparentPrepass.depthBufferPreRefraction, AccessFlags.Read); // Dummy buffer to avoid 'Setting MRT without a depth buffer is not supported' + builder.SetRenderAttachment(opticalFogTransmittance, opticalFogBufferIndex); } From 45c258f13c655b1fa28c730afc5e3d8fdb4e1182 Mon Sep 17 00:00:00 2001 From: Evergreen Date: Mon, 22 Sep 2025 09:25:10 +0000 Subject: [PATCH 24/65] terrain shadergraph documentation - 6000.3 backport --- .../Documentation~/TableOfContents.md | 1 + .../shader-graph-materials-reference.md | 1 + .../terrain-master-stack-reference.md | 145 ++++++++++++++++++ ...use-shader-graph-to-create-hdrp-shaders.md | 2 +- .../Documentation~/TableOfContents.md | 1 + .../Documentation~/Terrain-Texture-Node.md | 38 +++++ 6 files changed, 187 insertions(+), 1 deletion(-) create mode 100644 Packages/com.unity.render-pipelines.high-definition/Documentation~/terrain-master-stack-reference.md create mode 100644 Packages/com.unity.shadergraph/Documentation~/Terrain-Texture-Node.md diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/TableOfContents.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/TableOfContents.md index 2c165159c9d..437d65cd327 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/TableOfContents.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/TableOfContents.md @@ -434,6 +434,7 @@ * [Canvas Master Stack reference](canvas-master-stack-reference.md) * [Fog Volume Master Stack reference](fog-volume-master-stack-reference.md) * [Water Master Stack reference](master-stack-water.md) + * [Terrain Master Stack reference](terrain-master-stack-reference.md) * [Environmental effects reference](reference-environmental-effects.md) * [Sky reference](reference-sky.md) * [Gradient Sky Volume Override reference](gradient-sky-volume-override-reference.md) diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/shader-graph-materials-reference.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/shader-graph-materials-reference.md index 439f0936bc3..d0e3963d7d8 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/shader-graph-materials-reference.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/shader-graph-materials-reference.md @@ -16,6 +16,7 @@ Learn about the properties and behavior of HDRP Shader Graph contexts and master |[StackLit Master Stack reference](stacklit-master-stack-reference.md)|Properties and options in the StackLit master stack.| |[Canvas Master Stack reference](canvas-master-stack-reference.md)|Properties and options in the Canvas master stack.| |[Fog Volume Master Stack reference](fog-volume-master-stack-reference.md)|Properties and options in the Fog Volume master stack.| +|[Terrain Master Stack reference](terrain-master-stack-reference.md)|Properties and options in the Terrain master stack.| ## Additional resources diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/terrain-master-stack-reference.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/terrain-master-stack-reference.md new file mode 100644 index 00000000000..5861160479f --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/terrain-master-stack-reference.md @@ -0,0 +1,145 @@ +# Terrain Master Stack reference + +You can modify the properties of a Terrain shader graph in the Terrain Master Stack. + +## Feature support + +The Terrain Master Stack in HDRP doesn't support the following features: + +- Ray tracing +- Path tracing + +## Terrain shader passes + +Some properties might not work as expected, because the terrain system adds two additional shader passes when it generates a terrain shader. The passes are the following: + +- Basemap Gen, which renders the shader graph on a quad to create a low-resolution baked version. As a result, the **Position** and **Normal (Tangent Space)** values are 2D during this pass. +- Basemap Rendering, which uses a built-in shader and the texture Basemap Gen generates. The **Position** Block has no affect on this pass. + +## Contexts + +[!include[](snippets/master-stacks-contexts-intro.md)] + +### Vertex Context + +#### Default + +When you create a new Terrain Master Stack, the Vertex Context contains the following Blocks by default: + + + + + + + + + +[!include[](snippets/shader-graph-blocks/vertex-position.md)] + +
PropertyDescriptionSetting DependencyDefault Value
+ +#### Relevant + +The vertex position passed to the vertex context does not have an effect on the [Basemap rendering pass](#basemap-passes). + +### Fragment Context + +#### Default + +When you create a new Terrain Master Stack, the Fragment Context contains the following Blocks by default: + + + + + + + + + +[!include[](snippets/shader-graph-blocks/base-color.md)] +[!include[](snippets/shader-graph-blocks/normal-tangent-space.md)] +[!include[](snippets/shader-graph-blocks/metallic.md)] +[!include[](snippets/shader-graph-blocks/emission.md)] +[!include[](snippets/shader-graph-blocks/smoothness.md)] +[!include[](snippets/shader-graph-blocks/ambient-occlusion.md)] + +
PropertyDescriptionSetting DependencyDefault Value
+ +#### Relevant + +Depending on the [Graph Settings](#graph-settings) you use, Shader Graph can add the following Blocks to the Fragment Context: + + + + + + + + + +[!include[](snippets/shader-graph-blocks/alpha-clip-threshold.md)] +[!include[](snippets/shader-graph-blocks/baked-back-gi.md)] +[!include[](snippets/shader-graph-blocks/baked-gi.md)] +[!include[](snippets/shader-graph-blocks/depth-offset.md)] +[!include[](snippets/shader-graph-blocks/diffusion-profile.md)] +[!include[](snippets/shader-graph-blocks/normal-object-space.md)] +[!include[](snippets/shader-graph-blocks/normal-world-space.md)] +[!include[](snippets/shader-graph-blocks/specular-aa-screen-space-variance.md)] +[!include[](snippets/shader-graph-blocks/specular-aa-threshold.md)] +[!include[](snippets/shader-graph-blocks/specular-occlusion.md)] +[!include[](snippets/shader-graph-blocks/subsurface-mask.md)] + +
PropertyDescriptionSetting DependencyDefault Value
+ +## Graph Settings + +### Surface Options + + + + + + + + + + + + +[!include[](snippets/shader-properties/surface-options/rendering-pass.md)] +[!include[](snippets/shader-properties/surface-options/fragment-normal-space.md)] +[!include[](snippets/shader-properties/surface-options/alpha-clipping.md)] +[!include[](snippets/shader-properties/surface-options/ss-depth-offset.md)] +[!include[](snippets/shader-properties/surface-options/receive-decals.md)] +[!include[](snippets/shader-properties/surface-options/receive-ssr.md)] + + +
PropertyOptionSub-optionDescription
+ + + +### Advanced Options + + + + + + + +[!include[](snippets/shader-properties/advanced-options/specular-occlusion-mode.md)] +[!include[](snippets/shader-properties/advanced-options/override-baked-gi.md)] +[!include[](snippets/shader-properties/advanced-options/support-lod-crossfade.md)] +[!include[](snippets/shader-properties/advanced-options/add-precomputed-velocity.md)] + +
PropertyDescription
+ +### Other top level settings + + + + + + +[!include[](snippets/shader-properties/support-high-quality-line-rendering.md)] + +
PropertyDescription
\ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.high-definition/Documentation~/use-shader-graph-to-create-hdrp-shaders.md b/Packages/com.unity.render-pipelines.high-definition/Documentation~/use-shader-graph-to-create-hdrp-shaders.md index b9cdb4d1ee3..704a97bdfb0 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Documentation~/use-shader-graph-to-create-hdrp-shaders.md +++ b/Packages/com.unity.render-pipelines.high-definition/Documentation~/use-shader-graph-to-create-hdrp-shaders.md @@ -15,4 +15,4 @@ Each material type page contains information on which settings the material type * [StackLit Master Stack](stacklit-master-stack-reference.md) * [Unlit Master Stack](unlit-master-stack-reference.md) * [Canvas Master Stack](canvas-master-stack-reference.md) - +* [Terrain Master Stack](terrain-master-stack-reference.md) diff --git a/Packages/com.unity.shadergraph/Documentation~/TableOfContents.md b/Packages/com.unity.shadergraph/Documentation~/TableOfContents.md index 4e33e311ac2..caf762d022f 100644 --- a/Packages/com.unity.shadergraph/Documentation~/TableOfContents.md +++ b/Packages/com.unity.shadergraph/Documentation~/TableOfContents.md @@ -300,6 +300,7 @@ * [Parallax Occlusion Mapping](Parallax-Occlusion-Mapping-Node.md) * [Block Nodes](Block-Node.md) * [Built In Blocks](Built-In-Blocks.md) + * [Terrain Texture](Terrain-Texture-Node.md) * [Samples](ShaderGraph-Samples.md) * [Feature Examples](Shader-Graph-Sample-Feature-Examples.md) * [Production Ready Shaders](Shader-Graph-Sample-Production-Ready.md) diff --git a/Packages/com.unity.shadergraph/Documentation~/Terrain-Texture-Node.md b/Packages/com.unity.shadergraph/Documentation~/Terrain-Texture-Node.md new file mode 100644 index 00000000000..a0df4a8b379 --- /dev/null +++ b/Packages/com.unity.shadergraph/Documentation~/Terrain-Texture-Node.md @@ -0,0 +1,38 @@ +# Terrain Texture Node + +## Description + +Explore the properties in the Terrain Texture node to sample textures, masks and other properties from the Terrain Layers of a terrain material, so you can adjust them and input them into the Contexts of a Terrain Lit shader graph. + +The Terrain Texture node is compatible only with Terrain Lit shader graphs. You can't use it with other types of shaders. + +For more information about how Unity creates render passes for terrain layers, refer to [Terrain Layers](https://docs.unity3d.com/Manual/class-TerrainLayer.html). + +## Ports + +| Name | Direction | Type | Description | +|:------------ |:-------------|:-----|:---| +| Index | Input | float | Sets the Terrain Layer to input. For more information, refer to [Terrain layers](https://docs.unity3d.com/Manual/class-TerrainLayer.html).

If you set the [Controls](#Controls) dropdown to **Layer Mask**, you can only use a value of 0, or 1 if you use the Universal Render Pipeline (URP) and the terrain has 5 or more Terrain Layers.

The value is a float literal, which means the value must be known at shader compile time. Use a float value, or a float property from the Blackboard in a subgraph. You can't use a float property from the Blackboard in the main graph, or a float output from another node. | +| Texture | Output | Texture | The texture from the Terrain Layer. This output depends on the texture you select in the [Controls](#controls). | +| Available | Output | boolean | Whether the texture or mask you select in the [Controls](#Controls) is present in the Terrain Layer. The value is also `false` if the **Index** value is out of bounds. | +| Normal Scale | Output | float | The scaling factor for the normal values in the normal map. For more information, refer to [Terrain layers](https://docs.unity3d.com/Manual/class-TerrainLayer.html). | +| Metallic Default | Output | float | The overall metallic value of the Terrain Layer. | +| Smoothness Default | Output | float | The overall smoothness value of the Terrain Layer. | +| Color Tint | Output | float3 | The **Color Tint** value from the Terrain Layer. | +| Opacity As Density | Output | float | Whether the Terrain Layer renders using the value stored in the alpha channel of the diffuse texture, instead of the usual splatmap weight or the height value from the mask map. For more information, refer to [Terrain Layers](https://docs.unity3d.com/Manual/class-TerrainLayer.html). | +| Channel Remapping Offset | Output | float4 | The offsets Unity uses to remap values in each channel of the mask map texture. For more information, refer to [Terrain Layers](https://docs.unity3d.com/Manual/class-TerrainLayer.html). | +| Channel Remapping Scale | Output | float4 | The scales Unity uses to remap values in each channel of the mask map texture. For more information, refer to [Terrain Layers](https://docs.unity3d.com/Manual/class-TerrainLayer.html). | + +## Controls + +The dropdown in the Terrain Texture node sets the texture or mask that the node inputs. + +| **Value** | **Description** | +|----------|--------------| +|**Diffuse Map**|Sets the input as the diffuse texture of the **Input** Terrain Layer.| +|**Normal Map**|Sets the input as the normal map of the **Input** Terrain Layer. If there's no normal map in the Terrain Layer, the node uses normals pointing upwards.| +|**Mask Map**|Sets the input as the mask map of the **Input** Terrain Layer. The channels are usually the following:
  • Red: Metallic
  • Green: Ambient occlusion
  • Blue: Height
  • Alpha: Smoothness
| +|**Layer Mask**|Sets the input as the masks Unity applies to the output of the Terrain Layers.| +|**Holes**|Sets the input as the holes texture in the **Input** Terrain Layer. The holes are in the red channel.| + +For more information, refer to [Terrain Layers](https://docs.unity3d.com/Manual/class-TerrainLayer.html). \ No newline at end of file From 96de1dd1648609ec4b15fe19216f5b53fa78725a Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Mon, 22 Sep 2025 19:10:06 +0000 Subject: [PATCH 25/65] [Port] [6000.3] Remove the assumption that all or none fog keywords are declared --- .../ShaderLibrary/Lighting.hlsl | 29 ++- .../ShaderVariablesFunctions.hlsl | 167 ++++++++++++------ .../Shaders/UnlitForwardPass.hlsl | 21 ++- 3 files changed, 156 insertions(+), 61 deletions(-) diff --git a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl index cb0c01640fd..f831f59f0f4 100644 --- a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl +++ b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl @@ -207,14 +207,29 @@ half4 CalculateFinalColor(LightingData lightingData, half3 albedo, half alpha, f { half fogFactor = 0; #if defined(_FOG_FRAGMENT) + bool anyFogEnabled = false; + #if defined(FOG_LINEAR_KEYWORD_DECLARED) - if (FOG_LINEAR || FOG_EXP || FOG_EXP2) - { - float viewZ = -fogCoord; - float nearToFarZ = max(viewZ - _ProjectionParams.y, 0); - fogFactor = ComputeFogFactorZ0ToFar(nearToFarZ); - } - #endif // defined(FOG_LINEAR_KEYWORD_DECLARED) + if (FOG_LINEAR) + anyFogEnabled = true; + #endif + + #if defined(FOG_EXP_KEYWORD_DECLARED) + if (FOG_EXP) + anyFogEnabled = true; + #endif + + #if defined(FOG_EXP2_KEYWORD_DECLARED) + if (FOG_EXP2) + anyFogEnabled = true; + #endif + + if (anyFogEnabled) + { + float viewZ = -fogCoord; + float nearToFarZ = max(viewZ - _ProjectionParams.y, 0); + fogFactor = ComputeFogFactorZ0ToFar(nearToFarZ); + } #else // #if defined(_FOG_FRAGMENT) fogFactor = fogCoord; #endif // #if defined(_FOG_FRAGMENT) diff --git a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl index 841eac22f9f..8dd6e25d313 100644 --- a/Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl +++ b/Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderVariablesFunctions.hlsl @@ -321,21 +321,29 @@ real ComputeFogFactorZ0ToFar(float z) float fogFactor = saturate(z * unity_FogParams.z + unity_FogParams.w); return real(fogFactor); } - else if (FOG_EXP || FOG_EXP2) + #endif + + #if defined(FOG_EXP_KEYWORD_DECLARED) + if (FOG_EXP) { // factor = exp(-(density*z)^2) // -density * z computed at vertex return real(unity_FogParams.x * z); } - else + #endif + + #if defined(FOG_EXP2_KEYWORD_DECLARED) + if (FOG_EXP2) { - // This process is necessary to avoid errors in iOS graphics tests - // when using the dynamic branching of fog keywords. - return real(0.0); + // factor = exp(-(density*z)^2) + // -density * z computed at vertex + return real(unity_FogParams.x * z); } - #else // #if defined(FOG_LINEAR_KEYWORD_DECLARED) + #endif + + // This process is necessary to avoid errors in iOS graphics tests + // when using the dynamic branching of fog keywords. return real(0.0); - #endif // #if defined(FOG_LINEAR_KEYWORD_DECLARED) } real ComputeFogFactor(float zPositionCS) @@ -346,26 +354,32 @@ real ComputeFogFactor(float zPositionCS) half ComputeFogIntensity(half fogFactor) { - half fogIntensity = half(0.0); - #if defined(FOG_LINEAR_KEYWORD_DECLARED) + #if defined(FOG_EXP_KEYWORD_DECLARED) if (FOG_EXP) { // factor = exp(-density*z) // fogFactor = density*z compute at vertex - fogIntensity = saturate(exp2(-fogFactor)); + return saturate(exp2(-fogFactor)); } - else if (FOG_EXP2) + #endif + + #if defined(FOG_EXP2_KEYWORD_DECLARED) + if (FOG_EXP2) { // factor = exp(-(density*z)^2) // fogFactor = density*z compute at vertex - fogIntensity = saturate(exp2(-fogFactor * fogFactor)); + return saturate(exp2(-fogFactor * fogFactor)); } - else if (FOG_LINEAR) + #endif + + #if defined(FOG_LINEAR_KEYWORD_DECLARED) + if (FOG_LINEAR) { - fogIntensity = fogFactor; + return fogFactor; } - #endif // #if defined(FOG_LINEAR_KEYWORD_DECLARED - return fogIntensity; + #endif + + return 0.0; } // Force enable fog fragment shader evaluation @@ -374,8 +388,24 @@ real InitializeInputDataFog(float4 positionWS, real vertFogFactor) { real fogFactor = 0.0; #if defined(_FOG_FRAGMENT) + bool anyFogEnabled = false; + #if defined(FOG_LINEAR_KEYWORD_DECLARED) - if (FOG_LINEAR || FOG_EXP || FOG_EXP2) + if (FOG_LINEAR) + anyFogEnabled = true; + #endif + + #if defined(FOG_EXP_KEYWORD_DECLARED) + if (FOG_EXP) + anyFogEnabled = true; + #endif + + #if defined(FOG_EXP2_KEYWORD_DECLARED) + if (FOG_EXP2) + anyFogEnabled = true; + #endif + + if (anyFogEnabled) { // Compiler eliminates unused math --> matrix.column_z * vec float viewZ = -(mul(UNITY_MATRIX_V, positionWS).z); @@ -383,7 +413,6 @@ real InitializeInputDataFog(float4 positionWS, real vertFogFactor) float nearToFarZ = max(viewZ - _ProjectionParams.y, 0); fogFactor = ComputeFogFactorZ0ToFar(nearToFarZ); } - #endif // #if defined(FOG_LINEAR_KEYWORD_DECLARED) #else // #if defined(_FOG_FRAGMENT) fogFactor = vertFogFactor; #endif // #if defined(_FOG_FRAGMENT) @@ -392,53 +421,89 @@ real InitializeInputDataFog(float4 positionWS, real vertFogFactor) float ComputeFogIntensity(float fogFactor) { - float fogIntensity = 0.0; + #if defined(FOG_EXP_KEYWORD_DECLARED) + if (FOG_EXP) + { + // factor = exp(-density*z) + // fogFactor = density*z compute at vertex + return saturate(exp2(-fogFactor)); + } + #endif + + #if defined(FOG_EXP2_KEYWORD_DECLARED) + if (FOG_EXP2) + { + // factor = exp(-(density*z)^2) + // fogFactor = density*z compute at vertex + return saturate(exp2(-fogFactor * fogFactor)); + } + #endif + #if defined(FOG_LINEAR_KEYWORD_DECLARED) - if (FOG_EXP) - { - // factor = exp(-density*z) - // fogFactor = density*z compute at vertex - fogIntensity = saturate(exp2(-fogFactor)); - } - else if (FOG_EXP2) - { - // factor = exp(-(density*z)^2) - // fogFactor = density*z compute at vertex - fogIntensity = saturate(exp2(-fogFactor * fogFactor)); - } - else if (FOG_LINEAR) - { - fogIntensity = fogFactor; - } - #endif // #if defined(FOG_LINEAR_KEYWORD_DECLARED) - return fogIntensity; + if (FOG_LINEAR) + { + return fogFactor; + } + #endif + + return 0.0; } half3 MixFogColor(half3 fragColor, half3 fogColor, half fogFactor) { + bool anyFogEnabled = false; + #if defined(FOG_LINEAR_KEYWORD_DECLARED) - if (FOG_LINEAR || FOG_EXP || FOG_EXP2) - { - half fogIntensity = ComputeFogIntensity(fogFactor); - // Workaround for UUM-61728: using a manual lerp to avoid rendering artifacts on some GPUs when Vulkan is used - fragColor = fragColor * fogIntensity + fogColor * (half(1.0) - fogIntensity); - } - #endif // #if defined(FOG_LINEAR_KEYWORD_DECLARED) + if (FOG_LINEAR) + anyFogEnabled = true; + #endif + + #if defined(FOG_EXP_KEYWORD_DECLARED) + if (FOG_EXP) + anyFogEnabled = true; + #endif + + #if defined(FOG_EXP2_KEYWORD_DECLARED) + if (FOG_EXP2) + anyFogEnabled = true; + #endif + + if (anyFogEnabled) + { + half fogIntensity = ComputeFogIntensity(fogFactor); + // Workaround for UUM-61728: using a manual lerp to avoid rendering artifacts on some GPUs when Vulkan is used + fragColor = fragColor * fogIntensity + fogColor * (half(1.0) - fogIntensity); + } return fragColor; } float3 MixFogColor(float3 fragColor, float3 fogColor, float fogFactor) { + bool anyFogEnabled = false; + #if defined(FOG_LINEAR_KEYWORD_DECLARED) - if (FOG_LINEAR || FOG_EXP || FOG_EXP2) + if (FOG_LINEAR) + anyFogEnabled = true; + #endif + + #if defined(FOG_EXP_KEYWORD_DECLARED) + if (FOG_EXP) + anyFogEnabled = true; + #endif + + #if defined(FOG_EXP2_KEYWORD_DECLARED) + if (FOG_EXP2) + anyFogEnabled = true; + #endif + + if (anyFogEnabled) + { + if (IsFogEnabled()) { - if (IsFogEnabled()) - { - float fogIntensity = ComputeFogIntensity(fogFactor); - fragColor = lerp(fogColor, fragColor, fogIntensity); - } + float fogIntensity = ComputeFogIntensity(fogFactor); + fragColor = lerp(fogColor, fragColor, fogIntensity); } - #endif // #if defined(FOG_LINEAR_KEYWORD_DECLARED) + } return fragColor; } diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl b/Packages/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl index 2a6f1421fa6..fa449987687 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Shaders/UnlitForwardPass.hlsl @@ -134,14 +134,29 @@ void UnlitPassFragment( half fogFactor = 0; #if defined(_FOG_FRAGMENT) -#if defined(FOG_LINEAR_KEYWORD_DECLARED) - if (FOG_LINEAR || FOG_EXP || FOG_EXP2) + bool anyFogEnabled = false; + + #if defined(FOG_LINEAR_KEYWORD_DECLARED) + if (FOG_LINEAR) + anyFogEnabled = true; + #endif + + #if defined(FOG_EXP_KEYWORD_DECLARED) + if (FOG_EXP) + anyFogEnabled = true; + #endif + + #if defined(FOG_EXP2_KEYWORD_DECLARED) + if (FOG_EXP2) + anyFogEnabled = true; + #endif + + if (anyFogEnabled) { float viewZ = -input.fogCoord; float nearToFarZ = max(viewZ - _ProjectionParams.y, 0); fogFactor = ComputeFogFactorZ0ToFar(nearToFarZ); } -#endif // #if defined(FOG_LINEAR_KEYWORD_DECLARED) #else // #if defined(_FOG_FRAGMENT) fogFactor = input.fogCoord; #endif // #if defined(_FOG_FRAGMENT) From 3f50327d3d2715edfc56a084a362e6ba9d3726c6 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Tue, 23 Sep 2025 16:01:20 +0000 Subject: [PATCH 26/65] [Port] [6000.3] URP fix missing intermediate texture --- .../Runtime/UniversalRenderer.cs | 7 +++-- .../Runtime/UniversalRendererRenderGraph.cs | 31 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs index 496256d2e53..7d5d407fce8 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRenderer.cs @@ -2036,13 +2036,14 @@ static bool RequiresIntermediateColorTexture(UniversalCameraData cameraData, in isCompatibleBackbufferTextureDimension = cameraData.xr.renderTargetDesc.dimension == cameraTargetDescriptor.dimension; } #endif - bool requiresBlitForOffscreenCamera = applyPostProcessing || cameraData.requiresOpaqueTexture || requiresExplicitMsaaResolve || !cameraData.isDefaultViewport; + bool requiresOpaqueTexture = cameraData.requiresOpaqueTexture || renderPassInputs.requiresColorTexture; + + bool requiresBlitForOffscreenCamera = applyPostProcessing || requiresOpaqueTexture || requiresExplicitMsaaResolve || !cameraData.isDefaultViewport; if (isOffscreenRender) return requiresBlitForOffscreenCamera; return requiresBlitForOffscreenCamera || isScaledRender || isScalableBufferManagerUsed || cameraData.isHdrEnabled || - !isCompatibleBackbufferTextureDimension || isCapturing || cameraData.requireSrgbConversion || - renderPassInputs.requiresColorTexture; + !isCompatibleBackbufferTextureDimension || isCapturing || cameraData.requireSrgbConversion; } // There is two ways to control the dynamic resolution in URP: diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs index 39e75d879a2..0496e62f42f 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs @@ -336,11 +336,10 @@ private void UpdateCameraHistory(UniversalCameraData cameraData) const string _CameraColorUpscaled = "_CameraColorUpscaled"; const string _CameraColorAfterPostProcessingName = "_CameraColorAfterPostProcessing"; - void CreateRenderGraphCameraRenderTargets(RenderGraph renderGraph, bool isCameraTargetOffscreenDepth, in RenderPassInputSummary renderPassInputs, bool requireDepthTexture, bool requireDepthPrepass, bool applyPostProcessing) + void CreateRenderGraphCameraRenderTargets(RenderGraph renderGraph, bool isCameraTargetOffscreenDepth, bool requireIntermediateAttachments, bool depthTextureIsDepthFormat) { UniversalResourceData resourceData = frameData.Get(); UniversalCameraData cameraData = frameData.Get(); - UniversalPostProcessingData postProcessingData = frameData.Get(); var clearCameraParams = GetClearCameraParams(cameraData); @@ -348,23 +347,13 @@ void CreateRenderGraphCameraRenderTargets(RenderGraph renderGraph, bool isCamera SetupTargetHandles(cameraData); // Gather render pass history requests and update history textures. - UpdateCameraHistory(cameraData); - - // Only use a depth format when we do a prepass directly the cameraDepthTexture. If we do depth priming (ie, prepass to the activeCameraDepth), we don't do a prepass to the texture. Instead, we do a copy from the primed attachment. - bool prepassToCameraDepthTexture = requireDepthPrepass && !useDepthPriming; - bool depthTextureIsDepthFormat = prepassToCameraDepthTexture; - bool requireCopyFromDepth = requireDepthTexture && !prepassToCameraDepthTexture; - - // We configure this for the first camera of the stack and overlay camera will reuse create color/depth var - // to pick the correct target, as if there is an intermediate texture, overlay cam should use them - if (cameraData.renderType == CameraRenderType.Base) - m_RequiresIntermediateAttachments = RequiresIntermediateAttachments(cameraData, in renderPassInputs, requireCopyFromDepth, applyPostProcessing); + UpdateCameraHistory(cameraData); // Import backbuffers to Render Graph ImportBackBuffers(renderGraph, cameraData, clearCameraParams.clearValue, isCameraTargetOffscreenDepth); // If required, create intermediate color attachment where URP will render before final blit - if (m_RequiresIntermediateAttachments && !isCameraTargetOffscreenDepth) + if (requireIntermediateAttachments && !isCameraTargetOffscreenDepth) { CreateIntermediateCameraColorAttachment(renderGraph, cameraData, clearCameraParams.mustClearColor, clearCameraParams.clearValue); } @@ -374,7 +363,7 @@ void CreateRenderGraphCameraRenderTargets(RenderGraph renderGraph, bool isCamera } // If required, create intermediate depth attachment - if (m_RequiresIntermediateAttachments) + if (requireIntermediateAttachments) { CreateIntermediateCameraDepthAttachment(renderGraph, cameraData, clearCameraParams.mustClearDepth, clearCameraParams.clearValue, depthTextureIsDepthFormat); } @@ -605,7 +594,17 @@ internal override void OnRecordRenderGraph(RenderGraph renderGraph, ScriptableRe bool requirePrepass = requirePrepassForTextures || useDepthPriming; - CreateRenderGraphCameraRenderTargets(renderGraph, isCameraTargetOffscreenDepth, renderPassInputs, requireDepthTexture, requirePrepass, applyPostProcessing); + // Only use a depth format when we do a prepass directly the cameraDepthTexture. If we do depth priming (ie, prepass to the activeCameraDepth), we don't do a prepass to the texture. Instead, we do a copy from the primed attachment. + bool prepassToCameraDepthTexture = requirePrepass && !useDepthPriming; + bool depthTextureIsDepthFormat = prepassToCameraDepthTexture; + bool requireCopyFromDepth = requireDepthTexture && !prepassToCameraDepthTexture; + + // We configure this for the first camera of the stack and overlay camera will reuse create color/depth var + // to pick the correct target, as if there is an intermediate texture, overlay cam should use them + if (cameraData.renderType == CameraRenderType.Base) + m_RequiresIntermediateAttachments = RequiresIntermediateAttachments(cameraData, in renderPassInputs, requireCopyFromDepth, applyPostProcessing); + + CreateRenderGraphCameraRenderTargets(renderGraph, isCameraTargetOffscreenDepth, m_RequiresIntermediateAttachments, depthTextureIsDepthFormat); if (DebugHandler != null) DebugHandler.Setup(renderGraph, cameraData.isPreviewCamera); From 62c4b356f7e0e8faa57f267bc62d1c8719449080 Mon Sep 17 00:00:00 2001 From: Alexandre Thibodeau Date: Tue, 23 Sep 2025 16:01:20 +0000 Subject: [PATCH 27/65] Fixed keyword support for UI Toolkit custom shaders --- .../Data/Nodes/UI/DefaultBitmapTextNode.cs | 2 +- .../Data/Nodes/UI/DefaultGradientNode.cs | 2 +- .../Data/Nodes/UI/DefaultSDFTextNode.cs | 2 +- .../Editor/Data/Nodes/UI/DefaultSolidNode.cs | 2 +- .../Data/Nodes/UI/DefaultTextureNode.cs | 2 +- .../Editor/Data/Nodes/UI/IsForcedGammaNode.cs | 37 + .../Data/Nodes/UI/IsForcedGammaNode.cs.meta | 2 + .../Data/Nodes/UI/RenderTypeBranchNode.cs | 8 +- .../Editor/Data/Nodes/UI/RenderTypeNode.cs | 10 +- .../Generation/Targets/UITK/UISubTarget.cs | 64 +- .../Scripts/Runtime/UniversalGraphicsTests.cs | 30 +- .../ShaderGraph/Assets/Scenes/UITKNodes.unity | 105 +- .../Graphs/UITK/Shader Graphs_UITKEmpty.mat | 2 +- .../Graphs/UITK/UITKForceGamma.shadergraph | 1084 ++++++++++++ .../UITK/UITKForceGamma.shadergraph.meta | 18 + .../Prefabs/OverlayUITestSettings.prefab | 67 + .../Prefabs/OverlayUITestSettings.prefab.meta | 7 + .../Scenes/360_Shader_Graphs_UITK.unity | 364 +--- .../PanelSettings360.asset | 56 + .../PanelSettings360.asset.meta | 8 + .../360_Shader_Graphs_UITK/times Bitmap.asset | 1530 +++++++++++++++++ .../Assets/Scenes/361_UIToolkit_Blending.meta | 8 + .../Scenes/361_UIToolkit_Blending.unity | 731 ++++++++ .../Scenes/361_UIToolkit_Blending.unity.meta | 7 + .../361-Custom-Basic.shadergraph | 492 ++++++ .../361-Custom-Basic.shadergraph.meta | 18 + .../361-Custom-Expanded.shadergraph | 979 +++++++++++ .../361-Custom-Expanded.shadergraph.meta | 18 + .../Assets/Scenes/362_UIToolkit_Keywords.meta | 8 + .../Scenes/362_UIToolkit_Keywords.unity | 848 +++++++++ .../Scenes/362_UIToolkit_Keywords.unity.meta | 7 + .../362-Custom-Basic.shadergraph | 492 ++++++ .../362-Custom-Basic.shadergraph.meta | 18 + ...ustom-Expanded-OverrideTexture.shadergraph | 1176 +++++++++++++ ...-Expanded-OverrideTexture.shadergraph.meta | 18 + .../362-Custom-Expanded.shadergraph | 979 +++++++++++ .../362-Custom-Expanded.shadergraph.meta | 18 + .../Packages/manifest.json | 3 +- .../ProjectSettings/EditorBuildSettings.asset | 6 + 39 files changed, 8851 insertions(+), 377 deletions(-) create mode 100644 Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/IsForcedGammaNode.cs create mode 100644 Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/IsForcedGammaNode.cs.meta create mode 100644 Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKForceGamma.shadergraph create mode 100644 Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKForceGamma.shadergraph.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/Prefabs/OverlayUITestSettings.prefab create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/Prefabs/OverlayUITestSettings.prefab.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/PanelSettings360.asset create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/PanelSettings360.asset.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending.unity create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending.unity.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Basic.shadergraph create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Basic.shadergraph.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Expanded.shadergraph create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Expanded.shadergraph.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords.unity create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords.unity.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Basic.shadergraph create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Basic.shadergraph.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded-OverrideTexture.shadergraph create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded-OverrideTexture.shadergraph.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded.shadergraph create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded.shadergraph.meta diff --git a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultBitmapTextNode.cs b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultBitmapTextNode.cs index 9a6c10fc4b2..3a35c7e3ede 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultBitmapTextNode.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultBitmapTextNode.cs @@ -35,7 +35,7 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo sb.AppendLine("float4 {0} = float4(1, 1, 0, 1);", outputVarName); - sb.AppendLine("[branch] if (UIE_RENDER_TYPE_TEXT || UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeBitmapText)"); + sb.AppendLine("[branch] if (_UIE_RENDER_TYPE_TEXT || _UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeBitmapText)"); using (sb.BlockScope()) { bool hasTint = GetInputNodeFromSlot(k_InputSlotIdTint) != null; diff --git a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultGradientNode.cs b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultGradientNode.cs index 1d75f2ed181..d5c2f7420d7 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultGradientNode.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultGradientNode.cs @@ -31,7 +31,7 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo sb.AppendLine("float4 {0} = float4(1, 1, 0, 1);", outputVarName); - sb.AppendLine("[branch] if (UIE_RENDER_TYPE_SOLID || UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeSvgGradient)"); + sb.AppendLine("[branch] if (_UIE_RENDER_TYPE_GRADIENT || _UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeSvgGradient)"); using (sb.BlockScope()) { sb.AppendLine("SvgGradientFragInput Unity_UIE_RenderTypeSwitchNode_SvgGradient_Input;"); diff --git a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultSDFTextNode.cs b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultSDFTextNode.cs index 1edad5e31d5..7b4cacd406c 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultSDFTextNode.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultSDFTextNode.cs @@ -35,7 +35,7 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo sb.AppendLine("float4 {0} = float4(1, 1, 0, 1);", outputVarName); - sb.AppendLine("[branch] if ((UIE_RENDER_TYPE_TEXT || UIE_RENDER_TYPE_ANY) && round(IN.typeTexSettings.x) == k_FragTypeSdfText)"); + sb.AppendLine("[branch] if ((_UIE_RENDER_TYPE_TEXT || _UIE_RENDER_TYPE_ANY) && round(IN.typeTexSettings.x) == k_FragTypeSdfText)"); using (sb.BlockScope()) { bool hasTint = GetInputNodeFromSlot(k_InputSlotIdTint) != null; diff --git a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultSolidNode.cs b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultSolidNode.cs index 84771fc2aa6..2f24f607cd5 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultSolidNode.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultSolidNode.cs @@ -31,7 +31,7 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo sb.AppendLine("float4 {0} = float4(1, 1, 0, 1);", outputVarName); - sb.AppendLine("[branch] if (UIE_RENDER_TYPE_SOLID || UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeSolid)"); + sb.AppendLine("[branch] if (_UIE_RENDER_TYPE_SOLID || _UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeSolid)"); using (sb.BlockScope()) { sb.AppendLine("SolidFragInput Unity_UIE_EvaluateSolidNode_Input;"); diff --git a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultTextureNode.cs b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultTextureNode.cs index b58f868188a..531da7f6509 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultTextureNode.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/DefaultTextureNode.cs @@ -38,7 +38,7 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo sb.AppendLine("float4 {0} = float4(1, 1, 0, 1);", outputVarName); - sb.AppendLine("[branch] if (UIE_RENDER_TYPE_TEXTURED || UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeTexture)"); + sb.AppendLine("[branch] if (_UIE_RENDER_TYPE_TEXTURE || _UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeTexture)"); using (sb.BlockScope()) { bool hasTint = GetInputNodeFromSlot(k_InputSlotIdTint) != null; diff --git a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/IsForcedGammaNode.cs b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/IsForcedGammaNode.cs new file mode 100644 index 00000000000..1c812950f37 --- /dev/null +++ b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/IsForcedGammaNode.cs @@ -0,0 +1,37 @@ +using UnityEditor.Graphing; +using UnityEditor.Rendering.UITK.ShaderGraph; +using UnityEngine; + +namespace UnityEditor.ShaderGraph +{ + [Title("UI", "Is Forced Gamma")] + [SubTargetFilter(typeof(IUISubTarget))] + class IsForcedGammaNode : AbstractMaterialNode, IGeneratesBodyCode, IMayRequireUITK + { + const int k_OutputSlotId = 0; + const string k_OutputSlotName = "Out"; + + public IsForcedGammaNode() + { + name = "Is Forced Gamma"; + synonyms = new string[] { }; + UpdateNodeAfterDeserialization(); + } + + public sealed override void UpdateNodeAfterDeserialization() + { + AddSlot(new BooleanMaterialSlot(k_OutputSlotId, k_OutputSlotName, k_OutputSlotName, SlotType.Output, true)); + RemoveSlotsNameNotMatching(new[] { k_OutputSlotId }); + } + + public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMode) + { + sb.AppendLine("bool {0} = _UIE_FORCE_GAMMA;", GetVariableNameForSlot(k_OutputSlotId)); + } + + public bool RequiresUITK(ShaderStageCapability stageCapability) + { + return true; + } + } +} diff --git a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/IsForcedGammaNode.cs.meta b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/IsForcedGammaNode.cs.meta new file mode 100644 index 00000000000..3a958fbe33a --- /dev/null +++ b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/IsForcedGammaNode.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1b7813ff9ac575f4d993f1b44f854eab \ No newline at end of file diff --git a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/RenderTypeBranchNode.cs b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/RenderTypeBranchNode.cs index 655c81b8316..6c2cffbc114 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/RenderTypeBranchNode.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/RenderTypeBranchNode.cs @@ -52,7 +52,7 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo sb.AppendLine("float3 {0} = float3(0, 0, 0);", outputVarNameColor); sb.AppendLine("float {0} = 1.0;", outputVarNameAlpha); - sb.AppendLine("[branch] if (UIE_RENDER_TYPE_SOLID || UIE_RENDER_TYPE_ANY && TestType(IN.typeTexSettings.x, k_FragTypeSolid))"); + sb.AppendLine("[branch] if (_UIE_RENDER_TYPE_SOLID || _UIE_RENDER_TYPE_ANY && TestType(IN.typeTexSettings.x, k_FragTypeSolid))"); using (sb.BlockScope()) { if (GetInputNodeFromSlot(k_InputSlotIdSolid) != null) @@ -73,7 +73,7 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo sb.AppendLine("{0} = Unity_UIE_RenderTypeSwitchNode_Output.color.a;", outputVarNameAlpha); } } - sb.AppendLine("else [branch] if (UIE_RENDER_TYPE_TEXTURED || UIE_RENDER_TYPE_ANY && TestType(IN.typeTexSettings.x, k_FragTypeTexture))"); + sb.AppendLine("else [branch] if (_UIE_RENDER_TYPE_TEXTURE || _UIE_RENDER_TYPE_ANY && TestType(IN.typeTexSettings.x, k_FragTypeTexture))"); using (sb.BlockScope()) { if (GetInputNodeFromSlot(k_InputSlotIdTexture) != null) @@ -95,7 +95,7 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo sb.AppendLine("{0} = Unity_UIE_RenderTypeSwitchNode_Output.color.a;", outputVarNameAlpha); } } - sb.AppendLine("else [branch] if ((UIE_RENDER_TYPE_TEXT || UIE_RENDER_TYPE_ANY) && TestType(IN.typeTexSettings.x, k_FragTypeSdfText))"); + sb.AppendLine("else [branch] if ((_UIE_RENDER_TYPE_TEXT || _UIE_RENDER_TYPE_ANY) && TestType(IN.typeTexSettings.x, k_FragTypeSdfText))"); using (sb.BlockScope()) { if (GetInputNodeFromSlot(k_InputSlotIdSdfText) != null) @@ -117,7 +117,7 @@ public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMo sb.AppendLine("{0} = Unity_UIE_RenderTypeSwitchNode_Output.color.a;", outputVarNameAlpha); } } - sb.AppendLine("else [branch] if (UIE_RENDER_TYPE_TEXT || UIE_RENDER_TYPE_ANY && TestType(IN.typeTexSettings.x, k_FragTypeBitmapText))"); + sb.AppendLine("else [branch] if (_UIE_RENDER_TYPE_TEXT || _UIE_RENDER_TYPE_ANY && TestType(IN.typeTexSettings.x, k_FragTypeBitmapText))"); using (sb.BlockScope()) { if (GetInputNodeFromSlot(k_InputSlotIdBitmapText) != null) diff --git a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/RenderTypeNode.cs b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/RenderTypeNode.cs index c2194e85782..965f96a56b4 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/RenderTypeNode.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Nodes/UI/RenderTypeNode.cs @@ -39,11 +39,11 @@ public sealed override void UpdateNodeAfterDeserialization() public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMode) { - sb.AppendLine("bool {0} = UIE_RENDER_TYPE_SOLID || UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeSolid;", GetVariableNameForSlot(k_OutputSlotIdSolid)); - sb.AppendLine("bool {0} = UIE_RENDER_TYPE_TEXTURED || UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeTexture;", GetVariableNameForSlot(k_OutputSlotIdTexture)); - sb.AppendLine("bool {0} = (UIE_RENDER_TYPE_TEXT || UIE_RENDER_TYPE_ANY) && round(IN.typeTexSettings.x) == k_FragTypeSdfText;", GetVariableNameForSlot(k_OutputSlotIdSDFText)); - sb.AppendLine("bool {0} = (UIE_RENDER_TYPE_TEXT || UIE_RENDER_TYPE_ANY) && round(IN.typeTexSettings.x) == k_FragTypeBitmapText;", GetVariableNameForSlot(k_OutputSlotIdBitmapText)); - sb.AppendLine("bool {0} = UIE_RENDER_TYPE_SVG_GRADIENT || UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeSvgGradient;", GetVariableNameForSlot(k_OutputSlotIdGradient)); + sb.AppendLine("bool {0} = _UIE_RENDER_TYPE_SOLID || _UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeSolid;", GetVariableNameForSlot(k_OutputSlotIdSolid)); + sb.AppendLine("bool {0} = _UIE_RENDER_TYPE_TEXTURE || _UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeTexture;", GetVariableNameForSlot(k_OutputSlotIdTexture)); + sb.AppendLine("bool {0} = (_UIE_RENDER_TYPE_TEXT || _UIE_RENDER_TYPE_ANY) && round(IN.typeTexSettings.x) == k_FragTypeSdfText;", GetVariableNameForSlot(k_OutputSlotIdSDFText)); + sb.AppendLine("bool {0} = (_UIE_RENDER_TYPE_TEXT || _UIE_RENDER_TYPE_ANY) && round(IN.typeTexSettings.x) == k_FragTypeBitmapText;", GetVariableNameForSlot(k_OutputSlotIdBitmapText)); + sb.AppendLine("bool {0} = _UIE_RENDER_TYPE_GRADIENT || _UIE_RENDER_TYPE_ANY && round(IN.typeTexSettings.x) == k_FragTypeSvgGradient;", GetVariableNameForSlot(k_OutputSlotIdGradient)); } public bool RequiresUITK(ShaderStageCapability stageCapability) diff --git a/Packages/com.unity.shadergraph/Editor/Generation/Targets/UITK/UISubTarget.cs b/Packages/com.unity.shadergraph/Editor/Generation/Targets/UITK/UISubTarget.cs index 3b3bbfe2c56..498b68cb9b1 100644 --- a/Packages/com.unity.shadergraph/Editor/Generation/Targets/UITK/UISubTarget.cs +++ b/Packages/com.unity.shadergraph/Editor/Generation/Targets/UITK/UISubTarget.cs @@ -193,12 +193,11 @@ public virtual PassDescriptor GenerateUIPassDescriptor(bool isSRP) //Conditional State renderStates = UITKRenderStates.GenerateRenderStateDeclaration(), pragmas = UITKPragmas.Default, + keywords = UITKKeywords.Default, includes = AdditionalIncludesOnly(), //definitions defines = GetPassDefines(), - keywords = new KeywordCollection(), - }; return DefaultUITKPass; } @@ -310,6 +309,67 @@ static class UITKRequiredFields } #endregion +#region Keywords + + static class UITKKeywords + { + public static KeywordDescriptor ForceGamma = new() + { + displayName = "Force Gamma", + referenceName = "", + type = KeywordType.Enum, + definition = KeywordDefinition.MultiCompile, + scope = KeywordScope.Local, + entries = new KeywordEntry[] + { + new(){ displayName = "Disabled", referenceName = "" }, + new(){ displayName = "Enabled", referenceName = "UIE_FORCE_GAMMA" }, + } + }; + + public static KeywordDescriptor ForceTextureSlotCount = new() + { + displayName = "Force Texture Slot Count", + referenceName = "", + type = KeywordType.Enum, + definition = KeywordDefinition.MultiCompile, + scope = KeywordScope.Local, + entries = new KeywordEntry[] + { + new(){ displayName = "8 Dynamic Texture Slots", referenceName = "" }, + new(){ displayName = "4 Dynamic Texture Slots", referenceName = "UIE_TEXTURE_SLOT_COUNT_4" }, + new(){ displayName = "2 Dynamic Texture Slots", referenceName = "UIE_TEXTURE_SLOT_COUNT_2" }, + new(){ displayName = "No Dynamic Texture Slot", referenceName = "UIE_TEXTURE_SLOT_COUNT_1" }, + } + }; + + public static KeywordDescriptor ForceRenderType = new() + { + displayName = "Force Render Type", + referenceName = "", + type = KeywordType.Enum, + definition = KeywordDefinition.MultiCompile, + scope = KeywordScope.Local, + entries = new KeywordEntry[] + { + new(){ displayName = "Any Render Type", referenceName = "" }, + new(){ displayName = "Force Solid", referenceName = "UIE_RENDER_TYPE_SOLID" }, + new(){ displayName = "Force Texture", referenceName = "UIE_RENDER_TYPE_TEXTURE" }, + new(){ displayName = "Force Text", referenceName = "UIE_RENDER_TYPE_TEXT" }, + new(){ displayName = "Force Gradient", referenceName = "UIE_RENDER_TYPE_GRADIENT" }, + } + }; + + public static KeywordCollection Default = new() + { + ForceGamma, + ForceTextureSlotCount, + ForceRenderType, + }; + } + +#endregion + #region RenderStates static class UITKRenderStates { diff --git a/Tests/SRPTests/Packages/com.unity.testing.urp/Scripts/Runtime/UniversalGraphicsTests.cs b/Tests/SRPTests/Packages/com.unity.testing.urp/Scripts/Runtime/UniversalGraphicsTests.cs index 44aa20896f5..1a2aa688fc1 100644 --- a/Tests/SRPTests/Packages/com.unity.testing.urp/Scripts/Runtime/UniversalGraphicsTests.cs +++ b/Tests/SRPTests/Packages/com.unity.testing.urp/Scripts/Runtime/UniversalGraphicsTests.cs @@ -62,19 +62,24 @@ public static IEnumerator RunGraphicsTest(SceneGraphicsTestCase testCase) yield return null; var cameras = GameObject.FindGameObjectsWithTag("MainCamera").Select(x => x.GetComponent()); - Assert.True(cameras != null && cameras.Any(), - "Invalid test scene, couldn't find a camera with MainCamera tag."); - // Disable camera track for OCULUS_SDK and OPENXR_SDK so we ensure we get a consistent screen capture for image comparison + // Disable camera track for OCULUS_SDK and OPENXR_SDK so we ensure we get a consistent screen capture for image comparison #if OCULUS_SDK || OPENXR_SDK - // This code is added to hande a case where some test(001_SimpleCube_deferred_RenderPass) would throw error on Quest Vulkan, which would pollute the console for the tests running after. - UnityEngine.Debug.ClearDeveloperConsole(); - - XRDevice.DisableAutoXRCameraTracking(Camera.main, true); + // This code is added to hande a case where some test(001_SimpleCube_deferred_RenderPass) would throw error on Quest Vulkan, which would pollute the console for the tests running after. + UnityEngine.Debug.ClearDeveloperConsole(); #endif var settings = Object.FindAnyObjectByType(); Assert.IsNotNull(settings, "Invalid test scene, couldn't find UniversalGraphicsTestSettings"); +#if OCULUS_SDK || OPENXR_SDK + if(!settings.XRCompatible) + { + Assert.Ignore("Quest XR Automation: Test scene is not compatible with XR and will be skipped."); + } + + XRDevice.DisableAutoXRCameraTracking(Camera.main, true); +#endif + if (!settings.gpuDrivenCompatible && GPUResidentDrawerRequested()) Assert.Ignore("Test scene is not compatible with GPU Driven and and will be skipped."); @@ -92,12 +97,7 @@ public static IEnumerator RunGraphicsTest(SceneGraphicsTestCase testCase) // for OCULUS_SDK or OPENXR_SDK, this ensures we wait for a reliable image rendering before screen capture and image comparison #if OCULUS_SDK || OPENXR_SDK - if(!settings.XRCompatible) - { - Assert.Ignore("Quest XR Automation: Test scene is not compatible with XR and will be skipped."); - } - - waitFrames = 4; + waitFrames = 4; #else waitFrames = Unity.Testing.XR.Runtime.ConfigureMockHMD.SetupTest(settings.XRCompatible, settings.WaitFrames, settings.ImageComparisonSettings); @@ -182,11 +182,11 @@ public static IEnumerator RunGraphicsTest(SceneGraphicsTestCase testCase) #endif #endif - // Does it allocate memory when it renders what's on the main camera? - var mainCamera = GameObject.FindGameObjectWithTag("MainCamera").GetComponent(); if (settings == null || settings.CheckMemoryAllocation) { + // Does it allocate memory when it renders what's on the main camera? + var mainCamera = GameObject.FindGameObjectWithTag("MainCamera").GetComponent(); yield return ImageAssert.CheckGCAllocWithCallstack(mainCamera, settings?.ImageComparisonSettings); } } diff --git a/Tests/SRPTests/Projects/ShaderGraph/Assets/Scenes/UITKNodes.unity b/Tests/SRPTests/Projects/ShaderGraph/Assets/Scenes/UITKNodes.unity index 47b20722798..b875fc50a65 100644 --- a/Tests/SRPTests/Projects/ShaderGraph/Assets/Scenes/UITKNodes.unity +++ b/Tests/SRPTests/Projects/ShaderGraph/Assets/Scenes/UITKNodes.unity @@ -277,6 +277,62 @@ MonoBehaviour: m_VarianceClampScale: 0.9 m_ContrastAdaptiveSharpening: 0 m_Version: 2 +--- !u!1 &1438391547 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1438391549} + - component: {fileID: 1438391548} + m_Layer: 5 + m_Name: ForceGammaUIDocument + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1438391548 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1438391547} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument + m_PanelSettings: {fileID: 11400000, guid: af67b323ce2f14d40bd2caeb52ad9162, type: 2} + m_ParentUI: {fileID: 0} + sourceAsset: {fileID: 9197481963319205126, guid: d8dc22d8d3549e04aba1de4abc23fe71, + type: 3} + m_SortingOrder: 0 + m_Position: 0 + m_WorldSpaceSizeMode: 1 + m_WorldSpaceWidth: 1920 + m_WorldSpaceHeight: 1080 + m_PivotReferenceSize: 0 + m_Pivot: 0 + m_WorldSpaceCollider: {fileID: 0} +--- !u!4 &1438391549 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1438391547} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1725550268 GameObject: m_ObjectHideFlags: 0 @@ -287,7 +343,6 @@ GameObject: m_Component: - component: {fileID: 1725550270} - component: {fileID: 1725550269} - - component: {fileID: 1725550271} m_Layer: 5 m_Name: UIDocument m_TagString: Untagged @@ -334,56 +389,10 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1931382933 &1725550271 -UIRenderer: - m_ObjectHideFlags: 2 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1725550268} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 0 - m_ReflectionProbeUsage: 0 - m_RayTracingMode: 0 - m_RayTraceProcedural: 0 - m_RayTracingAccelStructBuildFlagsOverride: 0 - m_RayTracingAccelStructBuildFlags: 1 - m_SmallMeshCulling: 1 - m_ForceMeshLod: -1 - m_MeshLodSelectionBias: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 0} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_GlobalIlluminationMeshLod: 0 - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 m_Roots: - {fileID: 487053999} - {fileID: 1725550270} + - {fileID: 1438391549} diff --git a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/Shader Graphs_UITKEmpty.mat b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/Shader Graphs_UITKEmpty.mat index 196f3775347..08b25df4832 100644 --- a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/Shader Graphs_UITKEmpty.mat +++ b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/Shader Graphs_UITKEmpty.mat @@ -3,7 +3,7 @@ --- !u!21 &2100000 Material: serializedVersion: 8 - m_ObjectHideFlags: 0 + m_ObjectHideFlags: 2 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} diff --git a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKForceGamma.shadergraph b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKForceGamma.shadergraph new file mode 100644 index 00000000000..f58a95cb497 --- /dev/null +++ b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKForceGamma.shadergraph @@ -0,0 +1,1084 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "2c151a95a80f414dbb7a3bf4399ef9a3", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "e7196a02d22e4208a7137e9da9970c88" + } + ], + "m_Nodes": [ + { + "m_Id": "2f9d7e5679234fd7bdb1554705c52dc9" + }, + { + "m_Id": "b5f38fbdbbb749a98c2a775d67fcda4a" + }, + { + "m_Id": "f176b3672d5e4410acc5f332822e7e5a" + }, + { + "m_Id": "c01726f7a75048e1a6b2fa8ef319e0da" + }, + { + "m_Id": "3b3f962edfad47cbaa72bfe70e577eb9" + }, + { + "m_Id": "00bee8bafb2148f4b30145049f1248bf" + }, + { + "m_Id": "5140c1d4611b46d4a48d74f73a817772" + }, + { + "m_Id": "9148474f34514ff2ad91f61058ef7e42" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "00bee8bafb2148f4b30145049f1248bf" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3b3f962edfad47cbaa72bfe70e577eb9" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "3b3f962edfad47cbaa72bfe70e577eb9" + }, + "m_SlotId": 3 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9148474f34514ff2ad91f61058ef7e42" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "5140c1d4611b46d4a48d74f73a817772" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3b3f962edfad47cbaa72bfe70e577eb9" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "9148474f34514ff2ad91f61058ef7e42" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "2f9d7e5679234fd7bdb1554705c52dc9" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c01726f7a75048e1a6b2fa8ef319e0da" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "3b3f962edfad47cbaa72bfe70e577eb9" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f176b3672d5e4410acc5f332822e7e5a" + }, + "m_SlotId": 5 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "9148474f34514ff2ad91f61058ef7e42" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "f176b3672d5e4410acc5f332822e7e5a" + }, + "m_SlotId": 6 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b5f38fbdbbb749a98c2a775d67fcda4a" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": -102.99994659423828, + "y": -270.0000305175781 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": -102.99994659423828, + "y": -133.00001525878907 + }, + "m_Blocks": [ + { + "m_Id": "2f9d7e5679234fd7bdb1554705c52dc9" + }, + { + "m_Id": "b5f38fbdbbb749a98c2a775d67fcda4a" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_SubDatas": [], + "m_ActiveTargets": [ + { + "m_Id": "84a4e1a374a448989f971558781cb690" + } + ] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ColorNode", + "m_ObjectId": "00bee8bafb2148f4b30145049f1248bf", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -811.0, + "y": -310.0, + "width": 208.0, + "height": 124.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "f5558db8616d431d858505ee04fabf2e" + } + ], + "synonyms": [ + "rgba" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Color": { + "color": { + "r": 0.0, + "g": 1.0, + "b": 0.0, + "a": 1.0 + }, + "mode": 0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "19a0eb0852fb4246bffbf4c264718ee1", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "1ed7616e423548e5ad0e73240076b5e4", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "2143b2e161f547ada9ad9ab6bbc22e64", + "m_Id": 5, + "m_DisplayName": "Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Color", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "2dac20398e7f44c9bbd902add7983553", + "m_Id": 1, + "m_DisplayName": "B", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "B", + "m_StageCapability": 3, + "m_Value": { + "e00": 2.0, + "e01": 2.0, + "e02": 2.0, + "e03": 2.0, + "e10": 2.0, + "e11": 2.0, + "e12": 2.0, + "e13": 2.0, + "e20": 2.0, + "e21": 2.0, + "e22": 2.0, + "e23": 2.0, + "e30": 2.0, + "e31": 2.0, + "e32": 2.0, + "e33": 2.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "2f9d7e5679234fd7bdb1554705c52dc9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "1ed7616e423548e5ad0e73240076b5e4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "30a9933e95a54563a543691d704eef8e", + "m_Id": 2, + "m_DisplayName": "False", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "False", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BranchNode", + "m_ObjectId": "3b3f962edfad47cbaa72bfe70e577eb9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -505.0, + "y": -269.0, + "width": 172.00003051757813, + "height": 142.00001525878907 + } + }, + "m_Slots": [ + { + "m_Id": "db4d272016694268a6f3ba41bda10ffb" + }, + { + "m_Id": "ccfbb696fb074f9da064f24f3392fd1b" + }, + { + "m_Id": "30a9933e95a54563a543691d704eef8e" + }, + { + "m_Id": "e7967974ac924cada72e683860696dd1" + } + ], + "synonyms": [ + "switch", + "if", + "else" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.ShaderGraph.ColorNode", + "m_ObjectId": "5140c1d4611b46d4a48d74f73a817772", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Color", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -811.0, + "y": -168.0, + "width": 208.0, + "height": 125.0 + } + }, + "m_Slots": [ + { + "m_Id": "19a0eb0852fb4246bffbf4c264718ee1" + } + ], + "synonyms": [ + "rgba" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_Color": { + "color": { + "r": 1.0, + "g": 0.0, + "b": 0.0, + "a": 1.0 + }, + "mode": 0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUISubTarget", + "m_ObjectId": "528d46e07512460f8cd330bf072d47d2" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "77999f253395490cadf4273088359b6f", + "m_Id": 6, + "m_DisplayName": "Alpha", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "84a4e1a374a448989f971558781cb690", + "m_Datas": [ + { + "m_Id": "9872698ca725401cba17f63f0776ea56" + } + ], + "m_ActiveSubTarget": { + "m_Id": "528d46e07512460f8cd330bf072d47d2" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_DisableTint": false, + "m_Sort3Das2DCompatible": false, + "m_AdditionalMotionVectorMode": 0, + "m_AlembicMotionVectors": false, + "m_SupportsLODCrossFade": false, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", + "m_ObjectId": "9148474f34514ff2ad91f61058ef7e42", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Multiply", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -265.9999694824219, + "y": -186.0, + "width": 130.0, + "height": 117.99999237060547 + } + }, + "m_Slots": [ + { + "m_Id": "c13d47d469ce44ab9d985d3bbae73401" + }, + { + "m_Id": "2dac20398e7f44c9bbd902add7983553" + }, + { + "m_Id": "bb441aee5ceb4f6ea7d7bb64b58401be" + } + ], + "synonyms": [ + "multiplication", + "times", + "x" + ], + "m_Precision": 0, + "m_PreviewExpanded": false, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "92aa804b38674312bac7b388763bb705", + "m_Id": 0, + "m_DisplayName": "Solid", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Solid", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.UITK.ShaderGraph.UIData", + "m_ObjectId": "9872698ca725401cba17f63f0776ea56", + "m_Version": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "a7c3474752a64c7892eef53f7f7dbf9d", + "m_Id": 3, + "m_DisplayName": "Bitmap Text", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Bitmap Text", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "ac6a7ef05dec42a5aca24a4762709abc", + "m_Id": 2, + "m_DisplayName": "SDF Text", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "SDF Text", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "b5f38fbdbbb749a98c2a775d67fcda4a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "e9464f88552a4762826d3be0dd81125e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "bb441aee5ceb4f6ea7d7bb64b58401be", + "m_Id": 2, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "beddbbf950564668bbf57ab52a98ee42", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": true, + "m_DefaultValue": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.IsForcedGammaNode", + "m_ObjectId": "c01726f7a75048e1a6b2fa8ef319e0da", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Is Forced Gamma", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -707.0, + "y": -405.0, + "width": 145.0, + "height": 77.0 + } + }, + "m_Slots": [ + { + "m_Id": "beddbbf950564668bbf57ab52a98ee42" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicValueMaterialSlot", + "m_ObjectId": "c13d47d469ce44ab9d985d3bbae73401", + "m_Id": 0, + "m_DisplayName": "A", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "A", + "m_StageCapability": 3, + "m_Value": { + "e00": 0.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 0.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 0.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 0.0 + }, + "m_DefaultValue": { + "e00": 1.0, + "e01": 0.0, + "e02": 0.0, + "e03": 0.0, + "e10": 0.0, + "e11": 1.0, + "e12": 0.0, + "e13": 0.0, + "e20": 0.0, + "e21": 0.0, + "e22": 1.0, + "e23": 0.0, + "e30": 0.0, + "e31": 0.0, + "e32": 0.0, + "e33": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "ccfbb696fb074f9da064f24f3392fd1b", + "m_Id": 1, + "m_DisplayName": "True", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "True", + "m_StageCapability": 3, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BooleanMaterialSlot", + "m_ObjectId": "db4d272016694268a6f3ba41bda10ffb", + "m_Id": 0, + "m_DisplayName": "Predicate", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Predicate", + "m_StageCapability": 3, + "m_Value": false, + "m_DefaultValue": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "dbcacd0d6d11467c94b46b6d81ac1dcd", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "e1b216efd5034821b9ed4da0bbe6673f", + "m_Id": 4, + "m_DisplayName": "Gradient", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Gradient", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "e7196a02d22e4208a7137e9da9970c88", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", + "m_ObjectId": "e7967974ac924cada72e683860696dd1", + "m_Id": 3, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_LiteralMode": true +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "e9464f88552a4762826d3be0dd81125e", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RenderTypeBranchNode", + "m_ObjectId": "f176b3672d5e4410acc5f332822e7e5a", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Render Type Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -526.0, + "y": -86.00000762939453, + "width": 193.00003051757813, + "height": 173.0000457763672 + } + }, + "m_Slots": [ + { + "m_Id": "92aa804b38674312bac7b388763bb705" + }, + { + "m_Id": "dbcacd0d6d11467c94b46b6d81ac1dcd" + }, + { + "m_Id": "ac6a7ef05dec42a5aca24a4762709abc" + }, + { + "m_Id": "a7c3474752a64c7892eef53f7f7dbf9d" + }, + { + "m_Id": "e1b216efd5034821b9ed4da0bbe6673f" + }, + { + "m_Id": "2143b2e161f547ada9ad9ab6bbc22e64" + }, + { + "m_Id": "77999f253395490cadf4273088359b6f" + } + ], + "synonyms": [ + "toggle", + "uber" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "f5558db8616d431d858505ee04fabf2e", + "m_Id": 0, + "m_DisplayName": "Out", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Out", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + diff --git a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKForceGamma.shadergraph.meta b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKForceGamma.shadergraph.meta new file mode 100644 index 00000000000..a2cb08ebfc2 --- /dev/null +++ b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKForceGamma.shadergraph.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: 6a959023a9430d64a85a08cb42707ae4 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} + useAsTemplate: 0 + exposeTemplateAsShader: 0 + template: + name: + category: + description: + icon: {instanceID: 0} + thumbnail: {instanceID: 0} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/Prefabs/OverlayUITestSettings.prefab b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/Prefabs/OverlayUITestSettings.prefab new file mode 100644 index 00000000000..db7a6080c58 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/Prefabs/OverlayUITestSettings.prefab @@ -0,0 +1,67 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &7765703020162394032 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8546375357908578044} + - component: {fileID: 4377775659422483275} + m_Layer: 0 + m_Name: OverlayUITestSettings + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8546375357908578044 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7765703020162394032} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4377775659422483275 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7765703020162394032} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 73231aa468d81ea49bc3d914080de185, type: 3} + m_Name: + m_EditorClassIdentifier: UniversalGraphicsTests::UniversalGraphicsTestSettings + ImageComparisonSettings: + TargetWidth: 1920 + TargetHeight: 1080 + TargetMSAASamples: 1 + PerPixelCorrectnessThreshold: 0.001 + PerPixelGammaThreshold: 0.003921569 + PerPixelAlphaThreshold: 0.003921569 + RMSEThreshold: 0 + AverageCorrectnessThreshold: 0.005 + IncorrectPixelsThreshold: 0.0000004822531 + UseHDR: 0 + UseBackBuffer: 1 + ImageResolution: 0 + ActiveImageTests: 2 + ActivePixelTests: -1 + WaitFrames: 10 + XRCompatible: 0 + gpuDrivenCompatible: 1 + CheckMemoryAllocation: 0 + renderBackendCompatibility: 2 + SetBackBufferResolution: 1 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/Prefabs/OverlayUITestSettings.prefab.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/Prefabs/OverlayUITestSettings.prefab.meta new file mode 100644 index 00000000000..7ed970f444d --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/Prefabs/OverlayUITestSettings.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 92ce377cda9a62847a6ab6f48024bc47 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK.unity b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK.unity index 8af7474b1cf..727f978e5b2 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK.unity +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK.unity @@ -120,300 +120,74 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &235806682 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 235806685} - - component: {fileID: 235806684} - - component: {fileID: 235806683} - m_Layer: 0 - m_Name: EventSystem - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &235806683 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 235806682} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} - m_Name: - m_EditorClassIdentifier: - m_SendPointerHoverToParent: 1 - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel - m_InputActionsPerSecond: 10 - m_RepeatDelay: 0.5 - m_ForceModuleActive: 0 ---- !u!114 &235806684 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 235806682} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 10 ---- !u!4 &235806685 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 235806682} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &901564021 -GameObject: +--- !u!1001 &1196565126 +PrefabInstance: m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 901564023} - - component: {fileID: 901564022} - m_Layer: 0 - m_Name: SelectQualitySetting - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &901564022 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 901564021} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4f1decc188d2f3146ab93291a5c743e9, type: 3} - m_Name: - m_EditorClassIdentifier: - qualityLevelIndex: 0 - callbacks: [] ---- !u!4 &901564023 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 901564021} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.5195698, y: 1.3765798, z: 0.5559635} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &971756569 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 971756575} - - component: {fileID: 971756574} - - component: {fileID: 971756572} - - component: {fileID: 971756571} - - component: {fileID: 971756570} - - component: {fileID: 971756576} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &971756570 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 971756569} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 73231aa468d81ea49bc3d914080de185, type: 3} - m_Name: - m_EditorClassIdentifier: - ImageComparisonSettings: - TargetWidth: 1920 - TargetHeight: 1080 - TargetMSAASamples: 1 - PerPixelCorrectnessThreshold: 0.005 - PerPixelGammaThreshold: 0.003921569 - PerPixelAlphaThreshold: 0.003921569 - RMSEThreshold: 0 - AverageCorrectnessThreshold: 0.001 - IncorrectPixelsThreshold: 0.0000038146973 - UseHDR: 0 - UseBackBuffer: 1 - ImageResolution: 0 - ActiveImageTests: 1 - ActivePixelTests: -1 - WaitFrames: 10 - XRCompatible: 1 - gpuDrivenCompatible: 1 - CheckMemoryAllocation: 1 - renderBackendCompatibility: 2 - SetBackBufferResolution: 1 ---- !u!81 &971756571 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 971756569} - m_Enabled: 1 ---- !u!124 &971756572 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 971756569} - m_Enabled: 1 ---- !u!20 &971756574 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 971756569} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 2 - m_BackGroundColor: {r: 0.2509804, g: 0.2509804, b: 0.2509804, a: 1} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_Iso: 200 - m_ShutterSpeed: 0.005 - m_Aperture: 16 - m_FocusDistance: 10 - m_FocalLength: 50 - m_BladeCount: 5 - m_Curvature: {x: 2, y: 11} - m_BarrelClipping: 0.25 - m_Anamorphism: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 10 - field of view: 35 - orthographic: 0 - orthographic size: 1 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 32 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 0 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &971756575 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 971756569} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &971756576 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 971756569} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_RenderShadows: 1 - m_RequiresDepthTextureOption: 2 - m_RequiresOpaqueTextureOption: 2 - m_CameraType: 0 - m_Cameras: [] - m_RendererIndex: -1 - m_VolumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - m_VolumeTrigger: {fileID: 0} - m_VolumeFrameworkUpdateModeOption: 2 - m_RenderPostProcessing: 0 - m_Antialiasing: 0 - m_AntialiasingQuality: 2 - m_StopNaN: 0 - m_Dithering: 0 - m_ClearDepth: 1 - m_AllowXRRendering: 1 - m_AllowHDROutput: 1 - m_UseScreenCoordOverride: 0 - m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} - m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} - m_RequiresDepthTexture: 0 - m_RequiresColorTexture: 0 - m_TaaSettings: - m_Quality: 3 - m_FrameInfluence: 0.1 - m_JitterScale: 1 - m_MipBias: 0 - m_VarianceClampScale: 0.9 - m_ContrastAdaptiveSharpening: 0 - m_Version: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 7765703020162394032, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_Name + value: OverlayUITestSettings + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 92ce377cda9a62847a6ab6f48024bc47, type: 3} --- !u!1 &1434871359 GameObject: m_ObjectHideFlags: 0 @@ -443,7 +217,7 @@ MonoBehaviour: m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0} m_Name: m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument - m_PanelSettings: {fileID: 11400000, guid: 2aec2f3daeb5219409754f310c2499b6, type: 2} + m_PanelSettings: {fileID: 11400000, guid: abaf29bb25d350643bfca0924f031f36, type: 2} m_ParentUI: {fileID: 0} sourceAsset: {fileID: 9197481963319205126, guid: e409941045489114289be01b097862d2, type: 3} @@ -474,7 +248,5 @@ Transform: SceneRoots: m_ObjectHideFlags: 0 m_Roots: - - {fileID: 901564023} - - {fileID: 971756575} + - {fileID: 1196565126} - {fileID: 1434871361} - - {fileID: 235806685} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/PanelSettings360.asset b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/PanelSettings360.asset new file mode 100644 index 00000000000..16c3abac657 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/PanelSettings360.asset @@ -0,0 +1,56 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 19101, guid: 0000000000000000e000000000000000, type: 0} + m_Name: PanelSettings360 + m_EditorClassIdentifier: + themeUss: {fileID: -4733365628477956816, guid: 348e5dea337a2034f84984b3284c58d6, + type: 3} + m_DisableNoThemeWarning: 0 + m_TargetTexture: {fileID: 0} + m_RenderMode: 0 + m_ColliderUpdateMode: 0 + m_ColliderIsTrigger: 1 + m_ScaleMode: 1 + m_ReferenceSpritePixelsPerUnit: 100 + m_PixelsPerUnit: 100 + m_Scale: 1 + m_ReferenceDpi: 96 + m_FallbackDpi: 96 + m_ReferenceResolution: {x: 1200, y: 800} + m_ScreenMatchMode: 0 + m_Match: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 + m_BindingLogLevel: 0 + m_ClearDepthStencil: 1 + m_ClearColor: 1 + m_ColorClearValue: {r: 0.050980393, g: 0.050980393, b: 0.050980393, a: 1} + m_VertexBudget: 0 + m_TextureSlotCount: 8 + m_DynamicAtlasSettings: + m_MinAtlasSize: 64 + m_MaxAtlasSize: 4096 + m_MaxSubTextureSize: 64 + m_ActiveFilters: -1 + m_AtlasBlitShader: {fileID: 9101, guid: 0000000000000000f000000000000000, type: 0} + m_RuntimeShader: {fileID: 9100, guid: 0000000000000000f000000000000000, type: 0} + m_RuntimeWorldShader: {fileID: 9102, guid: 0000000000000000f000000000000000, type: 0} + m_RuntimeGaussianBlurShader: {fileID: 20300, guid: 0000000000000000f000000000000000, + type: 0} + m_RuntimeColorEffectShader: {fileID: 20301, guid: 0000000000000000f000000000000000, + type: 0} + m_SDFShader: {fileID: 19011, guid: 0000000000000000f000000000000000, type: 0} + m_BitmapShader: {fileID: 9001, guid: 0000000000000000f000000000000000, type: 0} + m_SpriteShader: {fileID: 19012, guid: 0000000000000000f000000000000000, type: 0} + m_ICUDataAsset: {fileID: 0} + forceGammaRendering: 0 + textSettings: {fileID: 0} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/PanelSettings360.asset.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/PanelSettings360.asset.meta new file mode 100644 index 00000000000..4fc1ae29276 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/PanelSettings360.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: abaf29bb25d350643bfca0924f031f36 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/times Bitmap.asset b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/times Bitmap.asset index 5b80fe9e3fb..8c0373daf48 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/times Bitmap.asset +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/times Bitmap.asset @@ -474,6 +474,1536 @@ MonoBehaviour: m_XAdvance: 0 m_YAdvance: 0 m_FeatureLookupFlags: -858993460 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.5703125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 5 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.5703125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 10 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.09668 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 13 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 13 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.482422 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.482422 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 34 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 2.5927734 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 36 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.9003906 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 38 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 41 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.3398438 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.9003906 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 42 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 4.3945312 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 45 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 45 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 46 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.0761719 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 50 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 51 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.9003906 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 51 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.3398438 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.0761719 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 52 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 53 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.5048828 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.1533203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 171 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 171 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.1533203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.536133 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 55 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -9.272461 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.2744141 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 56 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 171 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.1533203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.459961 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 57 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.6689453 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 1.7138672 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 171 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 171 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.1533203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.3398438 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 58 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.1533203 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 171 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.482422 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -8.745117 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 60 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -7.9101562 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 61 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 1.7138672 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 171 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 2.5927734 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 61 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 69 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 73 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 1.7138672 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 171 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 73 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0.7910156 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 69 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 69 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.43945312 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 73 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 78 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.8017578 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 82 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 83 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 85 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 87 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 1.7138672 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 171 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 87 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 87 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.703125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.482422 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 89 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 89 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.6259766 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 89 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.52734375 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.9003906 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 90 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 90 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.43945312 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 69 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.0986328 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 91 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 91 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.703125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 92 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.43945312 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.9003906 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 100 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.0761719 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 103 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.2744141 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 104 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 69 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 105 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 69 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 106 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 69 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 107 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 69 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 108 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 69 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 109 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 69 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 110 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 121 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 122 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 123 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 124 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 125 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.0761719 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 146 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 69 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 160 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 161 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.0761719 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 175 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.0761719 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 176 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.196289 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 180 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 180 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.6689453 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.1416016 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 181 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 181 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.9433594 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 182 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.6689453 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.6689453 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 183 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 183 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.5703125 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 183 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -6.9433594 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.3398438 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 186 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 186 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.43945312 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.482422 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 187 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 2.9882812 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 196 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 2.9882812 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 197 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.0761719 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 208 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.0761719 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 209 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.0761719 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 210 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.2744141 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 211 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.2744141 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 212 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.2744141 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 213 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 229 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 1.7138672 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 171 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 2.5927734 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 229 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 171 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -4.482422 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 234 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -5.6689453 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 234 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 234 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -8.745117 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 234 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -7.9101562 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 47 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.3398438 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 235 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 235 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -0.43945312 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 236 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -2.9003906 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 236 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -3.3398438 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 72 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 + - m_FirstAdjustmentRecord: + m_GlyphIndex: 237 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: -1.1865234 + m_YAdvance: 0 + m_SecondAdjustmentRecord: + m_GlyphIndex: 68 + m_GlyphValueRecord: + m_XPlacement: 0 + m_YPlacement: 0 + m_XAdvance: 0 + m_YAdvance: 0 + m_FeatureLookupFlags: 0 m_MarkToBaseAdjustmentRecords: [] m_MarkToMarkAdjustmentRecords: [] m_ShouldReimportFontFeatures: 0 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending.meta new file mode 100644 index 00000000000..b0d6f839836 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c9f97b7360f4b2d41a876e0871e95671 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending.unity b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending.unity new file mode 100644 index 00000000000..b7cf3c5c521 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending.unity @@ -0,0 +1,731 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 2 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 1 + m_PVRFilteringGaussRadiusAO: 1 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &571528632 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 865620042022994903, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_Name + value: DefaultShader + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 56a6a49bb1f1a5043a3f3c361531302d, type: 3} +--- !u!1001 &599195878 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 865620042022994903, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_Name + value: ForceGamma-CustomShader-Expanded + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3424176129895285712, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_PanelSettings + value: + objectReference: {fileID: 11400000, guid: 7bdfdcd1264230f47a9952662a4dff43, + type: 2} + - target: {fileID: 7850971752238672569, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: material + value: + objectReference: {fileID: -876546973899608171, guid: 4042d845feb90ee40885e8bf17b574cf, + type: 3} + - target: {fileID: 7850971752238672569, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_Offset.x + value: 800 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 56a6a49bb1f1a5043a3f3c361531302d, type: 3} +--- !u!1 &1006658360 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1006658361} + - component: {fileID: 1006658363} + - component: {fileID: 1006658362} + m_Layer: 0 + m_Name: ForceGamma-Blitter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1006658361 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1006658360} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1006658362 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1006658360} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7ba3428ea6054b74885713cf817aa4d1, type: 3} + m_Name: + m_EditorClassIdentifier: com.unity.ui.shaders.tests::PanelBlitter000 + renderTexture: {fileID: 8400000, guid: c7ed07239d8ade94caf2df4117b4ed4b, type: 2} + material: {fileID: 2100000, guid: c7ba700a5f4836248a4c01a1cf4cb2c9, type: 2} + m_Rect: + x: 0 + y: 300 + width: 1200 + height: 300 +--- !u!114 &1006658363 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1006658360} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument + m_PanelSettings: {fileID: 11400000, guid: 241785c2f786a554cb7391ef6a26266c, type: 2} + m_ParentUI: {fileID: 0} + sourceAsset: {fileID: 0} + m_SortingOrder: 0 + m_Position: 0 + m_WorldSpaceSizeMode: 1 + m_WorldSpaceWidth: 1920 + m_WorldSpaceHeight: 1080 + m_PivotReferenceSize: 0 + m_Pivot: 0 + m_WorldSpaceCollider: {fileID: 0} +--- !u!1001 &1267038844 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 865620042022994903, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_Name + value: ForceGamma-CustomShader-Basic + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3424176129895285712, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_PanelSettings + value: + objectReference: {fileID: 11400000, guid: 7bdfdcd1264230f47a9952662a4dff43, + type: 2} + - target: {fileID: 7850971752238672569, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: material + value: + objectReference: {fileID: -876546973899608171, guid: 404b4064114c1f341873c1ded84063fa, + type: 3} + - target: {fileID: 7850971752238672569, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_Offset.x + value: 400 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 56a6a49bb1f1a5043a3f3c361531302d, type: 3} +--- !u!1001 &1376462005 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 865620042022994903, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_Name + value: ForceGamma-DefaultShader + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3424176129895285712, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_PanelSettings + value: + objectReference: {fileID: 11400000, guid: 7bdfdcd1264230f47a9952662a4dff43, + type: 2} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 56a6a49bb1f1a5043a3f3c361531302d, type: 3} +--- !u!1001 &1501099299 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 865620042022994903, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_Name + value: CustomShader-Basic + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7850971752238672569, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: material + value: + objectReference: {fileID: -876546973899608171, guid: 404b4064114c1f341873c1ded84063fa, + type: 3} + - target: {fileID: 7850971752238672569, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: offset.x + value: 400 + objectReference: {fileID: 0} + - target: {fileID: 7850971752238672569, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_Offset.x + value: 400 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 56a6a49bb1f1a5043a3f3c361531302d, type: 3} +--- !u!1001 &2044949169 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 865620042022994903, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_Name + value: CustomShader-Expanded + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2540094117102651409, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7850971752238672569, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: material + value: + objectReference: {fileID: -876546973899608171, guid: 4042d845feb90ee40885e8bf17b574cf, + type: 3} + - target: {fileID: 7850971752238672569, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: offset.x + value: 400 + objectReference: {fileID: 0} + - target: {fileID: 7850971752238672569, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: offset.y + value: 300 + objectReference: {fileID: 0} + - target: {fileID: 7850971752238672569, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_Offset.x + value: 800 + objectReference: {fileID: 0} + - target: {fileID: 7850971752238672569, guid: 56a6a49bb1f1a5043a3f3c361531302d, + type: 3} + propertyPath: m_Offset.y + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 56a6a49bb1f1a5043a3f3c361531302d, type: 3} +--- !u!1001 &1346547361502791900 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 7765703020162394032, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_Name + value: OverlayUITestSettings + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 92ce377cda9a62847a6ab6f48024bc47, type: 3} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1346547361502791900} + - {fileID: 571528632} + - {fileID: 1501099299} + - {fileID: 2044949169} + - {fileID: 1376462005} + - {fileID: 1267038844} + - {fileID: 599195878} + - {fileID: 1006658361} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending.unity.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending.unity.meta new file mode 100644 index 00000000000..b2f02188851 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4ecd08597ff2da342b149c57aa96d35b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Basic.shadergraph b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Basic.shadergraph new file mode 100644 index 00000000000..e54cd210acf --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Basic.shadergraph @@ -0,0 +1,492 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "60457329f2fc4c8883a42f45289bd4f8", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "f7ddf16e63294f30a544423d950ab192" + } + ], + "m_Nodes": [ + { + "m_Id": "b7cbf91dbd9947e1ba4ad47261b31d54" + }, + { + "m_Id": "57c050165d2d45c498c3f10509ba6748" + }, + { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 5 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b7cbf91dbd9947e1ba4ad47261b31d54" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 6 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "57c050165d2d45c498c3f10509ba6748" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "b7cbf91dbd9947e1ba4ad47261b31d54" + }, + { + "m_Id": "57c050165d2d45c498c3f10509ba6748" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_SubDatas": [], + "m_ActiveTargets": [ + { + "m_Id": "8c2463d024604cfbabe49aa8639f46b2" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "09dd8102543c46d088b66ee12c0e7a9e", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "18af67b5882a47a68be9d27f498efbdc", + "m_Id": 2, + "m_DisplayName": "SDF Text", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "SDF Text", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "22a4f2bbb19547d98e629b5457256e98", + "m_Id": 3, + "m_DisplayName": "Bitmap Text", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Bitmap Text", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "356b8b18d3d64d87ba2dcf8a855893c4", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "57c050165d2d45c498c3f10509ba6748", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "09dd8102543c46d088b66ee12c0e7a9e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "5896ed619cd04ff489b04d60672e3189", + "m_Id": 4, + "m_DisplayName": "Gradient", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Gradient", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "79ec22f5f4454fef906a8e9ecf61b05c", + "m_Id": 0, + "m_DisplayName": "Solid", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Solid", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "8c2463d024604cfbabe49aa8639f46b2", + "m_Datas": [ + { + "m_Id": "abdbd7512c5e40dfa416b40d79072d1d" + } + ], + "m_ActiveSubTarget": { + "m_Id": "a2941255da0149d5a02ba55d0a422024" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_DisableTint": false, + "m_Sort3Das2DCompatible": false, + "m_AdditionalMotionVectorMode": 0, + "m_AlembicMotionVectors": false, + "m_SupportsLODCrossFade": false, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9fceb4c3f8a144599b3a6f5db2cff196", + "m_Id": 6, + "m_DisplayName": "Alpha", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUISubTarget", + "m_ObjectId": "a2941255da0149d5a02ba55d0a422024" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "a3d67c6982dd4eb7af6dbea23746f974", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.UITK.ShaderGraph.UIData", + "m_ObjectId": "abdbd7512c5e40dfa416b40d79072d1d", + "m_Version": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "b7cbf91dbd9947e1ba4ad47261b31d54", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "356b8b18d3d64d87ba2dcf8a855893c4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RenderTypeBranchNode", + "m_ObjectId": "dfce8ad31a2e4ba6b46e7d93923b71ff", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Render Type Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -295.3999938964844, + "y": 151.8000030517578, + "width": 192.0, + "height": 174.0 + } + }, + "m_Slots": [ + { + "m_Id": "79ec22f5f4454fef906a8e9ecf61b05c" + }, + { + "m_Id": "a3d67c6982dd4eb7af6dbea23746f974" + }, + { + "m_Id": "18af67b5882a47a68be9d27f498efbdc" + }, + { + "m_Id": "22a4f2bbb19547d98e629b5457256e98" + }, + { + "m_Id": "5896ed619cd04ff489b04d60672e3189" + }, + { + "m_Id": "fef871dc0a5b451caf66105bcf58594e" + }, + { + "m_Id": "9fceb4c3f8a144599b3a6f5db2cff196" + } + ], + "synonyms": [ + "toggle", + "uber" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "f7ddf16e63294f30a544423d950ab192", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "fef871dc0a5b451caf66105bcf58594e", + "m_Id": 5, + "m_DisplayName": "Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Color", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } +} + diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Basic.shadergraph.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Basic.shadergraph.meta new file mode 100644 index 00000000000..f83a38fad27 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Basic.shadergraph.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: 404b4064114c1f341873c1ded84063fa +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} + useAsTemplate: 0 + exposeTemplateAsShader: 0 + template: + name: + category: + description: + icon: {instanceID: 0} + thumbnail: {instanceID: 0} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Expanded.shadergraph b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Expanded.shadergraph new file mode 100644 index 00000000000..5eddcc433e3 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Expanded.shadergraph @@ -0,0 +1,979 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "60457329f2fc4c8883a42f45289bd4f8", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "f7ddf16e63294f30a544423d950ab192" + } + ], + "m_Nodes": [ + { + "m_Id": "b7cbf91dbd9947e1ba4ad47261b31d54" + }, + { + "m_Id": "57c050165d2d45c498c3f10509ba6748" + }, + { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + { + "m_Id": "55dcddb8cab745aa8b66cd4a43cd0d96" + }, + { + "m_Id": "eed202d9a6534753906258fc752a87e5" + }, + { + "m_Id": "104217873b7e434cb3ac90b57002362c" + }, + { + "m_Id": "c067b783c8b14ec7a48b4f74d849e0a9" + }, + { + "m_Id": "b385066c1ec94f08a92e33888a74a7c9" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "104217873b7e434cb3ac90b57002362c" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "55dcddb8cab745aa8b66cd4a43cd0d96" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b385066c1ec94f08a92e33888a74a7c9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 4 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c067b783c8b14ec7a48b4f74d849e0a9" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 3 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 5 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b7cbf91dbd9947e1ba4ad47261b31d54" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 6 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "57c050165d2d45c498c3f10509ba6748" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "eed202d9a6534753906258fc752a87e5" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 1 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "b7cbf91dbd9947e1ba4ad47261b31d54" + }, + { + "m_Id": "57c050165d2d45c498c3f10509ba6748" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_SubDatas": [], + "m_ActiveTargets": [ + { + "m_Id": "8c2463d024604cfbabe49aa8639f46b2" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "09dd8102543c46d088b66ee12c0e7a9e", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultSDFTextNode", + "m_ObjectId": "104217873b7e434cb3ac90b57002362c", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default SDF Text", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -586.7999877929688, + "y": 200.00001525878907, + "width": 169.60000610351563, + "height": 77.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "8f338237b6274a7b81fbf2069b03e47f" + }, + { + "m_Id": "9385df217ef940c9a853c9495547da81" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "15d0223b36364106ba7af9ed7fa2e871", + "m_Id": 0, + "m_DisplayName": "Gradient", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Gradient", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "18af67b5882a47a68be9d27f498efbdc", + "m_Id": 2, + "m_DisplayName": "SDF Text", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "SDF Text", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "22a4f2bbb19547d98e629b5457256e98", + "m_Id": 3, + "m_DisplayName": "Bitmap Text", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Bitmap Text", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector2MaterialSlot", + "m_ObjectId": "26186555abcd4b418b24105f360634a3", + "m_Id": 0, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "356b8b18d3d64d87ba2dcf8a855893c4", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "381e9f7bcbd74a6dbe48a9c1cdf40f65", + "m_Id": 0, + "m_DisplayName": "Solid", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Solid", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "4e9382d289c3488c881cb225a7b48459", + "m_Id": 1, + "m_DisplayName": "Bitmap Text", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Bitmap Text", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultSolidNode", + "m_ObjectId": "55dcddb8cab745aa8b66cd4a43cd0d96", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default Solid", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -536.3999633789063, + "y": 20.40001106262207, + "width": 119.19998168945313, + "height": 78.0 + } + }, + "m_Slots": [ + { + "m_Id": "381e9f7bcbd74a6dbe48a9c1cdf40f65" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "57c050165d2d45c498c3f10509ba6748", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "09dd8102543c46d088b66ee12c0e7a9e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "5896ed619cd04ff489b04d60672e3189", + "m_Id": 4, + "m_DisplayName": "Gradient", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Gradient", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "79ec22f5f4454fef906a8e9ecf61b05c", + "m_Id": 0, + "m_DisplayName": "Solid", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Solid", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "7afdad5087454c3cb8822f55a1019571", + "m_Id": 1, + "m_DisplayName": "Tint", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tint", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "From Styles" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "8c2463d024604cfbabe49aa8639f46b2", + "m_Datas": [ + { + "m_Id": "abdbd7512c5e40dfa416b40d79072d1d" + } + ], + "m_ActiveSubTarget": { + "m_Id": "a2941255da0149d5a02ba55d0a422024" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_DisableTint": false, + "m_Sort3Das2DCompatible": false, + "m_AdditionalMotionVectorMode": 0, + "m_AlembicMotionVectors": false, + "m_SupportsLODCrossFade": false, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "8e670839beb2448e9f6fdcd3ab32830c", + "m_Id": 0, + "m_DisplayName": "Tint", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tint", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "From Styles" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "8f338237b6274a7b81fbf2069b03e47f", + "m_Id": 0, + "m_DisplayName": "Tint", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tint", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "From Styles" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "9385df217ef940c9a853c9495547da81", + "m_Id": 1, + "m_DisplayName": "SDF Text", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "SDF Text", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9fceb4c3f8a144599b3a6f5db2cff196", + "m_Id": 6, + "m_DisplayName": "Alpha", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUISubTarget", + "m_ObjectId": "a2941255da0149d5a02ba55d0a422024" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "a3d67c6982dd4eb7af6dbea23746f974", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.UITK.ShaderGraph.UIData", + "m_ObjectId": "abdbd7512c5e40dfa416b40d79072d1d", + "m_Version": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultGradientNode", + "m_ObjectId": "b385066c1ec94f08a92e33888a74a7c9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default Gradient", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -557.1998901367188, + "y": 356.0, + "width": 139.99990844726563, + "height": 78.0 + } + }, + "m_Slots": [ + { + "m_Id": "15d0223b36364106ba7af9ed7fa2e871" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "b7cbf91dbd9947e1ba4ad47261b31d54", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "356b8b18d3d64d87ba2dcf8a855893c4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultBitmapTextNode", + "m_ObjectId": "c067b783c8b14ec7a48b4f74d849e0a9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default Bitmap Text", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -601.5999755859375, + "y": 278.0, + "width": 184.39999389648438, + "height": 78.0 + } + }, + "m_Slots": [ + { + "m_Id": "8e670839beb2448e9f6fdcd3ab32830c" + }, + { + "m_Id": "4e9382d289c3488c881cb225a7b48459" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RenderTypeBranchNode", + "m_ObjectId": "dfce8ad31a2e4ba6b46e7d93923b71ff", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Render Type Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -295.3999938964844, + "y": 151.8000030517578, + "width": 192.0, + "height": 174.0 + } + }, + "m_Slots": [ + { + "m_Id": "79ec22f5f4454fef906a8e9ecf61b05c" + }, + { + "m_Id": "a3d67c6982dd4eb7af6dbea23746f974" + }, + { + "m_Id": "18af67b5882a47a68be9d27f498efbdc" + }, + { + "m_Id": "22a4f2bbb19547d98e629b5457256e98" + }, + { + "m_Id": "5896ed619cd04ff489b04d60672e3189" + }, + { + "m_Id": "fef871dc0a5b451caf66105bcf58594e" + }, + { + "m_Id": "9fceb4c3f8a144599b3a6f5db2cff196" + } + ], + "synonyms": [ + "toggle", + "uber" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultTextureNode", + "m_ObjectId": "eed202d9a6534753906258fc752a87e5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default Texture", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -579.199951171875, + "y": 97.99998474121094, + "width": 161.99996948242188, + "height": 102.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "26186555abcd4b418b24105f360634a3" + }, + { + "m_Id": "7afdad5087454c3cb8822f55a1019571" + }, + { + "m_Id": "f756a9e3ec34451293ccafabd337b1be" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "f756a9e3ec34451293ccafabd337b1be", + "m_Id": 2, + "m_DisplayName": "Texture", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "f7ddf16e63294f30a544423d950ab192", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "fef871dc0a5b451caf66105bcf58594e", + "m_Id": 5, + "m_DisplayName": "Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Color", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } +} + diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Expanded.shadergraph.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Expanded.shadergraph.meta new file mode 100644 index 00000000000..00d6b86b888 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/361_UIToolkit_Blending/361-Custom-Expanded.shadergraph.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: 4042d845feb90ee40885e8bf17b574cf +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} + useAsTemplate: 0 + exposeTemplateAsShader: 0 + template: + name: + category: + description: + icon: {instanceID: 0} + thumbnail: {instanceID: 0} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords.meta new file mode 100644 index 00000000000..75ff9d23125 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6239d1ea02992564780393d5fd92d47b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords.unity b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords.unity new file mode 100644 index 00000000000..9bf74d84594 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords.unity @@ -0,0 +1,848 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 2 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 1 + m_PVRFilteringGaussRadiusAO: 1 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &34243954 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: yOffset + value: 40 + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: material + value: + objectReference: {fileID: -876546973899608171, guid: 8db5c356140b0d146af1eaddcd26d491, + type: 3} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[0]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[1]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[2]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[3]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[4]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[5]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[6]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[7]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[8]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[9]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[10]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[11]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[12]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[13]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[14]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[15]' + value: + objectReference: {fileID: 0} + - target: {fileID: 4750156160368749302, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_SortingOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalPosition.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4946813126990163273, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_SortingOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5809945926523203295, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_SortingOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5930203702680516938, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_SortingOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8631097478442486142, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_Name + value: KeywordTesterBasic + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f90200c87c42e944eb6b60589fbb26fb, type: 3} +--- !u!1001 &1367161060 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: yOffset + value: 80 + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: material + value: + objectReference: {fileID: -876546973899608171, guid: bd1fb10d7b100ed4091ead23cdcb4e41, + type: 3} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[0]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[1]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[2]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[3]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[4]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[5]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[6]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[7]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[8]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[9]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[10]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[11]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[12]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[13]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[14]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[15]' + value: + objectReference: {fileID: 0} + - target: {fileID: 4750156160368749302, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_SortingOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalPosition.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4946813126990163273, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_SortingOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5809945926523203295, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_SortingOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 5930203702680516938, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_SortingOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 8631097478442486142, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_Name + value: KeywordTesterExpanded + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f90200c87c42e944eb6b60589fbb26fb, type: 3} +--- !u!1001 &1518582289 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: yOffset + value: 120 + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: material + value: + objectReference: {fileID: -876546973899608171, guid: 68091752901f2e948864192d7b0139ab, + type: 3} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[0]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[1]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[2]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[3]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[4]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[5]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[6]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[7]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[8]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[9]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[10]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[11]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[12]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[13]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[14]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[15]' + value: + objectReference: {fileID: 0} + - target: {fileID: 4750156160368749302, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_SortingOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalPosition.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4946813126990163273, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_SortingOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 5809945926523203295, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_SortingOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 5930203702680516938, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_SortingOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 8631097478442486142, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_Name + value: KeywordTesterExpandedOverrideTexture + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f90200c87c42e944eb6b60589fbb26fb, type: 3} +--- !u!1001 &1748372767 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 7765703020162394032, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_Name + value: OverlayUITestSettings + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 92ce377cda9a62847a6ab6f48024bc47, type: 3} +--- !u!1001 &4342855374883428530 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[0]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[1]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[2]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[3]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[4]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[5]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[6]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[7]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[8]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[9]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[10]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[11]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[12]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[13]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[14]' + value: + objectReference: {fileID: 0} + - target: {fileID: 2659707023930908392, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: 'textures.Array.data[15]' + value: + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalPosition.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4852015946873488667, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8631097478442486142, guid: f90200c87c42e944eb6b60589fbb26fb, + type: 3} + propertyPath: m_Name + value: KeywordTesterDefault + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: f90200c87c42e944eb6b60589fbb26fb, type: 3} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1748372767} + - {fileID: 4342855374883428530} + - {fileID: 34243954} + - {fileID: 1367161060} + - {fileID: 1518582289} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords.unity.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords.unity.meta new file mode 100644 index 00000000000..fc669436d34 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e9b15c579f66cc94c951cdd18318f5ef +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Basic.shadergraph b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Basic.shadergraph new file mode 100644 index 00000000000..e54cd210acf --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Basic.shadergraph @@ -0,0 +1,492 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "60457329f2fc4c8883a42f45289bd4f8", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "f7ddf16e63294f30a544423d950ab192" + } + ], + "m_Nodes": [ + { + "m_Id": "b7cbf91dbd9947e1ba4ad47261b31d54" + }, + { + "m_Id": "57c050165d2d45c498c3f10509ba6748" + }, + { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 5 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b7cbf91dbd9947e1ba4ad47261b31d54" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 6 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "57c050165d2d45c498c3f10509ba6748" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "b7cbf91dbd9947e1ba4ad47261b31d54" + }, + { + "m_Id": "57c050165d2d45c498c3f10509ba6748" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_SubDatas": [], + "m_ActiveTargets": [ + { + "m_Id": "8c2463d024604cfbabe49aa8639f46b2" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "09dd8102543c46d088b66ee12c0e7a9e", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "18af67b5882a47a68be9d27f498efbdc", + "m_Id": 2, + "m_DisplayName": "SDF Text", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "SDF Text", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "22a4f2bbb19547d98e629b5457256e98", + "m_Id": 3, + "m_DisplayName": "Bitmap Text", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Bitmap Text", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "356b8b18d3d64d87ba2dcf8a855893c4", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "57c050165d2d45c498c3f10509ba6748", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "09dd8102543c46d088b66ee12c0e7a9e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "5896ed619cd04ff489b04d60672e3189", + "m_Id": 4, + "m_DisplayName": "Gradient", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Gradient", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "79ec22f5f4454fef906a8e9ecf61b05c", + "m_Id": 0, + "m_DisplayName": "Solid", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Solid", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "8c2463d024604cfbabe49aa8639f46b2", + "m_Datas": [ + { + "m_Id": "abdbd7512c5e40dfa416b40d79072d1d" + } + ], + "m_ActiveSubTarget": { + "m_Id": "a2941255da0149d5a02ba55d0a422024" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_DisableTint": false, + "m_Sort3Das2DCompatible": false, + "m_AdditionalMotionVectorMode": 0, + "m_AlembicMotionVectors": false, + "m_SupportsLODCrossFade": false, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9fceb4c3f8a144599b3a6f5db2cff196", + "m_Id": 6, + "m_DisplayName": "Alpha", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUISubTarget", + "m_ObjectId": "a2941255da0149d5a02ba55d0a422024" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "a3d67c6982dd4eb7af6dbea23746f974", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.UITK.ShaderGraph.UIData", + "m_ObjectId": "abdbd7512c5e40dfa416b40d79072d1d", + "m_Version": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "b7cbf91dbd9947e1ba4ad47261b31d54", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "356b8b18d3d64d87ba2dcf8a855893c4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RenderTypeBranchNode", + "m_ObjectId": "dfce8ad31a2e4ba6b46e7d93923b71ff", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Render Type Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -295.3999938964844, + "y": 151.8000030517578, + "width": 192.0, + "height": 174.0 + } + }, + "m_Slots": [ + { + "m_Id": "79ec22f5f4454fef906a8e9ecf61b05c" + }, + { + "m_Id": "a3d67c6982dd4eb7af6dbea23746f974" + }, + { + "m_Id": "18af67b5882a47a68be9d27f498efbdc" + }, + { + "m_Id": "22a4f2bbb19547d98e629b5457256e98" + }, + { + "m_Id": "5896ed619cd04ff489b04d60672e3189" + }, + { + "m_Id": "fef871dc0a5b451caf66105bcf58594e" + }, + { + "m_Id": "9fceb4c3f8a144599b3a6f5db2cff196" + } + ], + "synonyms": [ + "toggle", + "uber" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "f7ddf16e63294f30a544423d950ab192", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "fef871dc0a5b451caf66105bcf58594e", + "m_Id": 5, + "m_DisplayName": "Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Color", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } +} + diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Basic.shadergraph.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Basic.shadergraph.meta new file mode 100644 index 00000000000..5adf6bb5526 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Basic.shadergraph.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: 8db5c356140b0d146af1eaddcd26d491 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} + useAsTemplate: 0 + exposeTemplateAsShader: 0 + template: + name: + category: + description: + icon: {instanceID: 0} + thumbnail: {instanceID: 0} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded-OverrideTexture.shadergraph b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded-OverrideTexture.shadergraph new file mode 100644 index 00000000000..c8edb28d5ca --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded-OverrideTexture.shadergraph @@ -0,0 +1,1176 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "60457329f2fc4c8883a42f45289bd4f8", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "f7ddf16e63294f30a544423d950ab192" + } + ], + "m_Nodes": [ + { + "m_Id": "b7cbf91dbd9947e1ba4ad47261b31d54" + }, + { + "m_Id": "57c050165d2d45c498c3f10509ba6748" + }, + { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + { + "m_Id": "55dcddb8cab745aa8b66cd4a43cd0d96" + }, + { + "m_Id": "104217873b7e434cb3ac90b57002362c" + }, + { + "m_Id": "c067b783c8b14ec7a48b4f74d849e0a9" + }, + { + "m_Id": "b385066c1ec94f08a92e33888a74a7c9" + }, + { + "m_Id": "269f9cb01aca40df817314e2f9d17e23" + }, + { + "m_Id": "a58ece4aa8ae4584ba703006c6635e8f" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "104217873b7e434cb3ac90b57002362c" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "269f9cb01aca40df817314e2f9d17e23" + }, + "m_SlotId": 10 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 1 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "55dcddb8cab745aa8b66cd4a43cd0d96" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "a58ece4aa8ae4584ba703006c6635e8f" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "269f9cb01aca40df817314e2f9d17e23" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b385066c1ec94f08a92e33888a74a7c9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 4 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c067b783c8b14ec7a48b4f74d849e0a9" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 3 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 5 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b7cbf91dbd9947e1ba4ad47261b31d54" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 6 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "57c050165d2d45c498c3f10509ba6748" + }, + "m_SlotId": 0 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "b7cbf91dbd9947e1ba4ad47261b31d54" + }, + { + "m_Id": "57c050165d2d45c498c3f10509ba6748" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_SubDatas": [], + "m_ActiveTargets": [ + { + "m_Id": "8c2463d024604cfbabe49aa8639f46b2" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "09dd8102543c46d088b66ee12c0e7a9e", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultSDFTextNode", + "m_ObjectId": "104217873b7e434cb3ac90b57002362c", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default SDF Text", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -586.7999877929688, + "y": 200.00001525878907, + "width": 169.60000610351563, + "height": 77.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "8f338237b6274a7b81fbf2069b03e47f" + }, + { + "m_Id": "9385df217ef940c9a853c9495547da81" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "15d0223b36364106ba7af9ed7fa2e871", + "m_Id": 0, + "m_DisplayName": "Gradient", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Gradient", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "18af67b5882a47a68be9d27f498efbdc", + "m_Id": 2, + "m_DisplayName": "SDF Text", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "SDF Text", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "22a4f2bbb19547d98e629b5457256e98", + "m_Id": 3, + "m_DisplayName": "Bitmap Text", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Bitmap Text", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.SampleElementTextureNode", + "m_ObjectId": "269f9cb01aca40df817314e2f9d17e23", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Sample Element Texture", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -602.0, + "y": 50.99998474121094, + "width": 183.99996948242188, + "height": 149.00001525878907 + } + }, + "m_Slots": [ + { + "m_Id": "ab92d07448644d7dbb30b5e19dcfa1a9" + }, + { + "m_Id": "643b4d2869c64162990c819260f4925c" + }, + { + "m_Id": "660dc7e52513412fafcb821453780445" + }, + { + "m_Id": "2a26f8a858704e8da3d4702ca95575b9" + }, + { + "m_Id": "81993551b54148ccab3ff65f09e7493b" + }, + { + "m_Id": "a0e76159fafc4461bb37975df5effa90" + }, + { + "m_Id": "58ab202f169142ee901a3e9a54d1c39a" + }, + { + "m_Id": "b3da0870625b4524a10b3c4d3c3ccea2" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "2a26f8a858704e8da3d4702ca95575b9", + "m_Id": 3, + "m_DisplayName": "UV 3", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV 3", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "356b8b18d3d64d87ba2dcf8a855893c4", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "381e9f7bcbd74a6dbe48a9c1cdf40f65", + "m_Id": 0, + "m_DisplayName": "Solid", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Solid", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "4e9382d289c3488c881cb225a7b48459", + "m_Id": 1, + "m_DisplayName": "Bitmap Text", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Bitmap Text", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultSolidNode", + "m_ObjectId": "55dcddb8cab745aa8b66cd4a43cd0d96", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default Solid", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -537.0, + "y": -25.999996185302736, + "width": 118.99996948242188, + "height": 76.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "381e9f7bcbd74a6dbe48a9c1cdf40f65" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "57c050165d2d45c498c3f10509ba6748", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "09dd8102543c46d088b66ee12c0e7a9e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "5896ed619cd04ff489b04d60672e3189", + "m_Id": 4, + "m_DisplayName": "Gradient", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Gradient", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "58ab202f169142ee901a3e9a54d1c39a", + "m_Id": 12, + "m_DisplayName": "Color 2", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Color 2", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "643b4d2869c64162990c819260f4925c", + "m_Id": 1, + "m_DisplayName": "UV 1", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV 1", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "660dc7e52513412fafcb821453780445", + "m_Id": 2, + "m_DisplayName": "UV 2", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV 2", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "79ec22f5f4454fef906a8e9ecf61b05c", + "m_Id": 0, + "m_DisplayName": "Solid", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Solid", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "81993551b54148ccab3ff65f09e7493b", + "m_Id": 10, + "m_DisplayName": "Color 0", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Color 0", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "8c2463d024604cfbabe49aa8639f46b2", + "m_Datas": [ + { + "m_Id": "abdbd7512c5e40dfa416b40d79072d1d" + } + ], + "m_ActiveSubTarget": { + "m_Id": "a2941255da0149d5a02ba55d0a422024" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_DisableTint": false, + "m_Sort3Das2DCompatible": false, + "m_AdditionalMotionVectorMode": 0, + "m_AlembicMotionVectors": false, + "m_SupportsLODCrossFade": false, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "8e670839beb2448e9f6fdcd3ab32830c", + "m_Id": 0, + "m_DisplayName": "Tint", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tint", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "From Styles" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "8f338237b6274a7b81fbf2069b03e47f", + "m_Id": 0, + "m_DisplayName": "Tint", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tint", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "From Styles" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "9385df217ef940c9a853c9495547da81", + "m_Id": 1, + "m_DisplayName": "SDF Text", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "SDF Text", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9fceb4c3f8a144599b3a6f5db2cff196", + "m_Id": 6, + "m_DisplayName": "Alpha", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "a0e76159fafc4461bb37975df5effa90", + "m_Id": 11, + "m_DisplayName": "Color 1", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Color 1", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUISubTarget", + "m_ObjectId": "a2941255da0149d5a02ba55d0a422024" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "a3d67c6982dd4eb7af6dbea23746f974", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ElementTextureUVNode", + "m_ObjectId": "a58ece4aa8ae4584ba703006c6635e8f", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Element Texture UV", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -828.0, + "y": 22.9999942779541, + "width": 159.0, + "height": 77.00000762939453 + } + }, + "m_Slots": [ + { + "m_Id": "b1f497a1b71b4aa6b346ec48adeead2f" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "ab92d07448644d7dbb30b5e19dcfa1a9", + "m_Id": 0, + "m_DisplayName": "UV 0", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV 0", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.UITK.ShaderGraph.UIData", + "m_ObjectId": "abdbd7512c5e40dfa416b40d79072d1d", + "m_Version": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector2MaterialSlot", + "m_ObjectId": "b1f497a1b71b4aa6b346ec48adeead2f", + "m_Id": 0, + "m_DisplayName": "Texture UV", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Texture UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultGradientNode", + "m_ObjectId": "b385066c1ec94f08a92e33888a74a7c9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default Gradient", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -557.1998901367188, + "y": 356.0, + "width": 139.99990844726563, + "height": 78.0 + } + }, + "m_Slots": [ + { + "m_Id": "15d0223b36364106ba7af9ed7fa2e871" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", + "m_ObjectId": "b3da0870625b4524a10b3c4d3c3ccea2", + "m_Id": 13, + "m_DisplayName": "Color 3", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Color 3", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "b7cbf91dbd9947e1ba4ad47261b31d54", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "356b8b18d3d64d87ba2dcf8a855893c4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultBitmapTextNode", + "m_ObjectId": "c067b783c8b14ec7a48b4f74d849e0a9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default Bitmap Text", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -601.5999755859375, + "y": 278.0, + "width": 184.39999389648438, + "height": 78.0 + } + }, + "m_Slots": [ + { + "m_Id": "8e670839beb2448e9f6fdcd3ab32830c" + }, + { + "m_Id": "4e9382d289c3488c881cb225a7b48459" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RenderTypeBranchNode", + "m_ObjectId": "dfce8ad31a2e4ba6b46e7d93923b71ff", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Render Type Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -295.3999938964844, + "y": 151.8000030517578, + "width": 192.0, + "height": 174.0 + } + }, + "m_Slots": [ + { + "m_Id": "79ec22f5f4454fef906a8e9ecf61b05c" + }, + { + "m_Id": "a3d67c6982dd4eb7af6dbea23746f974" + }, + { + "m_Id": "18af67b5882a47a68be9d27f498efbdc" + }, + { + "m_Id": "22a4f2bbb19547d98e629b5457256e98" + }, + { + "m_Id": "5896ed619cd04ff489b04d60672e3189" + }, + { + "m_Id": "fef871dc0a5b451caf66105bcf58594e" + }, + { + "m_Id": "9fceb4c3f8a144599b3a6f5db2cff196" + } + ], + "synonyms": [ + "toggle", + "uber" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "f7ddf16e63294f30a544423d950ab192", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "fef871dc0a5b451caf66105bcf58594e", + "m_Id": 5, + "m_DisplayName": "Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Color", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } +} + diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded-OverrideTexture.shadergraph.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded-OverrideTexture.shadergraph.meta new file mode 100644 index 00000000000..05076f27d6a --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded-OverrideTexture.shadergraph.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: 68091752901f2e948864192d7b0139ab +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} + useAsTemplate: 0 + exposeTemplateAsShader: 0 + template: + name: + category: + description: + icon: {instanceID: 0} + thumbnail: {instanceID: 0} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded.shadergraph b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded.shadergraph new file mode 100644 index 00000000000..5eddcc433e3 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded.shadergraph @@ -0,0 +1,979 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "60457329f2fc4c8883a42f45289bd4f8", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "f7ddf16e63294f30a544423d950ab192" + } + ], + "m_Nodes": [ + { + "m_Id": "b7cbf91dbd9947e1ba4ad47261b31d54" + }, + { + "m_Id": "57c050165d2d45c498c3f10509ba6748" + }, + { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + { + "m_Id": "55dcddb8cab745aa8b66cd4a43cd0d96" + }, + { + "m_Id": "eed202d9a6534753906258fc752a87e5" + }, + { + "m_Id": "104217873b7e434cb3ac90b57002362c" + }, + { + "m_Id": "c067b783c8b14ec7a48b4f74d849e0a9" + }, + { + "m_Id": "b385066c1ec94f08a92e33888a74a7c9" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [ + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "104217873b7e434cb3ac90b57002362c" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 2 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "55dcddb8cab745aa8b66cd4a43cd0d96" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "b385066c1ec94f08a92e33888a74a7c9" + }, + "m_SlotId": 0 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 4 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "c067b783c8b14ec7a48b4f74d849e0a9" + }, + "m_SlotId": 1 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 3 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 5 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "b7cbf91dbd9947e1ba4ad47261b31d54" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 6 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "57c050165d2d45c498c3f10509ba6748" + }, + "m_SlotId": 0 + } + }, + { + "m_OutputSlot": { + "m_Node": { + "m_Id": "eed202d9a6534753906258fc752a87e5" + }, + "m_SlotId": 2 + }, + "m_InputSlot": { + "m_Node": { + "m_Id": "dfce8ad31a2e4ba6b46e7d93923b71ff" + }, + "m_SlotId": 1 + } + } + ], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "b7cbf91dbd9947e1ba4ad47261b31d54" + }, + { + "m_Id": "57c050165d2d45c498c3f10509ba6748" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_SubDatas": [], + "m_ActiveTargets": [ + { + "m_Id": "8c2463d024604cfbabe49aa8639f46b2" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "09dd8102543c46d088b66ee12c0e7a9e", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultSDFTextNode", + "m_ObjectId": "104217873b7e434cb3ac90b57002362c", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default SDF Text", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -586.7999877929688, + "y": 200.00001525878907, + "width": 169.60000610351563, + "height": 77.99998474121094 + } + }, + "m_Slots": [ + { + "m_Id": "8f338237b6274a7b81fbf2069b03e47f" + }, + { + "m_Id": "9385df217ef940c9a853c9495547da81" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "15d0223b36364106ba7af9ed7fa2e871", + "m_Id": 0, + "m_DisplayName": "Gradient", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Gradient", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "18af67b5882a47a68be9d27f498efbdc", + "m_Id": 2, + "m_DisplayName": "SDF Text", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "SDF Text", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "22a4f2bbb19547d98e629b5457256e98", + "m_Id": 3, + "m_DisplayName": "Bitmap Text", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Bitmap Text", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector2MaterialSlot", + "m_ObjectId": "26186555abcd4b418b24105f360634a3", + "m_Id": 0, + "m_DisplayName": "UV", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "UV", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "356b8b18d3d64d87ba2dcf8a855893c4", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_DefaultValue": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "381e9f7bcbd74a6dbe48a9c1cdf40f65", + "m_Id": 0, + "m_DisplayName": "Solid", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Solid", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "4e9382d289c3488c881cb225a7b48459", + "m_Id": 1, + "m_DisplayName": "Bitmap Text", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Bitmap Text", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultSolidNode", + "m_ObjectId": "55dcddb8cab745aa8b66cd4a43cd0d96", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default Solid", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -536.3999633789063, + "y": 20.40001106262207, + "width": 119.19998168945313, + "height": 78.0 + } + }, + "m_Slots": [ + { + "m_Id": "381e9f7bcbd74a6dbe48a9c1cdf40f65" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "57c050165d2d45c498c3f10509ba6748", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "09dd8102543c46d088b66ee12c0e7a9e" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "5896ed619cd04ff489b04d60672e3189", + "m_Id": 4, + "m_DisplayName": "Gradient", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Gradient", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "79ec22f5f4454fef906a8e9ecf61b05c", + "m_Id": 0, + "m_DisplayName": "Solid", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Solid", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "7afdad5087454c3cb8822f55a1019571", + "m_Id": 1, + "m_DisplayName": "Tint", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tint", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "From Styles" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "8c2463d024604cfbabe49aa8639f46b2", + "m_Datas": [ + { + "m_Id": "abdbd7512c5e40dfa416b40d79072d1d" + } + ], + "m_ActiveSubTarget": { + "m_Id": "a2941255da0149d5a02ba55d0a422024" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_DisableTint": false, + "m_Sort3Das2DCompatible": false, + "m_AdditionalMotionVectorMode": 0, + "m_AlembicMotionVectors": false, + "m_SupportsLODCrossFade": false, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "8e670839beb2448e9f6fdcd3ab32830c", + "m_Id": 0, + "m_DisplayName": "Tint", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tint", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "From Styles" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "8f338237b6274a7b81fbf2069b03e47f", + "m_Id": 0, + "m_DisplayName": "Tint", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Tint", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "From Styles" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "9385df217ef940c9a853c9495547da81", + "m_Id": 1, + "m_DisplayName": "SDF Text", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "SDF Text", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "9fceb4c3f8a144599b3a6f5db2cff196", + "m_Id": 6, + "m_DisplayName": "Alpha", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUISubTarget", + "m_ObjectId": "a2941255da0149d5a02ba55d0a422024" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", + "m_ObjectId": "a3d67c6982dd4eb7af6dbea23746f974", + "m_Id": 1, + "m_DisplayName": "Texture", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 3, + "m_Value": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_DefaultValue": { + "x": 0.0, + "y": 0.0, + "z": 0.0, + "w": 0.0 + }, + "m_Labels": [], + "m_DefaultLabel": "Default" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.UITK.ShaderGraph.UIData", + "m_ObjectId": "abdbd7512c5e40dfa416b40d79072d1d", + "m_Version": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultGradientNode", + "m_ObjectId": "b385066c1ec94f08a92e33888a74a7c9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default Gradient", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -557.1998901367188, + "y": 356.0, + "width": 139.99990844726563, + "height": 78.0 + } + }, + "m_Slots": [ + { + "m_Id": "15d0223b36364106ba7af9ed7fa2e871" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "b7cbf91dbd9947e1ba4ad47261b31d54", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "356b8b18d3d64d87ba2dcf8a855893c4" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultBitmapTextNode", + "m_ObjectId": "c067b783c8b14ec7a48b4f74d849e0a9", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default Bitmap Text", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -601.5999755859375, + "y": 278.0, + "width": 184.39999389648438, + "height": 78.0 + } + }, + "m_Slots": [ + { + "m_Id": "8e670839beb2448e9f6fdcd3ab32830c" + }, + { + "m_Id": "4e9382d289c3488c881cb225a7b48459" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.RenderTypeBranchNode", + "m_ObjectId": "dfce8ad31a2e4ba6b46e7d93923b71ff", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Render Type Branch", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -295.3999938964844, + "y": 151.8000030517578, + "width": 192.0, + "height": 174.0 + } + }, + "m_Slots": [ + { + "m_Id": "79ec22f5f4454fef906a8e9ecf61b05c" + }, + { + "m_Id": "a3d67c6982dd4eb7af6dbea23746f974" + }, + { + "m_Id": "18af67b5882a47a68be9d27f498efbdc" + }, + { + "m_Id": "22a4f2bbb19547d98e629b5457256e98" + }, + { + "m_Id": "5896ed619cd04ff489b04d60672e3189" + }, + { + "m_Id": "fef871dc0a5b451caf66105bcf58594e" + }, + { + "m_Id": "9fceb4c3f8a144599b3a6f5db2cff196" + } + ], + "synonyms": [ + "toggle", + "uber" + ], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.DefaultTextureNode", + "m_ObjectId": "eed202d9a6534753906258fc752a87e5", + "m_Group": { + "m_Id": "" + }, + "m_Name": "Default Texture", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": -579.199951171875, + "y": 97.99998474121094, + "width": 161.99996948242188, + "height": 102.00003051757813 + } + }, + "m_Slots": [ + { + "m_Id": "26186555abcd4b418b24105f360634a3" + }, + { + "m_Id": "7afdad5087454c3cb8822f55a1019571" + }, + { + "m_Id": "f756a9e3ec34451293ccafabd337b1be" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", + "m_ObjectId": "f756a9e3ec34451293ccafabd337b1be", + "m_Id": 2, + "m_DisplayName": "Texture", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Texture", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0, + "w": 1.0 + }, + "m_Labels": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "f7ddf16e63294f30a544423d950ab192", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "fef871dc0a5b451caf66105bcf58594e", + "m_Id": 5, + "m_DisplayName": "Color", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Color", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_DefaultValue": { + "x": 1.0, + "y": 1.0, + "z": 1.0 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 1.0, + "g": 1.0, + "b": 1.0, + "a": 1.0 + } +} + diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded.shadergraph.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded.shadergraph.meta new file mode 100644 index 00000000000..829210624f3 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/362_UIToolkit_Keywords/362-Custom-Expanded.shadergraph.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: bd1fb10d7b100ed4091ead23cdcb4e41 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} + useAsTemplate: 0 + exposeTemplateAsShader: 0 + template: + name: + category: + description: + icon: {instanceID: 0} + thumbnail: {instanceID: 0} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Packages/manifest.json b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Packages/manifest.json index 2c16280198a..f9c8ae659a0 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Packages/manifest.json +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Packages/manifest.json @@ -15,10 +15,11 @@ "com.unity.shadergraph": "file:../../../../../Packages/com.unity.shadergraph", "com.unity.test-framework": "file:../../../../../Packages/com.unity.test-framework", "com.unity.testframework.graphics": "file:../../../Packages/com.unity.test-framework.graphics", - "com.unity.testing.urp": "file:../../../Packages/com.unity.testing.urp", "com.unity.testing.common-graphics": "file:../../../Packages/com.unity.testing.common-graphics", + "com.unity.testing.urp": "file:../../../Packages/com.unity.testing.urp", "com.unity.testing.xr": "file:../../../Packages/com.unity.testing.xr", "com.unity.ugui": "2.0.0", + "com.unity.ui.tests.shaders": "file:../../../../Packages.Misc/com.unity.ui.tests.shaders", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", "com.unity.modules.animation": "1.0.0", diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset index 5022d619593..a14d112d6f6 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/ProjectSettings/EditorBuildSettings.asset @@ -569,6 +569,12 @@ EditorBuildSettings: - enabled: 1 path: Assets/Scenes/360_Shader_Graphs_UITK.unity guid: 131227f8302d12c49aa595b7f090a7a7 + - enabled: 1 + path: Assets/Scenes/361_UIToolkit_Blending.unity + guid: 4ecd08597ff2da342b149c57aa96d35b + - enabled: 1 + path: Assets/Scenes/362_UIToolkit_Keywords.unity + guid: e9b15c579f66cc94c951cdd18318f5ef m_configObjects: com.unity.xr.management.loader_settings: {fileID: 11400000, guid: 20e925b8abdd424429b17f709e9d00f8, type: 2} From 9b6d2cdf0036d90aa4114a60068639ccb0fc1b74 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Tue, 23 Sep 2025 16:01:21 +0000 Subject: [PATCH 28/65] [Port] [6000.3] Fix asserts in Rendering Debugger > Volumes tab --- .../Runtime/Debugging/DebugUI.Fields.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Packages/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Fields.cs b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Fields.cs index 9d5e3346112..2f732228409 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Fields.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/Debugging/DebugUI.Fields.cs @@ -85,7 +85,9 @@ public void SetValue(object value) /// Input value. public virtual void SetValue(T value) { - Assert.IsNotNull(setter); + if (setter == null) + return; + var v = ValidateValue(value); if (v == null || !v.Equals(getter())) From 6ae3d06269d34750eb4a8658074bdc24159d6c31 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Tue, 23 Sep 2025 16:01:21 +0000 Subject: [PATCH 29/65] [Port] [6000.3] [UUM-113119] Fixed specular highlight appearing on terrain grass --- .../Shaders/Terrain/WavingGrassPasses.hlsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/WavingGrassPasses.hlsl b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/WavingGrassPasses.hlsl index ebbbe68f6e4..faf772d6527 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/WavingGrassPasses.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/WavingGrassPasses.hlsl @@ -202,7 +202,7 @@ inline void InitializeSimpleLitSurfaceData(GrassVertexOutput input, out SurfaceD outSurfaceData.alpha = alpha; outSurfaceData.albedo = diffuse; outSurfaceData.metallic = 0.0; // unused - outSurfaceData.specular = 0.1;// SampleSpecularSmoothness(uv, diffuseAlpha.a, _SpecColor, TEXTURE2D_ARGS(_SpecGlossMap, sampler_SpecGlossMap)); + outSurfaceData.specular = 0.0; // To match forward pass (UUM-113119) outSurfaceData.smoothness = input.posWSShininess.w; outSurfaceData.normalTS = 0.0; // unused outSurfaceData.occlusion = 1.0; From ca580cb21743d734ba23d9bf15674902a4192518 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Tue, 23 Sep 2025 16:01:21 +0000 Subject: [PATCH 30/65] [Port] [6000.3] Only enable the reflection probe atlas keyword if using Forward+ --- .../Runtime/ForwardLights.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/ForwardLights.cs b/Packages/com.unity.render-pipelines.universal/Runtime/ForwardLights.cs index feb63f60ca6..29fd48c7baa 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/ForwardLights.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/ForwardLights.cs @@ -515,7 +515,7 @@ internal void SetupLights(UnsafeCommandBuffer cmd, UniversalRenderingData render cmd.SetKeyword(ShaderGlobalKeywords.MixedLightingSubtractive, isSubtractive); // Backward compatibility cmd.SetKeyword(ShaderGlobalKeywords.ReflectionProbeBlending, lightData.reflectionProbeBlending); cmd.SetKeyword(ShaderGlobalKeywords.ReflectionProbeBoxProjection, lightData.reflectionProbeBoxProjection); - cmd.SetKeyword(ShaderGlobalKeywords.ReflectionProbeAtlas, lightData.reflectionProbeAtlas); + cmd.SetKeyword(ShaderGlobalKeywords.ReflectionProbeAtlas, lightData.reflectionProbeAtlas && m_UseForwardPlus); var asset = UniversalRenderPipeline.asset; From 971ef3c0f7b498c265c6cbcd9feea0f7293ee3ac Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Wed, 24 Sep 2025 17:54:28 +0000 Subject: [PATCH 31/65] [Port] [6000.3] [URP] Fix Screen Space Shadows depth precision issue --- .../Shaders/Utils/ScreenSpaceShadows.shader | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Utils/ScreenSpaceShadows.shader b/Packages/com.unity.render-pipelines.universal/Shaders/Utils/ScreenSpaceShadows.shader index 9bf64a835ae..2b84a80d86f 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Utils/ScreenSpaceShadows.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Utils/ScreenSpaceShadows.shader @@ -20,10 +20,8 @@ Shader "Hidden/Universal Render Pipeline/ScreenSpaceShadows" { UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input); -#if UNITY_REVERSED_Z - float deviceDepth = SAMPLE_TEXTURE2D_X(_CameraDepthTexture, sampler_PointClamp, input.texcoord.xy).r; -#else - float deviceDepth = SAMPLE_TEXTURE2D_X(_CameraDepthTexture, sampler_PointClamp, input.texcoord.xy).r; + float deviceDepth = LoadSceneDepth(input.positionCS.xy); +#if !UNITY_REVERSED_Z deviceDepth = deviceDepth * 2.0 - 1.0; #endif From a35faa2fd870d6d7e0d61bef3fd1f35d79fbff8e Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Wed, 24 Sep 2025 17:54:28 +0000 Subject: [PATCH 32/65] [Port] [6000.3] Fix incorrect render target type in terrain shader --- .../Shaders/Terrain/TerrainLitDepthNormalsPass.hlsl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitDepthNormalsPass.hlsl b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitDepthNormalsPass.hlsl index 597906127e6..aa297c36f63 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitDepthNormalsPass.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Shaders/Terrain/TerrainLitDepthNormalsPass.hlsl @@ -71,7 +71,7 @@ void DepthNormalOnlyFragment( VaryingsDepthNormal IN , out half4 outNormalWS : SV_Target0 #ifdef _WRITE_RENDERING_LAYERS - , out uint4 outRenderingLayers : SV_Target1 + , out uint outRenderingLayers : SV_Target1 #endif ) { From 8f963d4f240832fc77f69456fe245848bdee8a94 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Wed, 24 Sep 2025 17:54:29 +0000 Subject: [PATCH 33/65] [Port] [6000.3] Fix RG Viewer UI refresh slowdown --- .../Editor/RenderGraph/RenderGraphViewer.cs | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/Packages/com.unity.render-pipelines.core/Editor/RenderGraph/RenderGraphViewer.cs b/Packages/com.unity.render-pipelines.core/Editor/RenderGraph/RenderGraphViewer.cs index 15cc8dec182..5a86ad27577 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/RenderGraph/RenderGraphViewer.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/RenderGraph/RenderGraphViewer.cs @@ -919,6 +919,10 @@ bool HasFlag(T value, T flag) where T : Enum return (Convert.ToInt32(value) & Convert.ToInt32(flag)) == Convert.ToInt32(flag); } + // Need to keep track of the ToggleDropdown event handlers to be able to remove them when rebuilding the UI + readonly Dictionary> m_ToggleHandlers = new(); + readonly Dictionary> m_SelectionHandlers = new(); + void BuildEnumFlagsToggleDropdown(ToggleDropdown dropdown, T currentValue, string prefsKey, Action setValue, bool defaultEnabled = true) where T : Enum { if (!HasValidDebugData) @@ -928,6 +932,12 @@ void BuildEnumFlagsToggleDropdown(ToggleDropdown dropdown, T currentValue, st } dropdown.style.display = DisplayStyle.Flex; + // Unsubscribe old handlers if present + if (m_ToggleHandlers.TryGetValue(dropdown, out var oldToggleChanged)) + dropdown.toggleChanged -= oldToggleChanged; + if (m_SelectionHandlers.TryGetValue(dropdown, out var oldSelectionChanged)) + dropdown.selectionChanged -= oldSelectionChanged; + Array enumValues = Enum.GetValues(typeof(T)); List optionNames = new List(); List values = new List(); @@ -959,13 +969,15 @@ void BuildEnumFlagsToggleDropdown(ToggleDropdown dropdown, T currentValue, st dropdown.SetEnabled(isEnabled); UpdateFilterEnabledState(prefsKey, isEnabled); - dropdown.toggleChanged += (enabled) => { + Action toggleChanged = enabled => + { UpdateFilterEnabledState(prefsKey, enabled); SaveFilterEnabledState(prefsKey, enabled); RebuildGraphViewerUI(); }; - dropdown.selectionChanged += (indices) => { + Action selectionChanged = indices => + { int newValueInt = 0; foreach (int index in indices) { @@ -984,6 +996,12 @@ void BuildEnumFlagsToggleDropdown(ToggleDropdown dropdown, T currentValue, st RebuildGraphViewerUI(); } }; + + m_ToggleHandlers[dropdown] = toggleChanged; + dropdown.toggleChanged += toggleChanged; + + m_SelectionHandlers[dropdown] = selectionChanged; + dropdown.selectionChanged += selectionChanged; } bool GetFilterEnabledState(string prefsKey, bool defaultValue) From 114409db83db9d8d0c87b05b2ea5d3ec67d9df0c Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Wed, 24 Sep 2025 17:54:29 +0000 Subject: [PATCH 34/65] [Port] [6000.3] Graphics/SRP/HDRP - [UUM-117667] - Fwd port of an async compute fix, pass culling enabled for more passes and other small optimizations in HDRP --- .../Compiler/NativePassCompiler.cs | 36 ++++++++++++++----- .../RenderGraphResourceRegistry.cs | 7 +++- .../Runtime/Lighting/Shadow/HDShadowAtlas.cs | 2 +- .../Lighting/Shadow/HDShadowManager.cs | 16 ++++----- .../HDRenderPipeline.VolumetricCloudsMap.cs | 3 +- .../HDRenderPipeline.PostProcess.cs | 4 --- .../RenderPipeline/HDRenderPipeline.cs | 9 ++--- .../Runtime/Sky/SkyManager.cs | 4 +-- 8 files changed, 46 insertions(+), 35 deletions(-) diff --git a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/NativePassCompiler.cs b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/NativePassCompiler.cs index 6ee0ecefcdb..e9d827c25be 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/NativePassCompiler.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/Compiler/NativePassCompiler.cs @@ -923,8 +923,10 @@ internal static bool IsSameNativeSubPass(ref SubPassDescriptor a, ref SubPassDes return true; } - private void ExecuteInitializeResource(InternalRenderGraphContext rgContext, RenderGraphResourceRegistry resources, in PassData pass) + private bool ExecuteInitializeResource(InternalRenderGraphContext rgContext, RenderGraphResourceRegistry resources, in PassData pass) { + bool haveGfxCommandsBeenAddedToCmd = false; + using (new ProfilingScope(ProfilingSampler.Get(NativeCompilerProfileId.NRPRGComp_ExecuteInitializeResources))) { resources.forceManualClearOfResource = true; @@ -960,12 +962,14 @@ private void ExecuteInitializeResource(InternalRenderGraphContext rgContext, Ren // We create the resources from a pool // memoryless resources are also created but will not allocate in system memory - resources.CreatePooledResource(rgContext, res.iType, res.index); + haveGfxCommandsBeenAddedToCmd |= resources.CreatePooledResource(rgContext, res.iType, res.index); } else // Imported resource { if (resInfo.clear && !resInfo.memoryLess && resources.forceManualClearOfResource) - resources.ClearResource(rgContext, res.iType, res.index); + { + haveGfxCommandsBeenAddedToCmd |= resources.ClearResource(rgContext, res.iType, res.index); + } } } } @@ -979,18 +983,22 @@ private void ExecuteInitializeResource(InternalRenderGraphContext rgContext, Ren ref readonly var pointTo = ref contextData.UnversionedResourceData(create); if (!pointTo.isImported) { - resources.CreatePooledResource(rgContext, create.iType, create.index); + haveGfxCommandsBeenAddedToCmd |= resources.CreatePooledResource(rgContext, create.iType, create.index); } else // Imported resource { if (pointTo.clear) - resources.ClearResource(rgContext, create.iType, create.index); + { + haveGfxCommandsBeenAddedToCmd |= resources.ClearResource(rgContext, create.iType, create.index); + } } } } resources.forceManualClearOfResource = true; } + + return haveGfxCommandsBeenAddedToCmd; } #if UNITY_EDITOR || DEVELOPMENT_BUILD @@ -1738,10 +1746,17 @@ public void ExecuteGraph(InternalRenderGraphContext rgContext, RenderGraphResour continue; bool nrpBegan = false; - ExecuteInitializeResource(rgContext, resources, passData); + bool haveGfxCommandsBeenAddedToCmdDuringResInit = ExecuteInitializeResource(rgContext, resources, passData); if (passData.type == RenderGraphPassType.Compute && passData.asyncCompute) { + GraphicsFence previousFence = new GraphicsFence(); + // We add a fence to the gfx cmd if the async compute cmd needs to wait for some resources to be cleared + if (haveGfxCommandsBeenAddedToCmdDuringResInit) + { + previousFence = rgContext.cmd.CreateGraphicsFence(GraphicsFenceType.AsyncQueueSynchronisation, SynchronisationStageFlags.AllGPUOperations); + } + if (!rgContext.contextlessTesting) rgContext.renderContext.ExecuteCommandBuffer(rgContext.cmd); rgContext.cmd.Clear(); @@ -1749,6 +1764,11 @@ public void ExecuteGraph(InternalRenderGraphContext rgContext, RenderGraphResour var asyncCmd = CommandBufferPool.Get("async cmd"); asyncCmd.SetExecutionFlags(CommandBufferExecutionFlags.AsyncCompute); rgContext.cmd = asyncCmd; + + if (haveGfxCommandsBeenAddedToCmdDuringResInit) + { + rgContext.cmd.WaitOnAsyncGraphicsFence(previousFence, SynchronisationStageFlags.PixelProcessing); + } } // also make sure to insert fence=waits for multiple queue syncs @@ -1771,7 +1791,6 @@ public void ExecuteGraph(InternalRenderGraphContext rgContext, RenderGraphResour } } } - else if (passData.type == RenderGraphPassType.Unsafe) { ExecuteSetRenderTargets(passes[passIndex], rgContext); @@ -1792,7 +1811,7 @@ public void ExecuteGraph(InternalRenderGraphContext rgContext, RenderGraphResour if (passData.numRandomAccessResources > 0) { - foreach (var randomWriteAttachment in passData.RandomWriteTextures(contextData)) + foreach (ref readonly var randomWriteAttachment in passData.RandomWriteTextures(contextData)) { ExecuteSetRandomWriteTarget(rgContext.cmd, resources, randomWriteAttachment.index, randomWriteAttachment.resource); @@ -1801,7 +1820,6 @@ public void ExecuteGraph(InternalRenderGraphContext rgContext, RenderGraphResour ExecuteRenderGraphPass(ref rgContext, resources, passes[passData.passId]); EndRenderGraphPass(ref rgContext, ref passData, ref inRenderPass, resources, nrpBegan); - } } diff --git a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphResourceRegistry.cs b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphResourceRegistry.cs index 5384103c02f..4358957dbbf 100644 --- a/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphResourceRegistry.cs +++ b/Packages/com.unity.render-pipelines.core/Runtime/RenderGraph/RenderGraphResourceRegistry.cs @@ -1078,15 +1078,20 @@ bool CreateTextureCallback(InternalRenderGraphContext rgContext, IRenderGraphRes return executedWork; } - internal void ClearResource(InternalRenderGraphContext rgContext, int type, int index) + internal bool ClearResource(InternalRenderGraphContext rgContext, int type, int index) { + bool executedWork = false; + var resource = m_RenderGraphResources[type].resourceArray[index]; // Only TextureResource for now, but we expect to want to handle other types of resources in the future if (resource is TextureResource textureResource) { ClearTexture(rgContext, textureResource); + executedWork = true; } + + return executedWork; } private void ClearTexture(InternalRenderGraphContext rgContext, TextureResource resource) diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowAtlas.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowAtlas.cs index 20bc3ba41e8..6d9eba6c82e 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowAtlas.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowAtlas.cs @@ -433,7 +433,7 @@ internal unsafe TextureHandle RenderShadowMaps(RenderGraph renderGraph, Scriptab { TextureHandle atlasTexture; - using (var builder = renderGraph.AddUnsafePass("Render Shadow Maps", out var passData, ProfilingSampler.Get(HDProfileId.RenderShadowMaps))) + using (var builder = renderGraph.AddUnsafePass(shadowPassName, out var passData, ProfilingSampler.Get(HDProfileId.RenderShadowMaps))) { SetCommonRenderPassData(passData, builder, renderGraph, globalCBData); diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowManager.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowManager.cs index d2c9245b7ae..d106abcb19b 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowManager.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/Shadow/HDShadowManager.cs @@ -1381,15 +1381,15 @@ internal void RenderShadows(RenderGraph renderGraph, ScriptableRenderContext ren (hdCamera.frameSettings.IsEnabled(FrameSettingsField.OpaqueObjects) || hdCamera.frameSettings.IsEnabled(FrameSettingsField.TransparentObjects))) { // Punctual - result.cachedPunctualShadowResult = cachedShadowManager.punctualShadowAtlas.RenderShadows(renderGraph, renderContext, cullResults, globalCB, hdCamera.frameSettings, "Cached Punctual Lights Shadows rendering"); + result.cachedPunctualShadowResult = cachedShadowManager.punctualShadowAtlas.RenderShadows(renderGraph, renderContext, cullResults, globalCB, hdCamera.frameSettings, "Render Cached Punctual Lights Shadow Maps"); BlitCachedShadows(renderGraph, ShadowMapType.PunctualAtlas); - result.punctualShadowResult = m_Atlas.RenderShadows(renderGraph, renderContext, cullResults, globalCB, hdCamera.frameSettings, "Punctual Lights Shadows rendering"); + result.punctualShadowResult = m_Atlas.RenderShadows(renderGraph, renderContext, cullResults, globalCB, hdCamera.frameSettings, "Render Punctual Lights Shadow Maps"); if (ShaderConfig.s_AreaLights == 1) { - cachedShadowManager.areaShadowAtlas.RenderShadowMaps(renderGraph, renderContext, cullResults, globalCB, hdCamera.frameSettings, "Cached Area Lights Shadows rendering"); + cachedShadowManager.areaShadowAtlas.RenderShadowMaps(renderGraph, renderContext, cullResults, globalCB, hdCamera.frameSettings, "Render Cached Area Lights Shadow Maps"); BlitCachedShadows(renderGraph, ShadowMapType.AreaLightAtlas); - m_AreaLightShadowAtlas.RenderShadowMaps(renderGraph, renderContext, cullResults, globalCB, hdCamera.frameSettings, "Area Light Shadows rendering"); + m_AreaLightShadowAtlas.RenderShadowMaps(renderGraph, renderContext, cullResults, globalCB, hdCamera.frameSettings, "Render Area Light Shadow Maps"); result.areaShadowResult = m_AreaLightShadowAtlas.BlurShadows(renderGraph); result.cachedAreaShadowResult = cachedShadowManager.areaShadowAtlas.BlurShadows(renderGraph); } @@ -1400,11 +1400,11 @@ internal void RenderShadows(RenderGraph renderGraph, ScriptableRenderContext ren if (cachedShadowManager.directionalLightAtlas.HasShadowRequests()) { cachedShadowManager.UpdateDirectionalCacheTexture(renderGraph); - cachedShadowManager.directionalLightAtlas.RenderShadows(renderGraph, renderContext, cullResults, globalCB, hdCamera.frameSettings, "Cached Directional Lights Shadows rendering"); + cachedShadowManager.directionalLightAtlas.RenderShadows(renderGraph, renderContext, cullResults, globalCB, hdCamera.frameSettings, "Render Cached Directional Lights Shadow Maps"); } BlitCachedShadows(renderGraph, ShadowMapType.CascadedDirectional); } - result.directionalShadowResult = m_CascadeAtlas.RenderShadows(renderGraph, renderContext, cullResults, globalCB, hdCamera.frameSettings, "Directional Light Shadows rendering"); + result.directionalShadowResult = m_CascadeAtlas.RenderShadows(renderGraph, renderContext, cullResults, globalCB, hdCamera.frameSettings, "Render Directional Light Shadow Maps"); } // TODO RENDERGRAPH @@ -1464,7 +1464,7 @@ void BindShadowGlobalResources(RenderGraph renderGraph, in ShadowResult shadowRe using (var builder = renderGraph.AddUnsafePass("BindShadowGlobalResources", out var passData)) { passData.shadowResult = ReadShadowResult(shadowResult, builder); - builder.AllowPassCulling(false); + builder.AllowGlobalStateModification(true); builder.SetRenderFunc( (BindShadowGlobalResourcesPassData data, UnsafeGraphContext ctx) => { @@ -1481,7 +1481,7 @@ internal static void BindDefaultShadowGlobalResources(RenderGraph renderGraph) { using (var builder = renderGraph.AddUnsafePass("BindDefaultShadowGlobalResources", out var passData)) { - builder.AllowPassCulling(false); + builder.AllowGlobalStateModification(true); builder.SetRenderFunc( (BindShadowGlobalResourcesPassData data, UnsafeGraphContext ctx) => { diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/HDRenderPipeline.VolumetricCloudsMap.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/HDRenderPipeline.VolumetricCloudsMap.cs index d5a6a27e800..a2f5576fcde 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/HDRenderPipeline.VolumetricCloudsMap.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/VolumetricClouds/HDRenderPipeline.VolumetricCloudsMap.cs @@ -160,10 +160,9 @@ void PreRenderVolumetricCloudMap(RenderGraph renderGraph, HDCamera hdCamera, in using (var builder = renderGraph.AddUnsafePass("Volumetric cloud map generation", out var passData, ProfilingSampler.Get(HDProfileId.VolumetricCloudMapGeneration))) { - builder.AllowPassCulling(false); - passData.parameters = PrepareCloudMapGenerationParameters(in settings); passData.cloudMapTexture = renderGraph.ImportTexture(m_AdvancedCloudMap); + builder.UseTexture(passData.cloudMapTexture, AccessFlags.Write); builder.SetRenderFunc( (VolumetricCloudsMapData data, UnsafeGraphContext ctx) => diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.PostProcess.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.PostProcess.cs index 8dcfc7ef7e4..4e897240238 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.PostProcess.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.PostProcess.cs @@ -6019,10 +6019,6 @@ void FinalPass(RenderGraph renderGraph, HDCamera hdCamera, TextureHandle afterPo passData.cubemapFace = cubemapFace; passData.postProcessIsFinalPass = postProcessIsFinalPass; - builder.AllowPassCulling(false); // TODO RG P2 - remove it - // - something is wrong with intermediate postprocess buffer not used anywhere - // -> whole dependency chain being culled - check RG Viewer - if (passData.hdrOutputIsActive) { GetHDROutputParameters(HDRDisplayInformationForCamera(hdCamera), HDRDisplayColorGamutForCamera(hdCamera), m_Tonemapping, out passData.hdroutParameters, out passData.hdroutParameters2); diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs index 2653a86dd85..a1c16e3eac7 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/HDRenderPipeline.cs @@ -2122,7 +2122,7 @@ void ExecuteAOVRenderRequests(in RenderRequest renderRequest, CommandBuffer cmd, } } - void EndRenderRequest(in RenderRequest renderRequest, CommandBuffer cmd) + void EndRenderRequest(in RenderRequest renderRequest) { // release reference because the RenderTexture might be destroyed before the camera if (renderRequest.clearCameraSettings) @@ -2429,7 +2429,7 @@ protected override void Render(ScriptableRenderContext renderContext, List.Get(out var aovCustomPassBuffers)) - - // This is required so that all commands up to here are executed before EndCameraRendering is called for the user. - // Otherwise command would not be rendered in order. - renderContext.ExecuteCommandBuffer(cmd); - cmd.Clear(); } void SetupCameraProperties(HDCamera hdCamera, ScriptableRenderContext renderContext, CommandBuffer cmd) diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Sky/SkyManager.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Sky/SkyManager.cs index db0efef880f..f529681382a 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Sky/SkyManager.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Sky/SkyManager.cs @@ -373,7 +373,7 @@ void SetGlobalSkyData(RenderGraph renderGraph, SkyUpdateContext skyContext, Buil { using (var builder = renderGraph.AddUnsafePass("SetGlobalSkyData", out var passData)) { - builder.AllowPassCulling(false); + builder.AllowGlobalStateModification(true); builtinParameters.CopyTo(passData.builtinParameters); passData.builtinParameters.skySettings = skyContext.skySettings; @@ -780,8 +780,6 @@ void RenderSkyToCubemap(RenderGraph renderGraph, SkyUpdateContext skyContext, HD { using (var builder = renderGraph.AddUnsafePass("RenderSkyToCubemap", out var passData, ProfilingSampler.Get(profileId))) { - builder.AllowPassCulling(false); - UpdateBuiltinParameters(ref passData.builtinParameters, skyContext, hdCamera, m_CurrentSunLight, m_CurrentDebugDisplaySettings); ref var cachedContext = ref m_CachedSkyContexts[skyContext.cachedSkyRenderingContextId]; From 6207219bf6160595c0aa7d35a2927e569264b2d2 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Thu, 25 Sep 2025 17:32:47 +0000 Subject: [PATCH 35/65] [Port] [6000.3] Volume profile context action fixes --- .../Settings/DefaultVolumeProfileEditor.cs | 2 +- .../Editor/Volume/VolumeComponentCopyPaste.cs | 14 ++++- .../Volume/VolumeComponentListEditor.cs | 2 +- .../Editor/Volume/VolumeEditor.cs | 59 +++++++++++++++---- .../Editor/Volume/VolumeProfileUtils.cs | 4 +- .../Volumes/VolumeComponentCopyPasteTests.cs | 57 +++++++++++++++--- 6 files changed, 110 insertions(+), 28 deletions(-) diff --git a/Packages/com.unity.render-pipelines.core/Editor/Settings/DefaultVolumeProfileEditor.cs b/Packages/com.unity.render-pipelines.core/Editor/Settings/DefaultVolumeProfileEditor.cs index 1d4694b4b79..3e2818c1b15 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Settings/DefaultVolumeProfileEditor.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Settings/DefaultVolumeProfileEditor.cs @@ -244,7 +244,7 @@ void OnVolumeComponentContextClick(Vector2 position, VolumeComponentEditor targe menu.AddItem(VolumeProfileUtils.Styles.copySettings, false, () => VolumeComponentCopyPaste.CopySettings(targetComponent)); if (VolumeComponentCopyPaste.CanPaste(targetComponent)) - menu.AddItem(VolumeProfileUtils.Styles.pasteSettings, false, () => VolumeComponentCopyPaste.PasteSettings(targetComponent)); + menu.AddItem(VolumeProfileUtils.Styles.pasteSettings, false, () => VolumeComponentCopyPaste.PasteSettings(targetComponent, m_Profile)); else menu.AddDisabledItem(VolumeProfileUtils.Styles.pasteSettings); diff --git a/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentCopyPaste.cs b/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentCopyPaste.cs index 6dda2991f2b..439365c2e2f 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentCopyPaste.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentCopyPaste.cs @@ -62,7 +62,7 @@ public static void CopySettings(VolumeComponent targetComponent) EditorGUIUtility.systemCopyBuffer = writer.ToString(); } - public static void PasteSettings(VolumeComponent targetComponent) + public static void PasteSettings(VolumeComponent targetComponent, VolumeProfile asset) { if (targetComponent == null) return; @@ -72,6 +72,11 @@ public static void PasteSettings(VolumeComponent targetComponent) using var reader = new StringReader(EditorGUIUtility.systemCopyBuffer); if (TryReadCopyBuffer(reader, out var typeAndValue)) JsonUtility.FromJsonOverwrite(typeAndValue[1], targetComponent); + + if (EditorUtility.IsPersistent(asset)) + { + EditorUtility.SetDirty(asset); + } } public static void CopySettings(List targetComponents) @@ -87,7 +92,7 @@ public static void CopySettings(List targetComponents) EditorGUIUtility.systemCopyBuffer = writer.ToString(); } - public static void PasteSettings(List targetComponents) + public static void PasteSettings(List targetComponents, VolumeProfile asset) { if (targetComponents == null || targetComponents.Count == 0) return; @@ -113,6 +118,11 @@ public static void PasteSettings(List targetComponents) JsonUtility.FromJsonOverwrite(typeAndValue[1], targetComponent); } } + + if (EditorUtility.IsPersistent(asset)) + { + EditorUtility.SetDirty(asset); + } } } } diff --git a/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentListEditor.cs b/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentListEditor.cs index 69af1c4dcdc..bc12819098b 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentListEditor.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeComponentListEditor.cs @@ -470,7 +470,7 @@ void OnContextClick(Vector2 position, VolumeComponentEditor targetEditor, int id if (VolumeComponentCopyPaste.CanPaste(targetComponent)) menu.AddItem(EditorGUIUtility.TrTextContent("Paste Settings"), false, () => { - VolumeComponentCopyPaste.PasteSettings(targetComponent); + VolumeComponentCopyPaste.PasteSettings(targetComponent, asset); VolumeManager.instance.OnVolumeProfileChanged(asset); }); else diff --git a/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeEditor.cs b/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeEditor.cs index a6cedcc6e5c..2dc76946e55 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeEditor.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeEditor.cs @@ -266,29 +266,62 @@ void OnVolumeProfileContextClick() if (profileRef != null) { + bool hasNoComponents = profileRef.components.Count == 0; + var cloneLabel = targetVolume.HasInstantiatedProfile() ? Styles.saveLabel : Styles.cloneLabel; menu.AddItem(cloneLabel, false, CloneProfile); menu.AddSeparator(string.Empty); - menu.AddItem(VolumeProfileUtils.Styles.collapseAll, false, () => + + if (hasNoComponents) { - VolumeProfileUtils.SetComponentEditorsExpanded(m_ComponentList.editors, false); - }); - menu.AddItem(VolumeProfileUtils.Styles.expandAll, false, () => + menu.AddDisabledItem(VolumeProfileUtils.Styles.collapseAll); + menu.AddDisabledItem(VolumeProfileUtils.Styles.expandAll); + } + else { - VolumeProfileUtils.SetComponentEditorsExpanded(m_ComponentList.editors, true); - }); + menu.AddItem(VolumeProfileUtils.Styles.collapseAll, false, () => + { + VolumeProfileUtils.SetComponentEditorsExpanded(m_ComponentList.editors, false); + }); + menu.AddItem(VolumeProfileUtils.Styles.expandAll, false, () => + { + VolumeProfileUtils.SetComponentEditorsExpanded(m_ComponentList.editors, true); + }); + } + menu.AddSeparator(string.Empty); - menu.AddItem(Styles.enableAll, false, () => SetComponentsActive(true)); - menu.AddItem(Styles.disableAll, false, () => SetComponentsActive(false)); - menu.AddItem(Styles.removeAll, false, () => m_ComponentList.RemoveAllComponents()); - menu.AddItem(VolumeProfileUtils.Styles.resetAll, false, () => m_ComponentList.ResetAllComponents()); + + if (hasNoComponents) + { + menu.AddDisabledItem(Styles.enableAll); + menu.AddDisabledItem(Styles.disableAll); + menu.AddDisabledItem(Styles.removeAll); + menu.AddDisabledItem(VolumeProfileUtils.Styles.resetAll); + } + else + { + menu.AddItem(Styles.enableAll, false, () => SetComponentsActive(true)); + menu.AddItem(Styles.disableAll, false, () => SetComponentsActive(false)); + menu.AddItem(Styles.removeAll, false, () => m_ComponentList.RemoveAllComponents()); + menu.AddItem(VolumeProfileUtils.Styles.resetAll, false, () => m_ComponentList.ResetAllComponents()); + } + menu.AddSeparator(string.Empty); - menu.AddItem(VolumeProfileUtils.Styles.copyAllSettings, false, - () => VolumeComponentCopyPaste.CopySettings(profileRef.components)); + + if (hasNoComponents) + { + menu.AddDisabledItem(VolumeProfileUtils.Styles.copyAllSettings); + } + else + { + menu.AddItem(VolumeProfileUtils.Styles.copyAllSettings, false, + () => VolumeComponentCopyPaste.CopySettings(profileRef.components)); + } + if (VolumeComponentCopyPaste.CanPaste(profileRef.components)) menu.AddItem(VolumeProfileUtils.Styles.pasteSettings, false, () => { - VolumeComponentCopyPaste.PasteSettings(profileRef.components); + VolumeComponentCopyPaste.PasteSettings(profileRef.components, profileRef); VolumeManager.instance.OnVolumeProfileChanged(profileRef); }); else diff --git a/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeProfileUtils.cs b/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeProfileUtils.cs index df9d6cc4285..f7f1082c6dc 100644 --- a/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeProfileUtils.cs +++ b/Packages/com.unity.render-pipelines.core/Editor/Volume/VolumeProfileUtils.cs @@ -325,7 +325,7 @@ public static void AddVolumeProfileContextMenuItems( if (VolumeComponentCopyPaste.CanPaste(volumeProfile.components)) menu.AddItem(Styles.pasteSettings, false, () => { - VolumeComponentCopyPaste.PasteSettings(volumeProfile.components); + VolumeComponentCopyPaste.PasteSettings(volumeProfile.components, volumeProfile); VolumeManager.instance.OnVolumeProfileChanged(volumeProfile); }); else @@ -411,7 +411,7 @@ public static void OnVolumeProfileContextClick( if (VolumeComponentCopyPaste.CanPaste(volumeProfile.components)) menu.AddItem(Styles.pasteSettings, false, () => { - VolumeComponentCopyPaste.PasteSettings(volumeProfile.components); + VolumeComponentCopyPaste.PasteSettings(volumeProfile.components, volumeProfile); VolumeManager.instance.OnVolumeProfileChanged(volumeProfile); }); else diff --git a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeComponentCopyPasteTests.cs b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeComponentCopyPasteTests.cs index cbdb338f3a9..bcdf6cabd97 100644 --- a/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeComponentCopyPasteTests.cs +++ b/Tests/SRPTests/Projects/SRP_SmokeTest/Assets/Tests/Editor/Volumes/VolumeComponentCopyPasteTests.cs @@ -42,7 +42,7 @@ public void CopyPasteSingle() { VolumeComponentCopyPaste.CopySettings(m_Src1); m_Src1.AssertEquality(m_Dst1, Assert.AreNotEqual); - VolumeComponentCopyPaste.PasteSettings(m_Dst1); + VolumeComponentCopyPaste.PasteSettings(m_Dst1, null); m_Src1.AssertEquality(m_Dst1, Assert.AreEqual); } @@ -50,7 +50,7 @@ public void CopyPasteSingle() public void CopyPasteSingleUndoRedo() { VolumeComponentCopyPaste.CopySettings(m_Src1); - VolumeComponentCopyPaste.PasteSettings(m_Dst1); + VolumeComponentCopyPaste.PasteSettings(m_Dst1, null); Undo.PerformUndo(); m_Dst1.AssertEquality(m_Default1, Assert.AreEqual); // paste target is unchanged Undo.PerformRedo(); @@ -65,7 +65,7 @@ public void CopyPasteMultiple() m_Src2.AssertEquality(m_Dst2, Assert.AreNotEqual); m_Src3.AssertEquality(m_Dst3, Assert.AreNotEqual); - VolumeComponentCopyPaste.PasteSettings(new List { m_Dst1, m_Dst2, m_Dst3 }); + VolumeComponentCopyPaste.PasteSettings(new List { m_Dst1, m_Dst2, m_Dst3 }, null); m_Src1.AssertEquality(m_Dst1, Assert.AreEqual); m_Src2.AssertEquality(m_Dst2, Assert.AreEqual); m_Src3.AssertEquality(m_Dst3, Assert.AreEqual); @@ -79,7 +79,7 @@ public void CopyPasteMultipleInDifferentOrder() m_Src2.AssertEquality(m_Dst2, Assert.AreNotEqual); m_Src3.AssertEquality(m_Dst3, Assert.AreNotEqual); - VolumeComponentCopyPaste.PasteSettings(new List { m_Dst3, m_Dst1, m_Dst2 }); + VolumeComponentCopyPaste.PasteSettings(new List { m_Dst3, m_Dst1, m_Dst2 }, null); m_Src1.AssertEquality(m_Dst1, Assert.AreEqual); m_Src2.AssertEquality(m_Dst2, Assert.AreEqual); m_Src3.AssertEquality(m_Dst3, Assert.AreEqual); @@ -89,9 +89,9 @@ public void CopyPasteMultipleInDifferentOrder() public void CopyPasteMultipleToSingleComponent() { VolumeComponentCopyPaste.CopySettings(new List { m_Src1, m_Src2, m_Src3 }); - VolumeComponentCopyPaste.PasteSettings(new List { m_Dst3 }); - VolumeComponentCopyPaste.PasteSettings(new List { m_Dst2 }); - VolumeComponentCopyPaste.PasteSettings(new List { m_Dst1 }); + VolumeComponentCopyPaste.PasteSettings(new List { m_Dst3 }, null); + VolumeComponentCopyPaste.PasteSettings(new List { m_Dst2 }, null); + VolumeComponentCopyPaste.PasteSettings(new List { m_Dst1 }, null); m_Src1.AssertEquality(m_Dst1, Assert.AreEqual); m_Src2.AssertEquality(m_Dst2, Assert.AreEqual); m_Src3.AssertEquality(m_Dst3, Assert.AreEqual); @@ -101,7 +101,7 @@ public void CopyPasteMultipleToSingleComponent() public void CopyPasteSingleToMultipleComponent() { VolumeComponentCopyPaste.CopySettings(new List { m_Src1 }); - VolumeComponentCopyPaste.PasteSettings(new List { m_Dst3, m_Dst1, m_Dst2 }); + VolumeComponentCopyPaste.PasteSettings(new List { m_Dst3, m_Dst1, m_Dst2 }, null); m_Src1.AssertEquality(m_Dst1, Assert.AreEqual); } @@ -109,7 +109,7 @@ public void CopyPasteSingleToMultipleComponent() public void CopyPasteMultipleUndoRedo() { VolumeComponentCopyPaste.CopySettings(new List { m_Src1, m_Src2, m_Src3 }); - VolumeComponentCopyPaste.PasteSettings(new List { m_Dst1, m_Dst2, m_Dst3 }); + VolumeComponentCopyPaste.PasteSettings(new List { m_Dst1, m_Dst2, m_Dst3 }, null); Undo.PerformUndo(); @@ -166,5 +166,44 @@ public void CanPasteIfMultipleMatchingTypes() VolumeComponentCopyPaste.CopySettings(new List { m_Src1, m_Src2, m_Src3 }); Assert.True(VolumeComponentCopyPaste.CanPaste(new List { m_Dst1, m_Dst3, m_Dst2 })); } + + [Test] + public void AfterPasteSettings_VolumeProfileAssetIsDirty() + { + const string kAssetPath = "Assets/AfterPasteSettings_VolumeProfileAssetIsDirty.asset"; + var sourceProfile = ScriptableObject.CreateInstance(); + sourceProfile.Add(); + var volumeProfileAsset = VolumeProfileFactory.CreateVolumeProfileAtPath(kAssetPath, sourceProfile); + + VolumeComponentCopyPaste.CopySettings(m_Src1); + Assume.That(volumeProfileAsset.TryGet(out var dst)); + + int dirtyCountBeforePaste = EditorUtility.GetDirtyCount(volumeProfileAsset); + VolumeComponentCopyPaste.PasteSettings(dst, volumeProfileAsset); + Assert.AreEqual(EditorUtility.GetDirtyCount(volumeProfileAsset), dirtyCountBeforePaste + 1); + + dirtyCountBeforePaste = EditorUtility.GetDirtyCount(volumeProfileAsset); + VolumeComponentCopyPaste.PasteSettings(new List{ dst } , volumeProfileAsset); + Assert.AreEqual(EditorUtility.GetDirtyCount(volumeProfileAsset), dirtyCountBeforePaste + 1); + + AssetDatabase.DeleteAsset(kAssetPath); + } + + [Test] + public void AfterPasteSettings_VolumeProfileInstanceIsNotDirty() + { + var volumeProfileInstance = ScriptableObject.CreateInstance(); + CopyPasteTestComponent1 dst = volumeProfileInstance.Add(); + + VolumeComponentCopyPaste.CopySettings(m_Src1); + + int dirtyCountBeforePaste = EditorUtility.GetDirtyCount(volumeProfileInstance); + VolumeComponentCopyPaste.PasteSettings(dst, volumeProfileInstance); + Assert.AreEqual(EditorUtility.GetDirtyCount(volumeProfileInstance), dirtyCountBeforePaste); + + dirtyCountBeforePaste = EditorUtility.GetDirtyCount(volumeProfileInstance); + VolumeComponentCopyPaste.PasteSettings(new List{ dst }, volumeProfileInstance); + Assert.AreEqual(EditorUtility.GetDirtyCount(volumeProfileInstance), dirtyCountBeforePaste); + } } } From 4a8e2ec087133df797a9ea0290b457ebda35f871 Mon Sep 17 00:00:00 2001 From: Rasmus Roenn Nielsen Date: Fri, 26 Sep 2025 00:14:44 +0000 Subject: [PATCH 36/65] Backport: Silence Surface Cache shader compilation warnings when switching to the Web platform (UUM-115877) --- .../RendererFeatures/SurfaceCacheGI/Debug.compute | 5 ++--- .../SurfaceCacheGI/FlatNormalResolution.compute | 5 ++--- .../SurfaceCacheGI/PatchAllocation.compute | 5 ++--- .../SurfaceCacheGI/ScreenResolveLookup.compute | 5 ++--- .../SurfaceCacheGI/ScreenResolveUpsampling.compute | 5 ++--- .../SurfaceCacheGI/SurfaceCacheCore/Defrag.compute | 5 ++--- .../SurfaceCacheGI/SurfaceCacheCore/Eviction.compute | 5 ++--- .../SurfaceCacheGI/SurfaceCacheCore/PatchUtil.hlsl | 11 +++++------ .../RestirCandidateTemporal.urtshader | 4 +--- .../SurfaceCacheCore/RestirSpatial.compute | 5 ++--- .../SurfaceCacheCore/RisEstimation.urtshader | 4 +--- .../SurfaceCacheGI/SurfaceCacheCore/Scrolling.compute | 5 ++--- .../SurfaceCacheCore/SpatialFiltering.compute | 5 ++--- .../SurfaceCacheCore/TemporalFiltering.compute | 5 ++--- .../SurfaceCacheCore/UniformEstimation.urtshader | 4 +--- 15 files changed, 30 insertions(+), 48 deletions(-) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/Debug.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/Debug.compute index 12ea3f7cedb..39b76178f02 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/Debug.compute +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/Debug.compute @@ -1,6 +1,5 @@ -// These shaders do not currently work on Switch due to its limited binding range -// https://jira.unity3d.com/browse/GFXLIGHT-1730 -#pragma exclude_renderers switch switch2 +#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal glcore ps5 + #pragma kernel Visualize #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FlatNormalResolution.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FlatNormalResolution.compute index d12133df52b..45c15221b89 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FlatNormalResolution.compute +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/FlatNormalResolution.compute @@ -1,6 +1,5 @@ -// These shaders do not currently work on Switch due to its limited binding range -// https://jira.unity3d.com/browse/GFXLIGHT-1730 -#pragma exclude_renderers switch switch2 +#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal glcore ps5 + #pragma kernel ResolveFlatNormals #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/PatchAllocation.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/PatchAllocation.compute index 999c4acce6c..63830a6b739 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/PatchAllocation.compute +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/PatchAllocation.compute @@ -1,6 +1,5 @@ -// These shaders do not currently work on Switch due to its limited binding range -// https://jira.unity3d.com/browse/GFXLIGHT-1730 -#pragma exclude_renderers switch switch2 +#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal glcore ps5 + #pragma kernel Allocate #define PATCH_UTIL_USE_RW_IRRADIANCE_BUFFER diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveLookup.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveLookup.compute index 81a59f05a7c..6b1c6bdfb9d 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveLookup.compute +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveLookup.compute @@ -1,6 +1,5 @@ -// These shaders do not currently work on Switch due to its limited binding range -// https://jira.unity3d.com/browse/GFXLIGHT-1730 -#pragma exclude_renderers switch switch2 +#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal glcore ps5 + #pragma kernel Lookup #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveUpsampling.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveUpsampling.compute index 764e1074db1..00cdb81d375 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveUpsampling.compute +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/ScreenResolveUpsampling.compute @@ -1,6 +1,5 @@ -// These shaders do not currently work on Switch due to its limited binding range -// https://jira.unity3d.com/browse/GFXLIGHT-1730 -#pragma exclude_renderers switch switch2 +#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal glcore ps5 + #pragma kernel Upsample #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Defrag.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Defrag.compute index 9bd0eb68bbe..0d1006d0a03 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Defrag.compute +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Defrag.compute @@ -1,6 +1,5 @@ -// Surface Cache shaders do not currently work on Switch due to its limited binding range -// https://jira.unity3d.com/browse/GFXLIGHT-1730 -#pragma exclude_renderers switch switch2 +#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal glcore ps5 + #pragma multi_compile_local SUB_GROUP_SIZE_8 SUB_GROUP_SIZE_16 SUB_GROUP_SIZE_32 SUB_GROUP_SIZE_48 SUB_GROUP_SIZE_64 #ifdef SUB_GROUP_SIZE_8 diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Eviction.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Eviction.compute index a8cd0763955..4a3dff363f3 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Eviction.compute +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Eviction.compute @@ -1,6 +1,5 @@ -// Surface Cache shaders do not currently work on Switch due to its limited binding range -// https://jira.unity3d.com/browse/GFXLIGHT-1730 -#pragma exclude_renderers switch switch2 +#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal glcore ps5 + #pragma kernel Evict #include "PatchUtil.hlsl" diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PatchUtil.hlsl b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PatchUtil.hlsl index fbee8dc7fc5..44536da2645 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PatchUtil.hlsl +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/PatchUtil.hlsl @@ -145,14 +145,13 @@ namespace PatchUtil return angularSquarePos.y * angularResolution + angularSquarePos.x; } - // Unlike the regular HLSL % operator, this function supports the case where the first - // argument is negative and the second argument is positive. + // Unlike the regular HLSL % operator where both operands must both be signed or unsigned, + // this function additionally supports the case where the first argument is negative and + // the second argument is positive. uint3 SignedIntegerModulo(int3 x, uint modulus) { - #pragma warning (disable : 3556) - const int modulusInt = int(modulus); - const int3 result = x - x / modulusInt * modulusInt; - return VECTOR_LOGIC_SELECT(result < 0, result + modulusInt, result); + const uint3 remainder = uint3(abs(x)) % modulus; + return VECTOR_LOGIC_SELECT(x < 0 && remainder != 0, modulus - remainder, remainder); } uint3 ConvertGridSpaceToStorageSpace(uint3 posGridSpace, uint gridSize, int3 cascadeOffset) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirCandidateTemporal.urtshader b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirCandidateTemporal.urtshader index 602c8f9aa8e..659a0c89843 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirCandidateTemporal.urtshader +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirCandidateTemporal.urtshader @@ -1,6 +1,4 @@ -// Surface Cache shaders do not currently work on Switch due to its limited binding range -// https://jira.unity3d.com/browse/GFXLIGHT-1730 -#pragma exclude_renderers switch +#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal glcore ps5 #define UNIFIED_RT_GROUP_SIZE_X 64 #define UNIFIED_RT_GROUP_SIZE_Y 1 diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirSpatial.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirSpatial.compute index 33c8feabcbc..d5518bff566 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirSpatial.compute +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RestirSpatial.compute @@ -1,6 +1,5 @@ -// Surface Cache shaders do not currently work on Switch due to its limited binding range -// https://jira.unity3d.com/browse/GFXLIGHT-1730 -#pragma exclude_renderers switch switch2 +#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal glcore ps5 + #pragma kernel ResampleSpatially #include "PatchUtil.hlsl" diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RisEstimation.urtshader b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RisEstimation.urtshader index 1fe1daf8056..e2bd5d8ebcc 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RisEstimation.urtshader +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/RisEstimation.urtshader @@ -1,6 +1,4 @@ -// Surface Cache shaders do not currently work on Switch due to its limited binding range -// https://jira.unity3d.com/browse/GFXLIGHT-1730 -#pragma exclude_renderers switch +#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal glcore ps5 #define UNIFIED_RT_GROUP_SIZE_X 64 #define UNIFIED_RT_GROUP_SIZE_Y 1 diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Scrolling.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Scrolling.compute index 1b1ae0d0d64..26270553511 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Scrolling.compute +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/Scrolling.compute @@ -1,6 +1,5 @@ -// Surface Cache shaders do not currently work on Switch due to its limited binding range -// https://jira.unity3d.com/browse/GFXLIGHT-1730 -#pragma exclude_renderers switch switch2 +#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal glcore ps5 + #pragma kernel Scroll #include "VectorLogic.hlsl" diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SpatialFiltering.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SpatialFiltering.compute index fc298910023..515c2603645 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SpatialFiltering.compute +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/SpatialFiltering.compute @@ -1,6 +1,5 @@ -// Surface Cache shaders do not currently work on Switch due to its limited binding range -// https://jira.unity3d.com/browse/GFXLIGHT-1730 -#pragma exclude_renderers switch switch2 +#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal glcore ps5 + #pragma kernel FilterSpatially #include "Common.hlsl" diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/TemporalFiltering.compute b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/TemporalFiltering.compute index d146c900469..4dc63884185 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/TemporalFiltering.compute +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/TemporalFiltering.compute @@ -1,6 +1,5 @@ -// Surface Cache shaders do not currently work on Switch due to its limited binding range -// https://jira.unity3d.com/browse/GFXLIGHT-1730 -#pragma exclude_renderers switch switch2 +#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal glcore ps5 + #pragma kernel FilterTemporally #include "Common.hlsl" diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/UniformEstimation.urtshader b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/UniformEstimation.urtshader index ef7869788ac..c6ec22e888b 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/UniformEstimation.urtshader +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/SurfaceCacheGI/SurfaceCacheCore/UniformEstimation.urtshader @@ -1,6 +1,4 @@ -// Surface Cache shaders do not currently work on Switch due to its limited binding range -// https://jira.unity3d.com/browse/GFXLIGHT-1730 -#pragma exclude_renderers switch switch2 +#pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal glcore ps5 #define UNIFIED_RT_GROUP_SIZE_X 64 #define UNIFIED_RT_GROUP_SIZE_Y 1 From 111730eb35e12634d72426df8f7aa0d9d4f9a08f Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Fri, 26 Sep 2025 15:59:15 +0000 Subject: [PATCH 37/65] [Port] [6000.3] [VFX/SG] Improve Error with invalid SG Target --- .../Material/ShaderGraph/HDSubTarget.cs | 2 +- .../ShaderGraph/Targets/UniversalSubTarget.cs | 2 +- .../Editor/Core/VFXSRPBinder.cs | 9 +++ .../Implementations/VFXComposedShading.cs | 21 ++++-- .../ShaderGraph/VFXShaderGraphHelpers.cs | 3 + .../Editor/Data/Repro_115004.unitypackage | 3 + .../Data/Repro_115004.unitypackage.meta | 7 ++ .../Tests/Editor/VFXMaterialVariantTest.cs | 64 +++++++++++++++++++ 8 files changed, 104 insertions(+), 7 deletions(-) create mode 100644 Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/Data/Repro_115004.unitypackage create mode 100644 Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/Data/Repro_115004.unitypackage.meta diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDSubTarget.cs b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDSubTarget.cs index 02c1f8fbab2..64bb92c72ea 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDSubTarget.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Material/ShaderGraph/HDSubTarget.cs @@ -78,7 +78,7 @@ public virtual ScriptableObject GetMetadataObject(GraphDataReadOnly graph) hdMetadata.migrateFromOldCrossPipelineSG = m_MigrateFromOldCrossPipelineSG; hdMetadata.hdSubTargetVersion = systemData.version; hdMetadata.hasVertexModificationInMotionVector = systemData.customVelocity || systemData.tessellation || graph.AnyVertexAnimationActive(); - hdMetadata.isVFXCompatible = graph.IsVFXCompatible(); + hdMetadata.isVFXCompatible = target.SupportsVFX(); return hdMetadata; } diff --git a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalSubTarget.cs b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalSubTarget.cs index 0f99214f30a..b55d3a8b53c 100644 --- a/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalSubTarget.cs +++ b/Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Targets/UniversalSubTarget.cs @@ -75,7 +75,7 @@ public virtual ScriptableObject GetMetadataObject(GraphDataReadOnly graphData) urpMetadata.hasVertexModificationInMotionVector = false; } - urpMetadata.isVFXCompatible = graphData.IsVFXCompatible(); + urpMetadata.isVFXCompatible = target.SupportsVFX(); return urpMetadata; } diff --git a/Packages/com.unity.visualeffectgraph/Editor/Core/VFXSRPBinder.cs b/Packages/com.unity.visualeffectgraph/Editor/Core/VFXSRPBinder.cs index d0b8680ef60..673d6ced16d 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/Core/VFXSRPBinder.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/Core/VFXSRPBinder.cs @@ -29,6 +29,15 @@ public struct ShaderGraphBinder abstract public string SRPAssetTypeStr { get; } abstract public Type SRPOutputDataType { get; } + public bool IsShaderVFXCompatible(ShaderGraphVfxAsset shaderGraph) + { + var path = AssetDatabase.GetAssetPath(shaderGraph); + var shader = AssetDatabase.LoadAssetAtPath(path); + if (shader != null) + return IsShaderVFXCompatible(shader); + return false; + } + public abstract bool IsShaderVFXCompatible(Shader shader); public virtual void SetupMaterial(Material mat, bool hasMotionVector = false, bool hasShadowCasting = false, ShaderGraphVfxAsset shaderGraph = null) { } diff --git a/Packages/com.unity.visualeffectgraph/Editor/Models/Contexts/Implementations/VFXComposedShading.cs b/Packages/com.unity.visualeffectgraph/Editor/Models/Contexts/Implementations/VFXComposedShading.cs index f339a32f702..93b2593b712 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/Models/Contexts/Implementations/VFXComposedShading.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/Models/Contexts/Implementations/VFXComposedShading.cs @@ -44,12 +44,22 @@ ShaderGraphVfxAsset GetOrRefreshShaderGraphObject(List<(string error, VFXErrorTy } } - if (currentShaderGraph != null && !currentShaderGraph.generatesWithShaderGraph) + if (currentShaderGraph != null) { - if (errors != null) - errors.Add(("DeprecatedOldShaderGraph", VFXErrorType.Error, ParticleShadingShaderGraph.kErrorOldSG)); + if (!currentShaderGraph.generatesWithShaderGraph) + { + if (errors != null) + errors.Add(("DeprecatedOldShaderGraph", VFXErrorType.Error, ParticleShadingShaderGraph.kErrorOldSG)); - currentShaderGraph = VFXResources.errorFallbackShaderGraph; + currentShaderGraph = VFXResources.errorFallbackShaderGraph; + } + else if (VFXLibrary.currentSRPBinder != null && !VFXLibrary.currentSRPBinder.IsShaderVFXCompatible(currentShaderGraph)) + { + if (errors != null) + errors.Add(("NoSRPCompatibleSG", VFXErrorType.Error, "The current Shader Graph doesn't support the current SRP or VFX Support is not enabled.")); + + currentShaderGraph = VFXResources.errorFallbackShaderGraph; + } } if (currentShaderGraph == null) @@ -112,7 +122,8 @@ public override TraitDescription GetDescription(VFXAbstractComposedParticleOutpu } desc.hasAlphaClipping = actualShaderGraph.alphaClipping; - var shaderGraphProperties = VFXShaderGraphHelpers.GetProperties(actualShaderGraph); + //Retrieve properties from shaderGraph (and not actualShaderGraph) to prevent slot removal when listing is available for another SRP + var shaderGraphProperties = VFXShaderGraphHelpers.GetProperties(shaderGraph); foreach (var sgProperty in shaderGraphProperties) { desc.properties.Add(sgProperty.property); diff --git a/Packages/com.unity.visualeffectgraph/Editor/ShaderGraph/VFXShaderGraphHelpers.cs b/Packages/com.unity.visualeffectgraph/Editor/ShaderGraph/VFXShaderGraphHelpers.cs index d21b50c7125..e1f6f1b9207 100644 --- a/Packages/com.unity.visualeffectgraph/Editor/ShaderGraph/VFXShaderGraphHelpers.cs +++ b/Packages/com.unity.visualeffectgraph/Editor/ShaderGraph/VFXShaderGraphHelpers.cs @@ -123,6 +123,9 @@ static bool IsExcludedFromSlot(ShaderGraph.ShaderKeyword shaderKeyword) public static IEnumerable GetProperties(ShaderGraphVfxAsset shaderGraph) { + if (shaderGraph == null) + yield break; + foreach (var property in shaderGraph.properties) { if (property is AbstractShaderProperty shaderProperty) diff --git a/Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/Data/Repro_115004.unitypackage b/Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/Data/Repro_115004.unitypackage new file mode 100644 index 00000000000..1e187446355 --- /dev/null +++ b/Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/Data/Repro_115004.unitypackage @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bf67909680f24609ee37c09e683cdc0f5332dc793e45be774fc67e4d6abeac0 +size 11306 diff --git a/Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/Data/Repro_115004.unitypackage.meta b/Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/Data/Repro_115004.unitypackage.meta new file mode 100644 index 00000000000..4348af19210 --- /dev/null +++ b/Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/Data/Repro_115004.unitypackage.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: acf24afc6dd780b4d8f73b98d997af91 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/VFXMaterialVariantTest.cs b/Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/VFXMaterialVariantTest.cs index 7c967fa36bb..ad960a862a4 100644 --- a/Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/VFXMaterialVariantTest.cs +++ b/Tests/SRPTests/Packages/com.unity.testing.visualeffectgraph/Tests/Editor/VFXMaterialVariantTest.cs @@ -130,6 +130,70 @@ public void Migration_Material_Settings() } } + [UnityTest, Description("Covers UUM-115004, N.B.: This coverage can't be full without cross SRP project")] + public IEnumerator Failing_SG_Target_With_Current_Pipeline() + { + var packagePath = "Packages/com.unity.testing.visualeffectgraph/Tests/Editor/Data/Repro_115004.unitypackage"; + AssetDatabase.ImportPackageImmediately(packagePath); + yield return null; + + var vfxPath = VFXTestCommon.tempBasePath + "Repro_UUM_115004.vfx"; + var vfxAsset = AssetDatabase.LoadAssetAtPath(vfxPath); + Assert.IsNotNull(vfxAsset); + + var vfxResource = vfxAsset.GetResource(); + Assert.IsNotNull(vfxResource); + + var vfxGraph = vfxResource.GetOrCreateGraph(); + Assert.IsNotNull(vfxGraph); + + var window = VFXViewWindow.GetWindow(vfxGraph, true, true); + window.LoadAsset(vfxAsset, null); + window.Focus(); + yield return null; //No error preventing to open the graph + + var particleOutputs = vfxGraph.children.OfType().ToArray(); + Assert.AreEqual(4, particleOutputs.Length); + foreach (var particleOutput in particleOutputs) + { + Assert.IsNotNull(particleOutput.inputFlowSlot[0].link[0].context); + + var serializedShaderGraph = particleOutput.GetSettingValue("shaderGraph") as ShaderGraphVfxAsset; + var actualShaderGraph = particleOutput.GetShaderGraph(); + Assert.IsNotNull(actualShaderGraph); + + bool isCompatibleWithCurrentSRP = false; +#if VFX_TESTS_HAS_HDRP && VFX_TESTS_HAS_URP + Assert.Fail("This suite doesn't support both pipeline yet."); +#elif VFX_TESTS_HAS_HDRP + if (particleOutput.label.Contains("HDRP")) + { + isCompatibleWithCurrentSRP = true; + } +#elif VFX_TESTS_HAS_URP + if (particleOutput.label.Contains("URP")) + { + isCompatibleWithCurrentSRP = true; + } +#endif + if (isCompatibleWithCurrentSRP) + { + Assert.AreEqual(1, particleOutput.inputSlots.Count); + Assert.IsTrue((bool)particleOutput.inputSlots[0].HasLink()); + Assert.IsNotNull(serializedShaderGraph); + } + else + { + //N.B.: This asset won't be null if both SRP are available, checking reference to missing data here (but known guid) + Assert.IsFalse(object.ReferenceEquals(serializedShaderGraph, null)); + Assert.IsTrue(serializedShaderGraph == null); + } + } + + window.Close(); + yield return null; + } + public struct Check_Material_Override_Behavior_Test_Case { internal string name; From f1049164d82f4c702dae38e7446c941c6489f8eb Mon Sep 17 00:00:00 2001 From: Nicola Cerone Date: Fri, 26 Sep 2025 15:59:15 +0000 Subject: [PATCH 38/65] [Backport 6000.3] Restrict UV support in UITK MasterNode in ShaderGraph. --- .../Editor/Data/Graphs/GraphValidation.cs | 10 ++ .../Editor/Drawing/PreviewManager.cs | 2 +- .../Drawing/Views/PreviewSceneResources.cs | 8 ++ .../Generation/Processors/GenerationUtils.cs | 9 -- .../Editor/Generation/SubTarget.cs | 6 + .../TargetResources/StructFields.cs | 9 -- .../Generation/Targets/UITK/UISubTarget.cs | 103 +++++++++++++++++- ...uildSurfaceDescriptionInputs.template.hlsl | 22 ++-- .../Editor/Importers/ShaderGraphImporter.cs | 4 +- .../ShaderGraphNodeValidationExtension.cs | 5 +- .../Editor/Util/MessageManager.cs | 4 +- .../Editor/UnitTests/MessageManagerTests.cs | 8 +- 12 files changed, 151 insertions(+), 39 deletions(-) diff --git a/Packages/com.unity.shadergraph/Editor/Data/Graphs/GraphValidation.cs b/Packages/com.unity.shadergraph/Editor/Data/Graphs/GraphValidation.cs index 71ea7e317dd..654980fa660 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Graphs/GraphValidation.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Graphs/GraphValidation.cs @@ -69,6 +69,16 @@ public static void ValidateNode(AbstractMaterialNode node) { disallowedByAllTargets = false; } + + if (subtarget != null && subtarget.ValidateNodeCompatibility(node, out string warningMessage, out Rendering.ShaderCompilerMessageSeverity severity)) + { + if (severity == Rendering.ShaderCompilerMessageSeverity.Error) + { + disallowedByAnySubTarget = true; + node.isValid = false; + } + node.owner.AddValidationError(node.objectId, warningMessage, severity); + } } // Subgraphs have no allegiance to a Target/SubTarget workflow, diff --git a/Packages/com.unity.shadergraph/Editor/Drawing/PreviewManager.cs b/Packages/com.unity.shadergraph/Editor/Drawing/PreviewManager.cs index 52612c8047e..464f339083a 100644 --- a/Packages/com.unity.shadergraph/Editor/Drawing/PreviewManager.cs +++ b/Packages/com.unity.shadergraph/Editor/Drawing/PreviewManager.cs @@ -763,7 +763,7 @@ public void RenderPreviews(EditorWindow editorWindow, bool requestShaders = true m_SceneResources.camera.orthographic = true; foreach (var renderData in renderList2D) - RenderPreview(renderData, m_SceneResources.quad, Matrix4x4.identity, perMaterialPreviewProperties); + RenderPreview(renderData, prefersUITKPreview ? m_SceneResources.uitk_quad : m_SceneResources.quad, Matrix4x4.identity, perMaterialPreviewProperties); // Render 3D previews m_SceneResources.camera.transform.position = -Vector3.forward * 5; diff --git a/Packages/com.unity.shadergraph/Editor/Drawing/Views/PreviewSceneResources.cs b/Packages/com.unity.shadergraph/Editor/Drawing/Views/PreviewSceneResources.cs index f6e47b67ab4..59bb991eef9 100644 --- a/Packages/com.unity.shadergraph/Editor/Drawing/Views/PreviewSceneResources.cs +++ b/Packages/com.unity.shadergraph/Editor/Drawing/Views/PreviewSceneResources.cs @@ -136,6 +136,14 @@ public PreviewSceneResources() 3, 0, 2 }; + quadMeshForUITK.SetUVs(0, new List + { + new Vector4(0.0f, 0.0f, 0.0f, 1.0f), + new Vector4(1.0f, 0.0f, 0.0f, 1.0f), + new Vector4(0.0f, 1.0f, 0.0f, 1.0f), + new Vector4(1.0f, 1.0f, 0.0f, 1.0f) + }); + quadMeshForUITK.SetUVs(3, new List { new Vector4(0, 0, 0.0f, 0.0f), diff --git a/Packages/com.unity.shadergraph/Editor/Generation/Processors/GenerationUtils.cs b/Packages/com.unity.shadergraph/Editor/Generation/Processors/GenerationUtils.cs index 3ac53d9cf66..984f2c0b1dd 100644 --- a/Packages/com.unity.shadergraph/Editor/Generation/Processors/GenerationUtils.cs +++ b/Packages/com.unity.shadergraph/Editor/Generation/Processors/GenerationUtils.cs @@ -662,15 +662,6 @@ static ConditionalField[] GetConditionalFieldsFromPixelRequirements(ShaderGraphR new ConditionalField(StructFields.SurfaceDescriptionInputs.layoutUV, requirements.requiresUITK), new ConditionalField(StructFields.SurfaceDescriptionInputs.circle, requirements.requiresUITK), - new ConditionalField(StructFields.SurfaceDescriptionInputs.layoutUV_uv0, requirements.requiresMeshUVs.Contains(UVChannel.UV0) && requirements.requiresUITK), - new ConditionalField(StructFields.SurfaceDescriptionInputs.layoutUV_uv1, requirements.requiresMeshUVs.Contains(UVChannel.UV1) && requirements.requiresUITK), - new ConditionalField(StructFields.SurfaceDescriptionInputs.layoutUV_uv2, requirements.requiresMeshUVs.Contains(UVChannel.UV2) && requirements.requiresUITK), - new ConditionalField(StructFields.SurfaceDescriptionInputs.layoutUV_uv3, requirements.requiresMeshUVs.Contains(UVChannel.UV3) && requirements.requiresUITK), - new ConditionalField(StructFields.SurfaceDescriptionInputs.layoutUV_uv4, requirements.requiresMeshUVs.Contains(UVChannel.UV4) && requirements.requiresUITK), - new ConditionalField(StructFields.SurfaceDescriptionInputs.layoutUV_uv5, requirements.requiresMeshUVs.Contains(UVChannel.UV5) && requirements.requiresUITK), - new ConditionalField(StructFields.SurfaceDescriptionInputs.layoutUV_uv6, requirements.requiresMeshUVs.Contains(UVChannel.UV6) && requirements.requiresUITK), - new ConditionalField(StructFields.SurfaceDescriptionInputs.layoutUV_uv7, requirements.requiresMeshUVs.Contains(UVChannel.UV7) && requirements.requiresUITK), - new ConditionalField(Fields.ObjectToWorld, requirements.requiresTransforms.Contains(NeededTransform.ObjectToWorld)), new ConditionalField(Fields.WorldToObject, requirements.requiresTransforms.Contains(NeededTransform.WorldToObject)), }; diff --git a/Packages/com.unity.shadergraph/Editor/Generation/SubTarget.cs b/Packages/com.unity.shadergraph/Editor/Generation/SubTarget.cs index 3d5880d6fcb..93565707676 100644 --- a/Packages/com.unity.shadergraph/Editor/Generation/SubTarget.cs +++ b/Packages/com.unity.shadergraph/Editor/Generation/SubTarget.cs @@ -23,6 +23,12 @@ public virtual void CollectShaderProperties(PropertyCollector collector, Generat public virtual void ProcessPreviewMaterial(Material material) { } public virtual object saveContext => null; public virtual bool IsNodeAllowedBySubTarget(Type nodeType) => true; + public virtual bool ValidateNodeCompatibility(AbstractMaterialNode node, out string errorMessage, out Rendering.ShaderCompilerMessageSeverity severity) + { + errorMessage = null; + severity = Rendering.ShaderCompilerMessageSeverity.Warning; + return false; + } // Call after SubTarget parent Target has been deserialized and Subtarget.target has been set to a non-null value. internal virtual void OnAfterParentTargetDeserialized() { } diff --git a/Packages/com.unity.shadergraph/Editor/Generation/TargetResources/StructFields.cs b/Packages/com.unity.shadergraph/Editor/Generation/TargetResources/StructFields.cs index 2aaa5c58107..4b71dead6b8 100644 --- a/Packages/com.unity.shadergraph/Editor/Generation/TargetResources/StructFields.cs +++ b/Packages/com.unity.shadergraph/Editor/Generation/TargetResources/StructFields.cs @@ -306,15 +306,6 @@ public struct SurfaceDescriptionInputs public static FieldDescriptor layoutUV = new FieldDescriptor(SurfaceDescriptionInputs.name, "layoutUV", "", ShaderValueType.Float2, subscriptOptions: StructFieldOptions.Optional); public static FieldDescriptor circle = new FieldDescriptor(SurfaceDescriptionInputs.name, "circle", "", ShaderValueType.Float4, subscriptOptions: StructFieldOptions.Optional); - public static FieldDescriptor layoutUV_uv0 = new FieldDescriptor(SurfaceDescriptionInputs.name, "layoutUV_uv0", "", ShaderValueType.Float2, subscriptOptions: StructFieldOptions.Optional); - public static FieldDescriptor layoutUV_uv1 = new FieldDescriptor(SurfaceDescriptionInputs.name, "layoutUV_uv1", "", ShaderValueType.Float2, subscriptOptions: StructFieldOptions.Optional); - public static FieldDescriptor layoutUV_uv2 = new FieldDescriptor(SurfaceDescriptionInputs.name, "layoutUV_uv2", "", ShaderValueType.Float2, subscriptOptions: StructFieldOptions.Optional); - public static FieldDescriptor layoutUV_uv3 = new FieldDescriptor(SurfaceDescriptionInputs.name, "layoutUV_uv3", "", ShaderValueType.Float2, subscriptOptions: StructFieldOptions.Optional); - public static FieldDescriptor layoutUV_uv4 = new FieldDescriptor(SurfaceDescriptionInputs.name, "layoutUV_uv4", "", ShaderValueType.Float2, subscriptOptions: StructFieldOptions.Optional); - public static FieldDescriptor layoutUV_uv5 = new FieldDescriptor(SurfaceDescriptionInputs.name, "layoutUV_uv5", "", ShaderValueType.Float2, subscriptOptions: StructFieldOptions.Optional); - public static FieldDescriptor layoutUV_uv6 = new FieldDescriptor(SurfaceDescriptionInputs.name, "layoutUV_uv6", "", ShaderValueType.Float2, subscriptOptions: StructFieldOptions.Optional); - public static FieldDescriptor layoutUV_uv7 = new FieldDescriptor(SurfaceDescriptionInputs.name, "layoutUV_uv7", "", ShaderValueType.Float2, subscriptOptions: StructFieldOptions.Optional); - // VFX public static FieldDescriptor worldToElement = new FieldDescriptor(SurfaceDescriptionInputs.name, "worldToElement", "", ShaderValueType.Matrix4, subscriptOptions: StructFieldOptions.Optional); public static FieldDescriptor elementToWorld = new FieldDescriptor(SurfaceDescriptionInputs.name, "elementToWorld", "", ShaderValueType.Matrix4, subscriptOptions: StructFieldOptions.Optional); diff --git a/Packages/com.unity.shadergraph/Editor/Generation/Targets/UITK/UISubTarget.cs b/Packages/com.unity.shadergraph/Editor/Generation/Targets/UITK/UISubTarget.cs index 498b68cb9b1..5b589dc8d63 100644 --- a/Packages/com.unity.shadergraph/Editor/Generation/Targets/UITK/UISubTarget.cs +++ b/Packages/com.unity.shadergraph/Editor/Generation/Targets/UITK/UISubTarget.cs @@ -15,7 +15,7 @@ struct UITKBlocks "SURFACEDESCRIPTION_COVERAGE", new FloatControl(1), ShaderStage.Fragment, true); } - internal abstract class UISubTarget : SubTarget, IUISubTarget, IRequiresData where T : Target + internal abstract class UISubTarget : SubTarget, IUISubTarget, INodeValidationExtension, IRequiresData where T : Target { const string kAssetGuid = "a5150c3db0b6942f6a0b1f7a9ce97d5c"; // UISubTarget.cs @@ -212,6 +212,107 @@ public UISubTarget() System.Collections.Generic.HashSet m_UnsupportedNodes; + public string GetValidatorKey() + { + return "UISubTarget"; + } + + public INodeValidationExtension.Status GetValidationStatus(AbstractMaterialNode node, out string msg) + { + // Make sure node is in our graph first + if (node.owner == null) + { + msg = null; + return INodeValidationExtension.Status.None; + } + + foreach (var item in node.owner.activeTargets) + { + if (item.prefersUITKPreview) + { + if (ValidateUV(node, out msg)) + { + return INodeValidationExtension.Status.Warning; + } + + UVNode uvNode = node as UVNode; + if (uvNode != null) + { + if (uvNode.uvChannel != UnityEditor.ShaderGraph.Internal.UVChannel.UV0) + { + msg = "UI Material does not support UV1-7. Consider using 'UV0'."; + return INodeValidationExtension.Status.Warning; + } + } + } + } + + msg = null; + return INodeValidationExtension.Status.None; + } + + private bool ValidateUV(AbstractMaterialNode node, out string warningMessage) + { + List uvSlots = new(); + node.GetInputSlots(uvSlots); + + foreach (var uvSlot in uvSlots) + { + if (uvSlot.channel != UnityEditor.ShaderGraph.Internal.UVChannel.UV0) + { + warningMessage = "UI Material does not support UV1-7. Consider using 'UV0'."; + return true; + } + } + + warningMessage = null; + return false; + } + + public override bool ValidateNodeCompatibility(AbstractMaterialNode node, out string warningMessage, out Rendering.ShaderCompilerMessageSeverity severity) + { + List uvSlots = new(); + node.GetInputSlots(uvSlots); + severity = ShaderCompilerMessageSeverity.Warning; + + if (ValidateUV(node, out warningMessage)) + return true; + + foreach (var uvSlot in uvSlots) + { + if (uvSlot.channel != UnityEditor.ShaderGraph.Internal.UVChannel.UV0) + { + warningMessage = "UI Material does not support UV1-7. Consider using 'UV0'."; + return true; + } + } + + SubGraphNode subGraphNode = node as SubGraphNode; + if (subGraphNode != null) + { + SubGraphAsset subGraphAsset = subGraphNode.asset; + if (subGraphAsset == null) + { + warningMessage = null; + return false; + } + else + { + foreach (var item in subGraphAsset.requirements.requiresMeshUVs) + { + if (item != UnityEditor.ShaderGraph.Internal.UVChannel.UV0) + { + warningMessage = "UI Material does not support UV1-7. Consider using 'UV0' in the subgraph."; + return true; + } + } + } + } + + warningMessage = null; + return false; + } + public override bool IsNodeAllowedBySubTarget(Type nodeType) { if (m_UnsupportedNodes == null) diff --git a/Packages/com.unity.shadergraph/Editor/Generation/Templates/BuildSurfaceDescriptionInputs.template.hlsl b/Packages/com.unity.shadergraph/Editor/Generation/Templates/BuildSurfaceDescriptionInputs.template.hlsl index aa8cd531e06..f98d4b10de6 100644 --- a/Packages/com.unity.shadergraph/Editor/Generation/Templates/BuildSurfaceDescriptionInputs.template.hlsl +++ b/Packages/com.unity.shadergraph/Editor/Generation/Templates/BuildSurfaceDescriptionInputs.template.hlsl @@ -56,6 +56,17 @@ SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input) $SurfaceDescriptionInputs.NDCPosition: output.NDCPosition = output.PixelPosition.xy / _ScreenParams.xy; $SurfaceDescriptionInputs.NDCPosition: output.NDCPosition.y = 1.0f - output.NDCPosition.y; + +#if defined(UNITY_UIE_INCLUDED) + $SurfaceDescriptionInputs.uv0: output.uv0 = float4(input.texCoord0.x, input.texCoord0.y, 0, 0); + $SurfaceDescriptionInputs.uv1: output.uv1 = float4(0, 0, 0, 0); + $SurfaceDescriptionInputs.uv2: output.uv2 = float4(0, 0, 0, 0); + $SurfaceDescriptionInputs.uv3: output.uv3 = float4(0, 0, 0, 0); + $SurfaceDescriptionInputs.uv4: output.uv4 = float4(0, 0, 0, 0); + $SurfaceDescriptionInputs.uv5: output.uv5 = float4(0, 0, 0, 0); + $SurfaceDescriptionInputs.uv6: output.uv6 = float4(0, 0, 0, 0); + $SurfaceDescriptionInputs.uv7: output.uv7 = float4(0, 0, 0, 0); +#else $SurfaceDescriptionInputs.uv0: output.uv0 = input.texCoord0; $SurfaceDescriptionInputs.uv1: output.uv1 = input.texCoord1; $SurfaceDescriptionInputs.uv2: output.uv2 = input.texCoord2; @@ -64,6 +75,8 @@ SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input) $SurfaceDescriptionInputs.uv5: output.uv5 = input.texCoord5; $SurfaceDescriptionInputs.uv6: output.uv6 = input.texCoord6; $SurfaceDescriptionInputs.uv7: output.uv7 = input.texCoord7; +#endif + $SurfaceDescriptionInputs.VertexColor: output.VertexColor = input.color; $SurfaceDescriptionInputs.VertexID: output.VertexID = input.vertexID; @@ -73,15 +86,6 @@ SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input) $SurfaceDescriptionInputs.textCoreLoc: output.textCoreLoc = input.texCoord3.xy; $SurfaceDescriptionInputs.layoutUV: output.layoutUV = input.texCoord3.zw; - $SurfaceDescriptionInputs.layoutUV_uv0: output.uv0 = float4(input.texCoord3.zw, 0, 0); - $SurfaceDescriptionInputs.layoutUV_uv1: output.uv1 = float4(input.texCoord3.zw, 0, 0); - $SurfaceDescriptionInputs.layoutUV_uv2: output.uv2 = float4(input.texCoord3.zw, 0, 0); - $SurfaceDescriptionInputs.layoutUV_uv3: output.uv3 = float4(input.texCoord3.zw, 0, 0); - $SurfaceDescriptionInputs.layoutUV_uv4: output.uv4 = float4(input.texCoord3.zw, 0, 0); - $SurfaceDescriptionInputs.layoutUV_uv5: output.uv5 = float4(input.texCoord3.zw, 0, 0); - $SurfaceDescriptionInputs.layoutUV_uv6: output.uv6 = float4(input.texCoord3.zw, 0, 0); - $SurfaceDescriptionInputs.layoutUV_uv7: output.uv7 = float4(input.texCoord3.zw, 0, 0); - $SurfaceDescriptionInputs.circle: output.circle = input.texCoord4; #if UNITY_ANY_INSTANCING_ENABLED diff --git a/Packages/com.unity.shadergraph/Editor/Importers/ShaderGraphImporter.cs b/Packages/com.unity.shadergraph/Editor/Importers/ShaderGraphImporter.cs index 49a32d9df79..7c03029a4c0 100644 --- a/Packages/com.unity.shadergraph/Editor/Importers/ShaderGraphImporter.cs +++ b/Packages/com.unity.shadergraph/Editor/Importers/ShaderGraphImporter.cs @@ -154,7 +154,7 @@ Shader BuildAllShaders( var shaderString = generatedShader.codeString; // we only care if an error was reported for a node that we actually used - if (graph.messageManager.AnyError((nodeId) => NodeWasUsedByGraph(nodeId, graph)) || + if (graph.messageManager.HasSeverity((nodeId) => NodeWasUsedByGraph(nodeId, graph), Rendering.ShaderCompilerMessageSeverity.Error) || shaderString == null) { shaderString = k_ErrorShader.Replace("Hidden/GraphErrorShader2", generatedShader.shaderName); @@ -481,7 +481,7 @@ internal static string GetShaderText(string path, out List NodeWasUsedByGraph(nodeId, graph))) + if (graph.messageManager.HasSeverity((nodeId) => NodeWasUsedByGraph(nodeId, graph), Rendering.ShaderCompilerMessageSeverity.Error)) { shaderString = null; } diff --git a/Packages/com.unity.shadergraph/Editor/ShaderGraphNodeValidationExtension.cs b/Packages/com.unity.shadergraph/Editor/ShaderGraphNodeValidationExtension.cs index 2e267444394..08524a55fe9 100644 --- a/Packages/com.unity.shadergraph/Editor/ShaderGraphNodeValidationExtension.cs +++ b/Packages/com.unity.shadergraph/Editor/ShaderGraphNodeValidationExtension.cs @@ -35,9 +35,10 @@ internal static void HandleValidationExtensions(AbstractMaterialNode node) foreach(var validator in s_validators) { - var status = validator.GetValidationStatus(node, out var msg); + var status = validator.GetValidationStatus(node, out var msg); - if (node.owner.messageManager.AnyError(e => e == node.objectId)) + if (node.owner.messageManager.HasSeverity(e => e == node.objectId, Rendering.ShaderCompilerMessageSeverity.Error) || + node.owner.messageManager.HasSeverity(e => e == node.objectId, Rendering.ShaderCompilerMessageSeverity.Warning)) node.owner.messageManager.ClearNodesFromProvider(validator, Enumerable.Repeat(node, 1)); if (status != INodeValidationExtension.Status.None) diff --git a/Packages/com.unity.shadergraph/Editor/Util/MessageManager.cs b/Packages/com.unity.shadergraph/Editor/Util/MessageManager.cs index 09e75938cbd..2878744ae55 100644 --- a/Packages/com.unity.shadergraph/Editor/Util/MessageManager.cs +++ b/Packages/com.unity.shadergraph/Editor/Util/MessageManager.cs @@ -162,7 +162,7 @@ public static void Log(string path, ShaderMessage message, Object context, IErro } } - public bool AnyError(Func nodeFilter = null) + public bool HasSeverity(Func nodeFilter = null, ShaderCompilerMessageSeverity severity = ShaderCompilerMessageSeverity.Error) { if (m_Messages == null) return false; @@ -179,7 +179,7 @@ public bool AnyError(Func nodeFilter = null) { foreach (var message in messageList) { - if (message.severity == ShaderCompilerMessageSeverity.Error) + if (message.severity == severity) { return true; } diff --git a/Packages/com.unity.shadergraph/Tests/Editor/UnitTests/MessageManagerTests.cs b/Packages/com.unity.shadergraph/Tests/Editor/UnitTests/MessageManagerTests.cs index f7899eb7b20..9ff8a425902 100644 --- a/Packages/com.unity.shadergraph/Tests/Editor/UnitTests/MessageManagerTests.cs +++ b/Packages/com.unity.shadergraph/Tests/Editor/UnitTests/MessageManagerTests.cs @@ -290,14 +290,14 @@ public void ClearNodesFromProvider_LeavesOtherNodes() [Test] public void ReportAnyErrors_EmptyManager() { - var ret = m_EmptyMgr.AnyError(); + var ret = m_EmptyMgr.HasSeverity(); Assert.IsFalse(ret); } [Test] public void ReportAnyErrors_ComplexManager() { - var ret = m_ComplexMgr.AnyError(); + var ret = m_ComplexMgr.HasSeverity(); Assert.IsTrue(ret); } @@ -307,7 +307,7 @@ public void ReportAnyErrors_EmptyManager_OnlyWarnings() m_EmptyMgr.AddOrAppendError(p0, node0.objectId, w0); m_EmptyMgr.AddOrAppendError(p1, node1.objectId, w1); - var ret = m_EmptyMgr.AnyError(); + var ret = m_EmptyMgr.HasSeverity(); Assert.IsFalse(ret); } @@ -317,7 +317,7 @@ public void ReportAnyErrors_EmptyManager_ErrorOneProvider() m_EmptyMgr.AddOrAppendError(p0, node0.objectId, w0); m_EmptyMgr.AddOrAppendError(p1, node1.objectId, e1); - var ret = m_EmptyMgr.AnyError(); + var ret = m_EmptyMgr.HasSeverity(); Assert.IsTrue(ret); } } From 24ddb99b72f6f827b56df61d3aca08cda55f92a3 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Fri, 26 Sep 2025 15:59:16 +0000 Subject: [PATCH 39/65] [Port] [6000.3] [UUM-119296][6000.4] Fix memory regression from Light2D shader --- .../2D/Passes/Utility/RendererLighting.cs | 8 +--- .../Shaders/2D/Light2D.shader | 41 ++++++++----------- 2 files changed, 19 insertions(+), 30 deletions(-) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Passes/Utility/RendererLighting.cs b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Passes/Utility/RendererLighting.cs index 516c9017a60..fffacabdc71 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/2D/Passes/Utility/RendererLighting.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/2D/Passes/Utility/RendererLighting.cs @@ -12,7 +12,6 @@ internal static class RendererLighting private static readonly ShaderTagId k_NormalsRenderingPassName = new ShaderTagId("NormalsRendering"); public static readonly Color k_NormalClearColor = new Color(0.5f, 0.5f, 0.5f, 1.0f); private static readonly string k_UsePointLightCookiesKeyword = "USE_POINT_LIGHT_COOKIES"; - private static readonly string k_UseSpriteLight = "USE_SPRITE_LIGHT"; private static readonly string k_LightQualityFastKeyword = "LIGHT_QUALITY_FAST"; private static readonly string k_UseNormalMap = "USE_NORMAL_MAP"; private static readonly string k_UseShadowMap = "USE_SHADOW_MAP"; @@ -683,15 +682,13 @@ private static uint GetLightMaterialIndex(Light2D light, bool isVolume, bool use bitIndex++; var pointCookieBit = (isPoint && light.lightCookieSprite != null && light.lightCookieSprite.texture != null) ? 1u << bitIndex : 0u; bitIndex++; - var spriteLightBit = (light.lightType == Light2D.LightType.Sprite) ? 1u << bitIndex : 0u; - bitIndex++; var fastQualityBit = (light.normalMapQuality == Light2D.NormalMapQuality.Fast) ? 1u << bitIndex : 0u; bitIndex++; var useNormalMap = light.normalMapQuality != Light2D.NormalMapQuality.Disabled ? 1u << bitIndex : 0u; bitIndex++; var useShadowMap = useShadows ? 1u << bitIndex : 0u; - return fastQualityBit | pointCookieBit | spriteLightBit | additiveBit | shapeBit | volumeBit | useNormalMap | useShadowMap; + return fastQualityBit | pointCookieBit | additiveBit | shapeBit | volumeBit | useNormalMap | useShadowMap; } private static Material CreateLightMaterial(Renderer2DData rendererData, Light2D light, bool isVolume, bool useShadows) @@ -726,9 +723,6 @@ private static Material CreateLightMaterial(Renderer2DData rendererData, Light2D if (isPoint && light.lightCookieSprite != null && light.lightCookieSprite.texture != null) material.EnableKeyword(k_UsePointLightCookiesKeyword); - if (light.lightType == Light2D.LightType.Sprite) - material.EnableKeyword(k_UseSpriteLight); - if (light.normalMapQuality == Light2D.NormalMapQuality.Fast) material.EnableKeyword(k_LightQualityFastKeyword); diff --git a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Light2D.shader b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Light2D.shader index da01448ca75..e2dcc198273 100644 --- a/Packages/com.unity.render-pipelines.universal/Shaders/2D/Light2D.shader +++ b/Packages/com.unity.render-pipelines.universal/Shaders/2D/Light2D.shader @@ -25,7 +25,6 @@ Shader "Hidden/Light2D" #pragma multi_compile_local USE_ADDITIVE_BLENDING __ #pragma multi_compile_local USE_VOLUMETRIC __ #pragma multi_compile_local USE_POINT_LIGHT_COOKIES __ - #pragma multi_compile_local USE_SPRITE_LIGHT __ #pragma multi_compile_local LIGHT_QUALITY_FAST __ #include_with_pragmas "Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/ShapeLightShared.hlsl" @@ -51,10 +50,8 @@ Shader "Hidden/Light2D" LIGHT_OFFSET(TEXCOORD5) }; -#if USE_SPRITE_LIGHT TEXTURE2D(_CookieTex); // This can either be a sprite texture uv or a falloff texture SAMPLER(sampler_CookieTex); -#endif TEXTURE2D(_FalloffLookup); SAMPLER(sampler_FalloffLookup); @@ -153,27 +150,25 @@ Shader "Hidden/Light2D" FragmentOutput frag_shape(Varyings i, PerLight2D light) { half4 lightColor = i.color; - -#if USE_SPRITE_LIGHT - half4 cookie = SAMPLE_TEXTURE2D(_CookieTex, sampler_CookieTex, i.uv); - - #if USE_ADDITIVE_BLENDING - lightColor *= cookie * cookie.a; - #else - lightColor *= cookie; - #endif - + if (_L2D_LIGHT_TYPE == 2) + { + half4 cookie = SAMPLE_TEXTURE2D(_CookieTex, sampler_CookieTex, i.uv); +#if USE_ADDITIVE_BLENDING + lightColor *= cookie * cookie.a; #else - - #if USE_ADDITIVE_BLENDING - lightColor *= SAMPLE_TEXTURE2D(_FalloffLookup, sampler_FalloffLookup, i.uv).r; - #elif USE_VOLUMETRIC - lightColor.a = i.color.a * SAMPLE_TEXTURE2D(_FalloffLookup, sampler_FalloffLookup, i.uv).r; - #else - lightColor.a = SAMPLE_TEXTURE2D(_FalloffLookup, sampler_FalloffLookup, i.uv).r; - #endif - -#endif // USE_SPRITE_LIGHT + lightColor *= cookie; +#endif + } + else + { +#if USE_ADDITIVE_BLENDING + lightColor *= SAMPLE_TEXTURE2D(_FalloffLookup, sampler_FalloffLookup, i.uv).r; +#elif USE_VOLUMETRIC + lightColor.a = i.color.a * SAMPLE_TEXTURE2D(_FalloffLookup, sampler_FalloffLookup, i.uv).r; +#else + lightColor.a = SAMPLE_TEXTURE2D(_FalloffLookup, sampler_FalloffLookup, i.uv).r; +#endif + } #if !USE_VOLUMETRIC APPLY_NORMALS_LIGHTING(i, lightColor, _L2D_POSITION.xyz, _L2D_POSITION.w); From 61d972b8f35b1a66369b006f022fc1f9ce721bb8 Mon Sep 17 00:00:00 2001 From: Nicola Cerone Date: Fri, 26 Sep 2025 15:59:16 +0000 Subject: [PATCH 40/65] [Backport 6000.3] Improve Element Texture Size node. --- .../Nodes/Input/UI/ElementTextureSizeNode.cs | 36 ++- .../UITK/UITKRenderTypeBitmapText.shadergraph | 62 +--- .../UITK/UITKRenderTypeGradient.shadergraph | 62 +--- .../UITK/UITKRenderTypeSDFText.shadergraph | 62 +--- .../UITK/UITKRenderTypeSolid.shadergraph | 62 +--- .../UITK/UITKRenderTypeTexture.shadergraph | 62 +--- .../Graphs/UITK/UITKTextureSize.shadergraph | 278 ++++++------------ .../UITK_Custom_Shader_ForALL.shadergraph | 234 ++++----------- 8 files changed, 184 insertions(+), 674 deletions(-) diff --git a/Packages/com.unity.shadergraph/Editor/Data/Nodes/Input/UI/ElementTextureSizeNode.cs b/Packages/com.unity.shadergraph/Editor/Data/Nodes/Input/UI/ElementTextureSizeNode.cs index 8a7d8e9f5b6..eaa0f19b0f7 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Nodes/Input/UI/ElementTextureSizeNode.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Nodes/Input/UI/ElementTextureSizeNode.cs @@ -8,9 +8,15 @@ namespace UnityEditor.ShaderGraph [SubTargetFilter(typeof(IUISubTarget))] class ElementTextureUVSize : AbstractMaterialNode, IGeneratesBodyCode, IMayRequireUITK { - public const int TextureSizeSlotId = 0; + public const int TextureWidthSlotId = 0; + public const int TextureHeightSlotId = 1; + public const int TexelWidthSlotId = 2; + public const int TexelHeightSlotId = 3; - private const string kTextureSizeName = "Texture Size"; + private const string kTextureWidthName = "Width"; + private const string kTextureHeightName = "Height"; + private const string kTexelWidthName = "Texel Width"; + private const string kTexelHeightName = "Texel Height"; public override bool hasPreview { get { return false; } } @@ -23,17 +29,29 @@ public ElementTextureUVSize() public override void UpdateNodeAfterDeserialization() { - AddSlot(new Vector4MaterialSlot(TextureSizeSlotId, kTextureSizeName, kTextureSizeName, SlotType.Output, Vector4.zero)); - RemoveSlotsNameNotMatching(new[] { TextureSizeSlotId }); + AddSlot(new Vector1MaterialSlot(TextureWidthSlotId, kTextureWidthName, kTextureWidthName, SlotType.Output, 0.0f)); + AddSlot(new Vector1MaterialSlot(TextureHeightSlotId, kTextureHeightName, kTextureHeightName, SlotType.Output, 0.0f)); + AddSlot(new Vector1MaterialSlot(TexelWidthSlotId, kTexelWidthName, kTexelWidthName, SlotType.Output, 0.0f)); + AddSlot(new Vector1MaterialSlot(TexelHeightSlotId, kTexelHeightName, kTexelHeightName, SlotType.Output, 0.0f)); + + RemoveSlotsNameNotMatching(new[] { TextureWidthSlotId, TextureHeightSlotId, TexelWidthSlotId, TexelHeightSlotId }); } public void GenerateNodeCode(ShaderStringBuilder sb, GenerationMode generationMode) { - if (GetInputNodeFromSlot(TextureSizeSlotId) != null) sb.AppendLine(string.Format("TextureInfo UITKNodeOutput_{0} = GetTextureInfo(IN.typeTexSettings.y);", GetVariableNameForSlot(TextureSizeSlotId))); - if (GetInputNodeFromSlot(TextureSizeSlotId) != null) sb.AppendLine(string.Format("$precision4 {0} = float4(UITKNodeOutput_{1}.textureSize, UITKNodeOutput_{2}.texelSize);", - GetVariableNameForSlot(TextureSizeSlotId), - GetVariableNameForSlot(TextureSizeSlotId), - GetVariableNameForSlot(TextureSizeSlotId))); + if ((GetInputNodeFromSlot(TextureWidthSlotId) != null) || + (GetInputNodeFromSlot(TextureHeightSlotId) != null) || + (GetInputNodeFromSlot(TexelWidthSlotId) != null) || + (GetInputNodeFromSlot(TexelHeightSlotId) != null)) + { + string variableName = string.Format("TextureInfo_{0}", objectId.ToString()); + + sb.AppendLine(string.Format("TextureInfo {0} = GetTextureInfo(IN.typeTexSettings.y);", variableName)); + if (GetInputNodeFromSlot(TextureWidthSlotId) != null) sb.AppendLine(string.Format("$precision1 {0} = {1}.textureSize.x;", GetVariableNameForSlot(TextureWidthSlotId), variableName)); + if (GetInputNodeFromSlot(TextureHeightSlotId) != null) sb.AppendLine(string.Format("$precision1 {0} = {1}.textureSize.y;", GetVariableNameForSlot(TextureHeightSlotId), variableName)); + if (GetInputNodeFromSlot(TexelWidthSlotId) != null) sb.AppendLine(string.Format("$precision1 {0} = {1}.texelSize.x;", GetVariableNameForSlot(TexelWidthSlotId), variableName)); + if (GetInputNodeFromSlot(TexelHeightSlotId) != null) sb.AppendLine(string.Format("$precision1 {0} = {1}.texelSize.y;", GetVariableNameForSlot(TexelHeightSlotId), variableName)); + } } public bool RequiresUITK(ShaderStageCapability stageCapability) diff --git a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeBitmapText.shadergraph b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeBitmapText.shadergraph index 2df80174242..f67ce3c6944 100644 --- a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeBitmapText.shadergraph +++ b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeBitmapText.shadergraph @@ -20,9 +20,6 @@ { "m_Id": "f176b3672d5e4410acc5f332822e7e5a" }, - { - "m_Id": "5f2292affc4746a389314884f6e49388" - }, { "m_Id": "d2df5180aab9455db77db1522f4a4ca8" }, @@ -491,39 +488,6 @@ "m_Labels": [] } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.DefaultSolidNode", - "m_ObjectId": "5f2292affc4746a389314884f6e49388", - "m_Group": { - "m_Id": "" - }, - "m_Name": "Default Solid", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": -674.0, - "y": -74.99998474121094, - "width": 118.99993896484375, - "height": 76.99999237060547 - } - }, - "m_Slots": [ - { - "m_Id": "7ed952595f844cdeb52ca6322517f235" - } - ], - "synonyms": [], - "m_Precision": 0, - "m_PreviewExpanded": true, - "m_DismissedVersion": 0, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -554,31 +518,6 @@ "m_DefaultValue": false } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", - "m_ObjectId": "7ed952595f844cdeb52ca6322517f235", - "m_Id": 0, - "m_DisplayName": "Solid", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Solid", - "m_StageCapability": 2, - "m_Value": { - "x": 1.0, - "y": 1.0, - "z": 1.0, - "w": 1.0 - }, - "m_DefaultValue": { - "x": 1.0, - "y": 1.0, - "z": 1.0, - "w": 1.0 - }, - "m_Labels": [] -} - { "m_SGVersion": 1, "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", @@ -601,6 +540,7 @@ "m_CastShadows": true, "m_ReceiveShadows": true, "m_DisableTint": false, + "m_Sort3DAs2DCompatible": false, "m_AdditionalMotionVectorMode": 0, "m_AlembicMotionVectors": false, "m_SupportsLODCrossFade": false, diff --git a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeGradient.shadergraph b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeGradient.shadergraph index d6c22b43090..6d0988407b3 100644 --- a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeGradient.shadergraph +++ b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeGradient.shadergraph @@ -20,9 +20,6 @@ { "m_Id": "f176b3672d5e4410acc5f332822e7e5a" }, - { - "m_Id": "5f2292affc4746a389314884f6e49388" - }, { "m_Id": "d2df5180aab9455db77db1522f4a4ca8" }, @@ -491,39 +488,6 @@ "m_Labels": [] } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.DefaultSolidNode", - "m_ObjectId": "5f2292affc4746a389314884f6e49388", - "m_Group": { - "m_Id": "" - }, - "m_Name": "Default Solid", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": -674.0, - "y": -74.99998474121094, - "width": 118.99993896484375, - "height": 76.99999237060547 - } - }, - "m_Slots": [ - { - "m_Id": "7ed952595f844cdeb52ca6322517f235" - } - ], - "synonyms": [], - "m_Precision": 0, - "m_PreviewExpanded": true, - "m_DismissedVersion": 0, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -554,31 +518,6 @@ "m_DefaultValue": false } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", - "m_ObjectId": "7ed952595f844cdeb52ca6322517f235", - "m_Id": 0, - "m_DisplayName": "Solid", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Solid", - "m_StageCapability": 2, - "m_Value": { - "x": 1.0, - "y": 1.0, - "z": 1.0, - "w": 1.0 - }, - "m_DefaultValue": { - "x": 1.0, - "y": 1.0, - "z": 1.0, - "w": 1.0 - }, - "m_Labels": [] -} - { "m_SGVersion": 1, "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", @@ -601,6 +540,7 @@ "m_CastShadows": true, "m_ReceiveShadows": true, "m_DisableTint": false, + "m_Sort3DAs2DCompatible": false, "m_AdditionalMotionVectorMode": 0, "m_AlembicMotionVectors": false, "m_SupportsLODCrossFade": false, diff --git a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeSDFText.shadergraph b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeSDFText.shadergraph index 169e77d5d4f..d4732d22b16 100644 --- a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeSDFText.shadergraph +++ b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeSDFText.shadergraph @@ -20,9 +20,6 @@ { "m_Id": "f176b3672d5e4410acc5f332822e7e5a" }, - { - "m_Id": "5f2292affc4746a389314884f6e49388" - }, { "m_Id": "d2df5180aab9455db77db1522f4a4ca8" }, @@ -491,39 +488,6 @@ "m_Labels": [] } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.DefaultSolidNode", - "m_ObjectId": "5f2292affc4746a389314884f6e49388", - "m_Group": { - "m_Id": "" - }, - "m_Name": "Default Solid", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": -674.0, - "y": -74.99998474121094, - "width": 118.99993896484375, - "height": 76.99999237060547 - } - }, - "m_Slots": [ - { - "m_Id": "7ed952595f844cdeb52ca6322517f235" - } - ], - "synonyms": [], - "m_Precision": 0, - "m_PreviewExpanded": true, - "m_DismissedVersion": 0, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -554,31 +518,6 @@ "m_DefaultValue": false } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", - "m_ObjectId": "7ed952595f844cdeb52ca6322517f235", - "m_Id": 0, - "m_DisplayName": "Solid", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Solid", - "m_StageCapability": 2, - "m_Value": { - "x": 1.0, - "y": 1.0, - "z": 1.0, - "w": 1.0 - }, - "m_DefaultValue": { - "x": 1.0, - "y": 1.0, - "z": 1.0, - "w": 1.0 - }, - "m_Labels": [] -} - { "m_SGVersion": 1, "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", @@ -601,6 +540,7 @@ "m_CastShadows": true, "m_ReceiveShadows": true, "m_DisableTint": false, + "m_Sort3DAs2DCompatible": false, "m_AdditionalMotionVectorMode": 0, "m_AlembicMotionVectors": false, "m_SupportsLODCrossFade": false, diff --git a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeSolid.shadergraph b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeSolid.shadergraph index 587bb3317cf..290d500ed49 100644 --- a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeSolid.shadergraph +++ b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeSolid.shadergraph @@ -20,9 +20,6 @@ { "m_Id": "f176b3672d5e4410acc5f332822e7e5a" }, - { - "m_Id": "5f2292affc4746a389314884f6e49388" - }, { "m_Id": "d2df5180aab9455db77db1522f4a4ca8" }, @@ -491,39 +488,6 @@ "m_Labels": [] } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.DefaultSolidNode", - "m_ObjectId": "5f2292affc4746a389314884f6e49388", - "m_Group": { - "m_Id": "" - }, - "m_Name": "Default Solid", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": -674.0, - "y": -74.99998474121094, - "width": 118.99993896484375, - "height": 76.99999237060547 - } - }, - "m_Slots": [ - { - "m_Id": "7ed952595f844cdeb52ca6322517f235" - } - ], - "synonyms": [], - "m_Precision": 0, - "m_PreviewExpanded": true, - "m_DismissedVersion": 0, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -554,31 +518,6 @@ "m_DefaultValue": false } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", - "m_ObjectId": "7ed952595f844cdeb52ca6322517f235", - "m_Id": 0, - "m_DisplayName": "Solid", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Solid", - "m_StageCapability": 2, - "m_Value": { - "x": 1.0, - "y": 1.0, - "z": 1.0, - "w": 1.0 - }, - "m_DefaultValue": { - "x": 1.0, - "y": 1.0, - "z": 1.0, - "w": 1.0 - }, - "m_Labels": [] -} - { "m_SGVersion": 1, "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", @@ -601,6 +540,7 @@ "m_CastShadows": true, "m_ReceiveShadows": true, "m_DisableTint": false, + "m_Sort3DAs2DCompatible": false, "m_AdditionalMotionVectorMode": 0, "m_AlembicMotionVectors": false, "m_SupportsLODCrossFade": false, diff --git a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeTexture.shadergraph b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeTexture.shadergraph index 9bb4085c76c..17a6658288a 100644 --- a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeTexture.shadergraph +++ b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKRenderTypeTexture.shadergraph @@ -20,9 +20,6 @@ { "m_Id": "f176b3672d5e4410acc5f332822e7e5a" }, - { - "m_Id": "5f2292affc4746a389314884f6e49388" - }, { "m_Id": "d2df5180aab9455db77db1522f4a4ca8" }, @@ -491,39 +488,6 @@ "m_Labels": [] } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.DefaultSolidNode", - "m_ObjectId": "5f2292affc4746a389314884f6e49388", - "m_Group": { - "m_Id": "" - }, - "m_Name": "Default Solid", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": -674.0, - "y": -74.99998474121094, - "width": 118.99993896484375, - "height": 76.99999237060547 - } - }, - "m_Slots": [ - { - "m_Id": "7ed952595f844cdeb52ca6322517f235" - } - ], - "synonyms": [], - "m_Precision": 0, - "m_PreviewExpanded": true, - "m_DismissedVersion": 0, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -554,31 +518,6 @@ "m_DefaultValue": false } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.ColorRGBAMaterialSlot", - "m_ObjectId": "7ed952595f844cdeb52ca6322517f235", - "m_Id": 0, - "m_DisplayName": "Solid", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Solid", - "m_StageCapability": 2, - "m_Value": { - "x": 1.0, - "y": 1.0, - "z": 1.0, - "w": 1.0 - }, - "m_DefaultValue": { - "x": 1.0, - "y": 1.0, - "z": 1.0, - "w": 1.0 - }, - "m_Labels": [] -} - { "m_SGVersion": 1, "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", @@ -601,6 +540,7 @@ "m_CastShadows": true, "m_ReceiveShadows": true, "m_DisableTint": false, + "m_Sort3DAs2DCompatible": false, "m_AdditionalMotionVectorMode": 0, "m_AlembicMotionVectors": false, "m_SupportsLODCrossFade": false, diff --git a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKTextureSize.shadergraph b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKTextureSize.shadergraph index e078388350f..a47ba14f8bb 100644 --- a/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKTextureSize.shadergraph +++ b/Tests/SRPTests/Projects/ShaderGraph/Assets/Testing/IntegrationTests/Graphs/UITK/UITKTextureSize.shadergraph @@ -17,9 +17,6 @@ { "m_Id": "b5f38fbdbbb749a98c2a775d67fcda4a" }, - { - "m_Id": "30e6da40e6e94cc2b1c935585266ebda" - }, { "m_Id": "a1c088d2e2334240b8619c83c1aee86d" }, @@ -79,13 +76,13 @@ { "m_OutputSlot": { "m_Node": { - "m_Id": "30e6da40e6e94cc2b1c935585266ebda" + "m_Id": "3a6b4a57f3f049409e0477df1fe0a69d" }, - "m_SlotId": 1 + "m_SlotId": 2 }, "m_InputSlot": { "m_Node": { - "m_Id": "a1c088d2e2334240b8619c83c1aee86d" + "m_Id": "a6363c19b84d46b5a6408c58802344b6" }, "m_SlotId": 1 } @@ -93,69 +90,69 @@ { "m_OutputSlot": { "m_Node": { - "m_Id": "30e6da40e6e94cc2b1c935585266ebda" + "m_Id": "5d0a9008619f4602ab409bfdb74ade6c" }, - "m_SlotId": 2 + "m_SlotId": 0 }, "m_InputSlot": { "m_Node": { - "m_Id": "a1c088d2e2334240b8619c83c1aee86d" + "m_Id": "3a6b4a57f3f049409e0477df1fe0a69d" }, - "m_SlotId": 2 + "m_SlotId": 1 } }, { "m_OutputSlot": { "m_Node": { - "m_Id": "30e6da40e6e94cc2b1c935585266ebda" + "m_Id": "7d9ce547a3e24093af81450e43b9d767" }, - "m_SlotId": 3 + "m_SlotId": 0 }, "m_InputSlot": { "m_Node": { - "m_Id": "5d0a9008619f4602ab409bfdb74ade6c" + "m_Id": "a6363c19b84d46b5a6408c58802344b6" }, - "m_SlotId": 1 + "m_SlotId": 0 } }, { "m_OutputSlot": { "m_Node": { - "m_Id": "30e6da40e6e94cc2b1c935585266ebda" + "m_Id": "a1c088d2e2334240b8619c83c1aee86d" }, - "m_SlotId": 4 + "m_SlotId": 0 }, "m_InputSlot": { "m_Node": { - "m_Id": "5d0a9008619f4602ab409bfdb74ade6c" + "m_Id": "3a6b4a57f3f049409e0477df1fe0a69d" }, - "m_SlotId": 2 + "m_SlotId": 0 } }, { "m_OutputSlot": { "m_Node": { - "m_Id": "3a6b4a57f3f049409e0477df1fe0a69d" + "m_Id": "a6363c19b84d46b5a6408c58802344b6" }, "m_SlotId": 2 }, "m_InputSlot": { "m_Node": { - "m_Id": "a6363c19b84d46b5a6408c58802344b6" + "m_Id": "b292404a27cb4c3c915fa8969c4cdf93" }, - "m_SlotId": 1 + "m_SlotId": 0 } }, { "m_OutputSlot": { "m_Node": { - "m_Id": "5d0a9008619f4602ab409bfdb74ade6c" + "m_Id": "b292404a27cb4c3c915fa8969c4cdf93" }, - "m_SlotId": 0 + "m_SlotId": 2 }, "m_InputSlot": { "m_Node": { - "m_Id": "3a6b4a57f3f049409e0477df1fe0a69d" + "m_Id": "20a04fbdde7c4310830cc7b4bb0098b3" }, "m_SlotId": 1 } @@ -163,55 +160,41 @@ { "m_OutputSlot": { "m_Node": { - "m_Id": "7d9ce547a3e24093af81450e43b9d767" + "m_Id": "c1fd385ed1de48ff912106c1b1e3a157" }, "m_SlotId": 0 }, "m_InputSlot": { - "m_Node": { - "m_Id": "a6363c19b84d46b5a6408c58802344b6" - }, - "m_SlotId": 0 - } - }, - { - "m_OutputSlot": { "m_Node": { "m_Id": "a1c088d2e2334240b8619c83c1aee86d" }, - "m_SlotId": 0 - }, - "m_InputSlot": { - "m_Node": { - "m_Id": "3a6b4a57f3f049409e0477df1fe0a69d" - }, - "m_SlotId": 0 + "m_SlotId": 1 } }, { "m_OutputSlot": { "m_Node": { - "m_Id": "a6363c19b84d46b5a6408c58802344b6" + "m_Id": "c1fd385ed1de48ff912106c1b1e3a157" }, - "m_SlotId": 2 + "m_SlotId": 1 }, "m_InputSlot": { "m_Node": { - "m_Id": "b292404a27cb4c3c915fa8969c4cdf93" + "m_Id": "a1c088d2e2334240b8619c83c1aee86d" }, - "m_SlotId": 0 + "m_SlotId": 2 } }, { "m_OutputSlot": { "m_Node": { - "m_Id": "b292404a27cb4c3c915fa8969c4cdf93" + "m_Id": "c1fd385ed1de48ff912106c1b1e3a157" }, "m_SlotId": 2 }, "m_InputSlot": { "m_Node": { - "m_Id": "20a04fbdde7c4310830cc7b4bb0098b3" + "m_Id": "5d0a9008619f4602ab409bfdb74ade6c" }, "m_SlotId": 1 } @@ -221,13 +204,13 @@ "m_Node": { "m_Id": "c1fd385ed1de48ff912106c1b1e3a157" }, - "m_SlotId": 0 + "m_SlotId": 3 }, "m_InputSlot": { "m_Node": { - "m_Id": "30e6da40e6e94cc2b1c935585266ebda" + "m_Id": "5d0a9008619f4602ab409bfdb74ade6c" }, - "m_SlotId": 0 + "m_SlotId": 2 } } ], @@ -398,12 +381,12 @@ { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "218f6991568f41ada989557106dad025", - "m_Id": 4, - "m_DisplayName": "A", + "m_ObjectId": "22147cab836148cdaba140b09b3d2763", + "m_Id": 1, + "m_DisplayName": "Height", "m_SlotType": 1, "m_Hidden": false, - "m_ShaderOutputName": "A", + "m_ShaderOutputName": "Height", "m_StageCapability": 3, "m_Value": 0.0, "m_DefaultValue": 0.0, @@ -432,22 +415,6 @@ "m_Labels": [] } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "2aaebddf79d9402fbc272c164c6613bb", - "m_Id": 1, - "m_DisplayName": "R", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "R", - "m_StageCapability": 3, - "m_Value": 0.0, - "m_DefaultValue": 0.0, - "m_Labels": [], - "m_LiteralMode": false -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -507,53 +474,6 @@ "m_SerializedDescriptor": "SurfaceDescription.BaseColor" } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.SplitNode", - "m_ObjectId": "30e6da40e6e94cc2b1c935585266ebda", - "m_Group": { - "m_Id": "" - }, - "m_Name": "Split", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": -863.0000610351563, - "y": 339.0000305175781, - "width": 120.0, - "height": 149.0 - } - }, - "m_Slots": [ - { - "m_Id": "48ba0a25f7044703b1d28ebf1662878c" - }, - { - "m_Id": "2aaebddf79d9402fbc272c164c6613bb" - }, - { - "m_Id": "6d35b55d03a644ecab60d9552125465f" - }, - { - "m_Id": "9b2fede542ad4713bd1a77e3b463a3fe" - }, - { - "m_Id": "218f6991568f41ada989557106dad025" - } - ], - "synonyms": [ - "separate" - ], - "m_Precision": 0, - "m_PreviewExpanded": true, - "m_DismissedVersion": 0, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.MultiplyNode", @@ -667,31 +587,6 @@ "m_LiteralMode": false } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", - "m_ObjectId": "48ba0a25f7044703b1d28ebf1662878c", - "m_Id": 0, - "m_DisplayName": "In", - "m_SlotType": 0, - "m_Hidden": false, - "m_ShaderOutputName": "In", - "m_StageCapability": 3, - "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_LiteralMode": false -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUISubTarget", @@ -774,12 +669,28 @@ { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "6d35b55d03a644ecab60d9552125465f", - "m_Id": 2, - "m_DisplayName": "G", + "m_ObjectId": "60be4486526543599b1e45ba5e600fdb", + "m_Id": 3, + "m_DisplayName": "Texel Height", "m_SlotType": 1, "m_Hidden": false, - "m_ShaderOutputName": "G", + "m_ShaderOutputName": "Texel Height", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "644a74f0f68a400780920803d8b6df2e", + "m_Id": 0, + "m_DisplayName": "Width", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Width", "m_StageCapability": 3, "m_Value": 0.0, "m_DefaultValue": 0.0, @@ -884,6 +795,7 @@ "m_CastShadows": true, "m_ReceiveShadows": true, "m_DisableTint": false, + "m_Sort3DAs2DCompatible": false, "m_AdditionalMotionVectorMode": 0, "m_AlembicMotionVectors": false, "m_SupportsLODCrossFade": false, @@ -1023,22 +935,6 @@ "m_Version": 0 } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "9b2fede542ad4713bd1a77e3b463a3fe", - "m_Id": 3, - "m_DisplayName": "B", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "B", - "m_StageCapability": 3, - "m_Value": 0.0, - "m_DefaultValue": 0.0, - "m_Labels": [], - "m_LiteralMode": false -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DefaultVector4MaterialSlot", @@ -1308,15 +1204,24 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": -1174.3133544921875, - "y": 193.87249755859376, - "width": 0.0, - "height": 0.0 + "x": -1152.9998779296875, + "y": 211.99998474121095, + "width": 164.99993896484376, + "height": 149.00001525878907 } }, "m_Slots": [ { - "m_Id": "ff37a39b95414db1a17702c6b0711f12" + "m_Id": "644a74f0f68a400780920803d8b6df2e" + }, + { + "m_Id": "22147cab836148cdaba140b09b3d2763" + }, + { + "m_Id": "c8d584994e52404eb8bf61ff052e479d" + }, + { + "m_Id": "60be4486526543599b1e45ba5e600fdb" } ], "synonyms": [], @@ -1329,6 +1234,22 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "c8d584994e52404eb8bf61ff052e479d", + "m_Id": 2, + "m_DisplayName": "Texel Width", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Texel Width", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [], + "m_LiteralMode": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", @@ -1513,28 +1434,3 @@ "m_LiteralMode": false } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", - "m_ObjectId": "ff37a39b95414db1a17702c6b0711f12", - "m_Id": 0, - "m_DisplayName": "Texture Size", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "Texture Size", - "m_StageCapability": 3, - "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_Labels": [] -} - diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/UITK_Custom_Shader_ForALL.shadergraph b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/UITK_Custom_Shader_ForALL.shadergraph index 9f1a2d970e6..c54af22a792 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/UITK_Custom_Shader_ForALL.shadergraph +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/360_Shader_Graphs_UITK/UITK_Custom_Shader_ForALL.shadergraph @@ -41,9 +41,6 @@ { "m_Id": "627816d9e8554ebfaf733855dea720cc" }, - { - "m_Id": "6be2cf76cb534392ba910d90dcb97f55" - }, { "m_Id": "0cc04afbf2ac4650a836c0ffc7f7137a" }, @@ -288,27 +285,27 @@ "m_Node": { "m_Id": "6663e071d71d4e8a914789ccd32616b1" }, - "m_SlotId": 0 + "m_SlotId": 2 }, "m_InputSlot": { "m_Node": { - "m_Id": "6be2cf76cb534392ba910d90dcb97f55" + "m_Id": "0cc04afbf2ac4650a836c0ffc7f7137a" }, - "m_SlotId": 0 + "m_SlotId": 1 } }, { "m_OutputSlot": { "m_Node": { - "m_Id": "6bdc8c7a434b4c7fa62b20eb0bda2887" + "m_Id": "6663e071d71d4e8a914789ccd32616b1" }, - "m_SlotId": 0 + "m_SlotId": 3 }, "m_InputSlot": { "m_Node": { - "m_Id": "6204ef47406345818af0d14cdbe63ec0" + "m_Id": "0cc04afbf2ac4650a836c0ffc7f7137a" }, - "m_SlotId": 0 + "m_SlotId": 2 } }, { @@ -320,7 +317,7 @@ }, "m_InputSlot": { "m_Node": { - "m_Id": "8713de1cd14444aaa17db61bafefaf91" + "m_Id": "6204ef47406345818af0d14cdbe63ec0" }, "m_SlotId": 0 } @@ -328,29 +325,15 @@ { "m_OutputSlot": { "m_Node": { - "m_Id": "6be2cf76cb534392ba910d90dcb97f55" - }, - "m_SlotId": 3 - }, - "m_InputSlot": { - "m_Node": { - "m_Id": "0cc04afbf2ac4650a836c0ffc7f7137a" - }, - "m_SlotId": 1 - } - }, - { - "m_OutputSlot": { - "m_Node": { - "m_Id": "6be2cf76cb534392ba910d90dcb97f55" + "m_Id": "6bdc8c7a434b4c7fa62b20eb0bda2887" }, - "m_SlotId": 4 + "m_SlotId": 0 }, "m_InputSlot": { "m_Node": { - "m_Id": "0cc04afbf2ac4650a836c0ffc7f7137a" + "m_Id": "8713de1cd14444aaa17db61bafefaf91" }, - "m_SlotId": 2 + "m_SlotId": 0 } }, { @@ -905,31 +888,6 @@ "m_Labels": [] } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", - "m_ObjectId": "158a81e88462423eafb34aa568d94369", - "m_Id": 0, - "m_DisplayName": "In", - "m_SlotType": 0, - "m_Hidden": false, - "m_ShaderOutputName": "In", - "m_StageCapability": 3, - "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_LiteralMode": false -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.CombineNode", @@ -1026,27 +984,18 @@ { "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", - "m_ObjectId": "21e4004a0e30467bb35c4025d43aecb8", - "m_Id": 0, - "m_DisplayName": "Texture Size", + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "21138be225b747ba8a4643026a7c60d6", + "m_Id": 2, + "m_DisplayName": "Texel Width", "m_SlotType": 1, "m_Hidden": false, - "m_ShaderOutputName": "Texture Size", + "m_ShaderOutputName": "Texel Width", "m_StageCapability": 3, - "m_Value": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_DefaultValue": { - "x": 0.0, - "y": 0.0, - "z": 0.0, - "w": 0.0 - }, - "m_Labels": [] + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [], + "m_LiteralMode": false } { @@ -1121,7 +1070,7 @@ { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "244f04ed91b446fdbf85b71217232610", + "m_ObjectId": "2570275119e7460b8dd0736c9dac8253", "m_Id": 3, "m_DisplayName": "B", "m_SlotType": 1, @@ -1137,12 +1086,12 @@ { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "2570275119e7460b8dd0736c9dac8253", - "m_Id": 3, - "m_DisplayName": "B", + "m_ObjectId": "267fb929014747a69dbbed6cf7bf39a4", + "m_Id": 4, + "m_DisplayName": "A", "m_SlotType": 1, "m_Hidden": false, - "m_ShaderOutputName": "B", + "m_ShaderOutputName": "A", "m_StageCapability": 3, "m_Value": 0.0, "m_DefaultValue": 0.0, @@ -1153,12 +1102,12 @@ { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "267fb929014747a69dbbed6cf7bf39a4", - "m_Id": 4, - "m_DisplayName": "A", + "m_ObjectId": "2901df48b92e48b8b845078b511bdf57", + "m_Id": 0, + "m_DisplayName": "Width", "m_SlotType": 1, "m_Hidden": false, - "m_ShaderOutputName": "A", + "m_ShaderOutputName": "Width", "m_StageCapability": 3, "m_Value": 0.0, "m_DefaultValue": 0.0, @@ -1732,15 +1681,24 @@ "m_Expanded": true, "m_Position": { "serializedVersion": "2", - "x": -2515.0, - "y": -306.0, - "width": 166.0, - "height": 77.00001525878906 + "x": -2296.0, + "y": -343.0, + "width": 165.0, + "height": 149.0 } }, "m_Slots": [ { - "m_Id": "21e4004a0e30467bb35c4025d43aecb8" + "m_Id": "2901df48b92e48b8b845078b511bdf57" + }, + { + "m_Id": "e5f1defc22c848909f80c57a542ca2fc" + }, + { + "m_Id": "21138be225b747ba8a4643026a7c60d6" + }, + { + "m_Id": "ddc5f6fa9e9447a5bc713ead75e80cff" } ], "synonyms": [], @@ -1824,53 +1782,6 @@ } } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.SplitNode", - "m_ObjectId": "6be2cf76cb534392ba910d90dcb97f55", - "m_Group": { - "m_Id": "" - }, - "m_Name": "Split", - "m_DrawState": { - "m_Expanded": true, - "m_Position": { - "serializedVersion": "2", - "x": -2265.000244140625, - "y": -314.0, - "width": 120.0, - "height": 149.0 - } - }, - "m_Slots": [ - { - "m_Id": "158a81e88462423eafb34aa568d94369" - }, - { - "m_Id": "c506c2584cda43179501738280041cfd" - }, - { - "m_Id": "ad1e76c1889c4aa6b5196ae846ec3f13" - }, - { - "m_Id": "244f04ed91b446fdbf85b71217232610" - }, - { - "m_Id": "e669724439504b19bccde0467fa88329" - } - ], - "synonyms": [ - "separate" - ], - "m_Precision": 0, - "m_PreviewExpanded": true, - "m_DismissedVersion": 0, - "m_PreviewMode": 0, - "m_CustomColors": { - "m_SerializableColors": [] - } -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.SampleElementTextureNode", @@ -2507,22 +2418,6 @@ "m_LiteralMode": false } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "ad1e76c1889c4aa6b5196ae846ec3f13", - "m_Id": 2, - "m_DisplayName": "G", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "G", - "m_StageCapability": 3, - "m_Value": 0.0, - "m_DefaultValue": 0.0, - "m_Labels": [], - "m_LiteralMode": false -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector3MaterialSlot", @@ -2835,22 +2730,6 @@ "m_LiteralMode": false } -{ - "m_SGVersion": 0, - "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "c506c2584cda43179501738280041cfd", - "m_Id": 1, - "m_DisplayName": "R", - "m_SlotType": 1, - "m_Hidden": false, - "m_ShaderOutputName": "R", - "m_StageCapability": 3, - "m_Value": 0.0, - "m_DefaultValue": 0.0, - "m_Labels": [], - "m_LiteralMode": false -} - { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector4MaterialSlot", @@ -3125,6 +3004,22 @@ } } +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "ddc5f6fa9e9447a5bc713ead75e80cff", + "m_Id": 3, + "m_DisplayName": "Texel Height", + "m_SlotType": 1, + "m_Hidden": false, + "m_ShaderOutputName": "Texel Height", + "m_StageCapability": 3, + "m_Value": 0.0, + "m_DefaultValue": 0.0, + "m_Labels": [], + "m_LiteralMode": false +} + { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.DynamicVectorMaterialSlot", @@ -3153,12 +3048,12 @@ { "m_SGVersion": 0, "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", - "m_ObjectId": "e669724439504b19bccde0467fa88329", - "m_Id": 4, - "m_DisplayName": "A", + "m_ObjectId": "e5f1defc22c848909f80c57a542ca2fc", + "m_Id": 1, + "m_DisplayName": "Height", "m_SlotType": 1, "m_Hidden": false, - "m_ShaderOutputName": "A", + "m_ShaderOutputName": "Height", "m_StageCapability": 3, "m_Value": 0.0, "m_DefaultValue": 0.0, @@ -3320,6 +3215,7 @@ "m_CastShadows": true, "m_ReceiveShadows": true, "m_DisableTint": false, + "m_Sort3DAs2DCompatible": false, "m_AdditionalMotionVectorMode": 0, "m_AlembicMotionVectors": false, "m_SupportsLODCrossFade": false, From 6eb6142b12f285c5625034695ceb6a45df394ce4 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Fri, 26 Sep 2025 15:59:17 +0000 Subject: [PATCH 41/65] [Port] [6000.3] Fixed On-Tile PP issues within the editor --- .../OnTilePostProcessFeature.cs | 10 +++++++--- .../RendererFeatures/OnTilePostProcessPass.cs | 19 +++++++++++++------ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessFeature.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessFeature.cs index b0d080bdf6f..b9ca98f0afe 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessFeature.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessFeature.cs @@ -63,9 +63,6 @@ public override void Create() // On-tile PP requries memoryless intermediate texture to work. In case intermediate texture is not memoryless, on-tile PP will falls back to offtile rendering. m_OnTilePostProcessPass.requiresIntermediateTexture = true; } - - if (!TryLoadResources()) - return; } #if ENABLE_VR && ENABLE_XR_MODULE @@ -121,6 +118,9 @@ public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingD if (m_ColorGradingLutPass == null || m_OnTilePostProcessPass == null) return; + if (!TryLoadResources()) + return; + var graphicsDeviceType = SystemInfo.graphicsDeviceType; var deviceSupportsFbf = graphicsDeviceType == GraphicsDeviceType.Vulkan || graphicsDeviceType == GraphicsDeviceType.Metal || graphicsDeviceType == GraphicsDeviceType.Direct3D12; if (!deviceSupportsFbf) @@ -143,6 +143,10 @@ public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingD m_OnTilePostProcessPass.m_UseTextureReadFallback = true; UniversalRenderPipeline.renderTextureUVOriginStrategy = RenderTextureUVOriginStrategy.BottomLeft; } + else + { + m_OnTilePostProcessPass.m_UseTextureReadFallback = false; + } renderer.EnqueuePass(m_ColorGradingLutPass); renderer.EnqueuePass(m_OnTilePostProcessPass); diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs index 2085e5d12b3..c8c669ac32a 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/RendererFeatures/OnTilePostProcessPass.cs @@ -87,7 +87,7 @@ public override void RecordRenderGraph(RenderGraph renderGraph, ContextContainer SetupVignette(m_OnTileUberMaterial, cameraData.xr, srcDesc.width, srcDesc.height, vignette); SetupLut(m_OnTileUberMaterial, colorLookup, colorAdjustments, lutSize); - SetupTonemapping(m_OnTileUberMaterial, tonemapping); + SetupTonemapping(m_OnTileUberMaterial, tonemapping, isHdrGrading: postProcessingData.gradingMode == ColorGradingMode.HighDynamicRange); SetupGrain(m_OnTileUberMaterial, cameraData, filmgrain, m_PostProcessData); SetupDithering(m_OnTileUberMaterial, cameraData, m_PostProcessData); @@ -386,12 +386,19 @@ void SetupVignette(Material material, XRPass xrPass, int width, int height, Vign #endregion - private void SetupTonemapping(Material onTileUberMaterial, Tonemapping tonemapping) + private void SetupTonemapping(Material onTileUberMaterial, Tonemapping tonemapping, bool isHdrGrading) { - CoreUtils.SetKeyword(m_OnTileUberMaterial, ShaderKeywordStrings.TonemapNeutral, - tonemapping.mode.value == TonemappingMode.Neutral); - CoreUtils.SetKeyword(m_OnTileUberMaterial, ShaderKeywordStrings.TonemapACES, - tonemapping.mode.value == TonemappingMode.ACES); + if (isHdrGrading) + { + CoreUtils.SetKeyword(m_OnTileUberMaterial, ShaderKeywordStrings.HDRGrading, isHdrGrading); + } + else + { + CoreUtils.SetKeyword(m_OnTileUberMaterial, ShaderKeywordStrings.TonemapNeutral, + tonemapping.mode.value == TonemappingMode.Neutral); + CoreUtils.SetKeyword(m_OnTileUberMaterial, ShaderKeywordStrings.TonemapACES, + tonemapping.mode.value == TonemappingMode.ACES); + } } void SetupGrain(Material onTileUberMaterial, UniversalCameraData cameraData, FilmGrain filmgrain, PostProcessData data) From 4e98c0bdc3bb11020f3f7b55b072cbbfea55a3db Mon Sep 17 00:00:00 2001 From: Sebastien Lachambre Date: Mon, 29 Sep 2025 23:55:21 +0000 Subject: [PATCH 42/65] Replace the old input manager by the new Input system --- .../Scripts/InputSystem_Actions.cs | 1904 +++++++++++++++++ .../Scripts/InputSystem_Actions.cs.meta | 2 + .../Scripts/InputSystem_Actions.inputactions | 1123 ++++++++++ .../InputSystem_Actions.inputactions.meta | 14 + .../LensFlareSamplesInputAndControl.cs | 83 +- .../Scripts/SampleAssembly.asmdef | 19 + .../Scripts/SampleAssembly.asmdef.meta | 7 + 7 files changed, 3081 insertions(+), 71 deletions(-) create mode 100644 Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.cs create mode 100644 Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.cs.meta create mode 100644 Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.inputactions create mode 100644 Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.inputactions.meta create mode 100644 Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/SampleAssembly.asmdef create mode 100644 Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/SampleAssembly.asmdef.meta diff --git a/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.cs b/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.cs new file mode 100644 index 00000000000..fe02bde0277 --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.cs @@ -0,0 +1,1904 @@ +//------------------------------------------------------------------------------ +// +// This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator +// version 1.14.2 +// from Assets/Samples/High Definition Render Pipeline/17.3.0/Lens Flare Samples/Scripts/InputSystem_Actions.inputactions +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine.InputSystem; +using UnityEngine.InputSystem.Utilities; + +/// +/// Provides programmatic access to , , and instances defined in asset "Assets/Samples/High Definition Render Pipeline/17.3.0/Lens Flare Samples/Scripts/InputSystem_Actions.inputactions". +/// +/// +/// This class is source generated and any manual edits will be discarded if the associated asset is reimported or modified. +/// +/// +/// +/// using namespace UnityEngine; +/// using UnityEngine.InputSystem; +/// +/// // Example of using an InputActionMap named "Player" from a UnityEngine.MonoBehaviour implementing callback interface. +/// public class Example : MonoBehaviour, MyActions.IPlayerActions +/// { +/// private MyActions_Actions m_Actions; // Source code representation of asset. +/// private MyActions_Actions.PlayerActions m_Player; // Source code representation of action map. +/// +/// void Awake() +/// { +/// m_Actions = new MyActions_Actions(); // Create asset object. +/// m_Player = m_Actions.Player; // Extract action map object. +/// m_Player.AddCallbacks(this); // Register callback interface IPlayerActions. +/// } +/// +/// void OnDestroy() +/// { +/// m_Actions.Dispose(); // Destroy asset object. +/// } +/// +/// void OnEnable() +/// { +/// m_Player.Enable(); // Enable all actions within map. +/// } +/// +/// void OnDisable() +/// { +/// m_Player.Disable(); // Disable all actions within map. +/// } +/// +/// #region Interface implementation of MyActions.IPlayerActions +/// +/// // Invoked when "Move" action is either started, performed or canceled. +/// public void OnMove(InputAction.CallbackContext context) +/// { +/// Debug.Log($"OnMove: {context.ReadValue<Vector2>()}"); +/// } +/// +/// // Invoked when "Attack" action is either started, performed or canceled. +/// public void OnAttack(InputAction.CallbackContext context) +/// { +/// Debug.Log($"OnAttack: {context.ReadValue<float>()}"); +/// } +/// +/// #endregion +/// } +/// +/// +public partial class @InputSystem_Actions: IInputActionCollection2, IDisposable +{ + /// + /// Provides access to the underlying asset instance. + /// + public InputActionAsset asset { get; } + + /// + /// Constructs a new instance. + /// + public @InputSystem_Actions() + { + asset = InputActionAsset.FromJson(@"{ + ""version"": 1, + ""name"": ""InputSystem_Actions"", + ""maps"": [ + { + ""name"": ""Player"", + ""id"": ""df70fa95-8a34-4494-b137-73ab6b9c7d37"", + ""actions"": [ + { + ""name"": ""Move"", + ""type"": ""Value"", + ""id"": ""351f2ccd-1f9f-44bf-9bec-d62ac5c5f408"", + ""expectedControlType"": ""Vector2"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": true + }, + { + ""name"": ""Look"", + ""type"": ""Value"", + ""id"": ""6b444451-8a00-4d00-a97e-f47457f736a8"", + ""expectedControlType"": ""Vector2"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": true + }, + { + ""name"": ""Attack"", + ""type"": ""Button"", + ""id"": ""6c2ab1b8-8984-453a-af3d-a3c78ae1679a"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Interact"", + ""type"": ""PassThrough"", + ""id"": ""852140f2-7766-474d-8707-702459ba45f3"", + ""expectedControlType"": ""Key"", + ""processors"": """", + ""interactions"": ""Hold"", + ""initialStateCheck"": false + }, + { + ""name"": ""Crouch"", + ""type"": ""Button"", + ""id"": ""27c5f898-bc57-4ee1-8800-db469aca5fe3"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Jump"", + ""type"": ""Button"", + ""id"": ""f1ba0d36-48eb-4cd5-b651-1c94a6531f70"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Previous"", + ""type"": ""Button"", + ""id"": ""2776c80d-3c14-4091-8c56-d04ced07a2b0"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Next"", + ""type"": ""Button"", + ""id"": ""b7230bb6-fc9b-4f52-8b25-f5e19cb2c2ba"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Sprint"", + ""type"": ""Button"", + ""id"": ""641cd816-40e6-41b4-8c3d-04687c349290"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + } + ], + ""bindings"": [ + { + ""name"": """", + ""id"": ""978bfe49-cc26-4a3d-ab7b-7d7a29327403"", + ""path"": ""/leftStick"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": ""WASD"", + ""id"": ""00ca640b-d935-4593-8157-c05846ea39b3"", + ""path"": ""Dpad"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Move"", + ""isComposite"": true, + ""isPartOfComposite"": false + }, + { + ""name"": ""up"", + ""id"": ""e2062cb9-1b15-46a2-838c-2f8d72a0bdd9"", + ""path"": ""/w"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""up"", + ""id"": ""8180e8bd-4097-4f4e-ab88-4523101a6ce9"", + ""path"": ""/upArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""320bffee-a40b-4347-ac70-c210eb8bc73a"", + ""path"": ""/s"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""1c5327b5-f71c-4f60-99c7-4e737386f1d1"", + ""path"": ""/downArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""d2581a9b-1d11-4566-b27d-b92aff5fabbc"", + ""path"": ""/a"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""2e46982e-44cc-431b-9f0b-c11910bf467a"", + ""path"": ""/leftArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""fcfe95b8-67b9-4526-84b5-5d0bc98d6400"", + ""path"": ""/d"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""77bff152-3580-4b21-b6de-dcd0c7e41164"", + ""path"": ""/rightArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": """", + ""id"": ""1635d3fe-58b6-4ba9-a4e2-f4b964f6b5c8"", + ""path"": ""/{Primary2DAxis}"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""XR"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""3ea4d645-4504-4529-b061-ab81934c3752"", + ""path"": ""/stick"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Joystick"", + ""action"": ""Move"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""c1f7a91b-d0fd-4a62-997e-7fb9b69bf235"", + ""path"": ""/rightStick"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Look"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""8c8e490b-c610-4785-884f-f04217b23ca4"", + ""path"": ""/delta"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse;Touch"", + ""action"": ""Look"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""3e5f5442-8668-4b27-a940-df99bad7e831"", + ""path"": ""/{Hatswitch}"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Joystick"", + ""action"": ""Look"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""143bb1cd-cc10-4eca-a2f0-a3664166fe91"", + ""path"": ""/buttonWest"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Attack"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""05f6913d-c316-48b2-a6bb-e225f14c7960"", + ""path"": ""/leftButton"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Attack"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""886e731e-7071-4ae4-95c0-e61739dad6fd"", + ""path"": ""/primaryTouch/tap"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Touch"", + ""action"": ""Attack"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""ee3d0cd2-254e-47a7-a8cb-bc94d9658c54"", + ""path"": ""/trigger"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Joystick"", + ""action"": ""Attack"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""8255d333-5683-4943-a58a-ccb207ff1dce"", + ""path"": ""/{PrimaryAction}"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""XR"", + ""action"": ""Attack"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""b3c1c7f0-bd20-4ee7-a0f1-899b24bca6d7"", + ""path"": ""/enter"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Attack"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""cbac6039-9c09-46a1-b5f2-4e5124ccb5ed"", + ""path"": ""/2"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Next"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""e15ca19d-e649-4852-97d5-7fe8ccc44e94"", + ""path"": ""/dpad/right"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Gamepad"", + ""action"": ""Next"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""f2e9ba44-c423-42a7-ad56-f20975884794"", + ""path"": ""/leftShift"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Sprint"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""8cbb2f4b-a784-49cc-8d5e-c010b8c7f4e6"", + ""path"": ""/leftStickPress"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Gamepad"", + ""action"": ""Sprint"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""d8bf24bf-3f2f-4160-a97c-38ec1eb520ba"", + ""path"": ""/trigger"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""XR"", + ""action"": ""Sprint"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""eb40bb66-4559-4dfa-9a2f-820438abb426"", + ""path"": ""/space"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Jump"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""daba33a1-ad0c-4742-a909-43ad1cdfbeb6"", + ""path"": ""/buttonSouth"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Gamepad"", + ""action"": ""Jump"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""603f3daf-40bd-4854-8724-93e8017f59e3"", + ""path"": ""/secondaryButton"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""XR"", + ""action"": ""Jump"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""1534dc16-a6aa-499d-9c3a-22b47347b52a"", + ""path"": ""/1"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Previous"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""25060bbd-a3a6-476e-8fba-45ae484aad05"", + ""path"": ""/dpad/left"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Gamepad"", + ""action"": ""Previous"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""1c04ea5f-b012-41d1-a6f7-02e963b52893"", + ""path"": ""/e"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Interact"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""b3f66d0b-7751-423f-908b-a11c5bd95930"", + ""path"": ""/buttonNorth"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Gamepad"", + ""action"": ""Interact"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""f8725771-b4c8-4321-9f32-9f97d61ad6bc"", + ""path"": ""/numpad1"", + ""interactions"": ""Tap"", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Interact"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""ed20bbd5-e83f-457e-b647-8a594ba9f0f7"", + ""path"": ""/numpad2"", + ""interactions"": ""Tap"", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Interact"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""e31d0749-c86c-4b86-bec3-a1185a8b4010"", + ""path"": ""/numpad3"", + ""interactions"": ""Tap"", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Interact"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""0bedbe9a-4002-4ee7-b867-6169ac47b0ea"", + ""path"": ""/1"", + ""interactions"": ""Tap"", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Interact"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""89b09c27-3c7b-409e-aeb1-10c2a49a8d9b"", + ""path"": ""/2"", + ""interactions"": ""Tap"", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Interact"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""ca6969c0-61a7-470c-b967-acdb738961ed"", + ""path"": ""/3"", + ""interactions"": ""Tap"", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Interact"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""4f4649ac-64a8-4a73-af11-b3faef356a4d"", + ""path"": ""/buttonEast"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Gamepad"", + ""action"": ""Crouch"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""36e52cba-0905-478e-a818-f4bfcb9f3b9a"", + ""path"": ""/c"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Crouch"", + ""isComposite"": false, + ""isPartOfComposite"": false + } + ] + }, + { + ""name"": ""UI"", + ""id"": ""272f6d14-89ba-496f-b7ff-215263d3219f"", + ""actions"": [ + { + ""name"": ""Navigate"", + ""type"": ""PassThrough"", + ""id"": ""c95b2375-e6d9-4b88-9c4c-c5e76515df4b"", + ""expectedControlType"": ""Vector2"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Submit"", + ""type"": ""Button"", + ""id"": ""7607c7b6-cd76-4816-beef-bd0341cfe950"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Cancel"", + ""type"": ""Button"", + ""id"": ""15cef263-9014-4fd5-94d9-4e4a6234a6ef"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""Point"", + ""type"": ""PassThrough"", + ""id"": ""32b35790-4ed0-4e9a-aa41-69ac6d629449"", + ""expectedControlType"": ""Vector2"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": true + }, + { + ""name"": ""Click"", + ""type"": ""PassThrough"", + ""id"": ""3c7022bf-7922-4f7c-a998-c437916075ad"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": ""Press"", + ""initialStateCheck"": true + }, + { + ""name"": ""RightClick"", + ""type"": ""PassThrough"", + ""id"": ""44b200b1-1557-4083-816c-b22cbdf77ddf"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""MiddleClick"", + ""type"": ""PassThrough"", + ""id"": ""dad70c86-b58c-4b17-88ad-f5e53adf419e"", + ""expectedControlType"": ""Button"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""ScrollWheel"", + ""type"": ""PassThrough"", + ""id"": ""0489e84a-4833-4c40-bfae-cea84b696689"", + ""expectedControlType"": ""Vector2"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""TrackedDevicePosition"", + ""type"": ""PassThrough"", + ""id"": ""24908448-c609-4bc3-a128-ea258674378a"", + ""expectedControlType"": ""Vector3"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + }, + { + ""name"": ""TrackedDeviceOrientation"", + ""type"": ""PassThrough"", + ""id"": ""9caa3d8a-6b2f-4e8e-8bad-6ede561bd9be"", + ""expectedControlType"": ""Quaternion"", + ""processors"": """", + ""interactions"": """", + ""initialStateCheck"": false + } + ], + ""bindings"": [ + { + ""name"": ""Gamepad"", + ""id"": ""809f371f-c5e2-4e7a-83a1-d867598f40dd"", + ""path"": ""2DVector"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Navigate"", + ""isComposite"": true, + ""isPartOfComposite"": false + }, + { + ""name"": ""up"", + ""id"": ""14a5d6e8-4aaf-4119-a9ef-34b8c2c548bf"", + ""path"": ""/leftStick/up"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""up"", + ""id"": ""9144cbe6-05e1-4687-a6d7-24f99d23dd81"", + ""path"": ""/rightStick/up"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""2db08d65-c5fb-421b-983f-c71163608d67"", + ""path"": ""/leftStick/down"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""58748904-2ea9-4a80-8579-b500e6a76df8"", + ""path"": ""/rightStick/down"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""8ba04515-75aa-45de-966d-393d9bbd1c14"", + ""path"": ""/leftStick/left"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""712e721c-bdfb-4b23-a86c-a0d9fcfea921"", + ""path"": ""/rightStick/left"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""fcd248ae-a788-4676-a12e-f4d81205600b"", + ""path"": ""/leftStick/right"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""1f04d9bc-c50b-41a1-bfcc-afb75475ec20"", + ""path"": ""/rightStick/right"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": """", + ""id"": ""fb8277d4-c5cd-4663-9dc7-ee3f0b506d90"", + ""path"": ""/dpad"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Gamepad"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": ""Joystick"", + ""id"": ""e25d9774-381c-4a61-b47c-7b6b299ad9f9"", + ""path"": ""2DVector"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Navigate"", + ""isComposite"": true, + ""isPartOfComposite"": false + }, + { + ""name"": ""up"", + ""id"": ""3db53b26-6601-41be-9887-63ac74e79d19"", + ""path"": ""/stick/up"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Joystick"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""0cb3e13e-3d90-4178-8ae6-d9c5501d653f"", + ""path"": ""/stick/down"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Joystick"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""0392d399-f6dd-4c82-8062-c1e9c0d34835"", + ""path"": ""/stick/left"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Joystick"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""942a66d9-d42f-43d6-8d70-ecb4ba5363bc"", + ""path"": ""/stick/right"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Joystick"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""Keyboard"", + ""id"": ""ff527021-f211-4c02-933e-5976594c46ed"", + ""path"": ""2DVector"", + ""interactions"": """", + ""processors"": """", + ""groups"": """", + ""action"": ""Navigate"", + ""isComposite"": true, + ""isPartOfComposite"": false + }, + { + ""name"": ""up"", + ""id"": ""563fbfdd-0f09-408d-aa75-8642c4f08ef0"", + ""path"": ""/w"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""up"", + ""id"": ""eb480147-c587-4a33-85ed-eb0ab9942c43"", + ""path"": ""/upArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""2bf42165-60bc-42ca-8072-8c13ab40239b"", + ""path"": ""/s"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""down"", + ""id"": ""85d264ad-e0a0-4565-b7ff-1a37edde51ac"", + ""path"": ""/downArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""74214943-c580-44e4-98eb-ad7eebe17902"", + ""path"": ""/a"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""left"", + ""id"": ""cea9b045-a000-445b-95b8-0c171af70a3b"", + ""path"": ""/leftArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""8607c725-d935-4808-84b1-8354e29bab63"", + ""path"": ""/d"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": ""right"", + ""id"": ""4cda81dc-9edd-4e03-9d7c-a71a14345d0b"", + ""path"": ""/rightArrow"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Navigate"", + ""isComposite"": false, + ""isPartOfComposite"": true + }, + { + ""name"": """", + ""id"": ""9e92bb26-7e3b-4ec4-b06b-3c8f8e498ddc"", + ""path"": ""*/{Submit}"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse;Gamepad;Touch;Joystick;XR"", + ""action"": ""Submit"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""82627dcc-3b13-4ba9-841d-e4b746d6553e"", + ""path"": ""*/{Cancel}"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse;Gamepad;Touch;Joystick;XR"", + ""action"": ""Cancel"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""c52c8e0b-8179-41d3-b8a1-d149033bbe86"", + ""path"": ""/position"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Point"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""e1394cbc-336e-44ce-9ea8-6007ed6193f7"", + ""path"": ""/position"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""Point"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""5693e57a-238a-46ed-b5ae-e64e6e574302"", + ""path"": ""/touch*/position"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Touch"", + ""action"": ""Point"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""4faf7dc9-b979-4210-aa8c-e808e1ef89f5"", + ""path"": ""/leftButton"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Click"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""8d66d5ba-88d7-48e6-b1cd-198bbfef7ace"", + ""path"": ""/tip"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""Click"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""47c2a644-3ebc-4dae-a106-589b7ca75b59"", + ""path"": ""/touch*/press"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Touch"", + ""action"": ""Click"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""bb9e6b34-44bf-4381-ac63-5aa15d19f677"", + ""path"": ""/trigger"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""XR"", + ""action"": ""Click"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""38c99815-14ea-4617-8627-164d27641299"", + ""path"": ""/scroll"", + ""interactions"": """", + ""processors"": """", + ""groups"": "";Keyboard&Mouse"", + ""action"": ""ScrollWheel"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""4c191405-5738-4d4b-a523-c6a301dbf754"", + ""path"": ""/rightButton"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""RightClick"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""24066f69-da47-44f3-a07e-0015fb02eb2e"", + ""path"": ""/middleButton"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""Keyboard&Mouse"", + ""action"": ""MiddleClick"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""7236c0d9-6ca3-47cf-a6ee-a97f5b59ea77"", + ""path"": ""/devicePosition"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""XR"", + ""action"": ""TrackedDevicePosition"", + ""isComposite"": false, + ""isPartOfComposite"": false + }, + { + ""name"": """", + ""id"": ""23e01e3a-f935-4948-8d8b-9bcac77714fb"", + ""path"": ""/deviceRotation"", + ""interactions"": """", + ""processors"": """", + ""groups"": ""XR"", + ""action"": ""TrackedDeviceOrientation"", + ""isComposite"": false, + ""isPartOfComposite"": false + } + ] + } + ], + ""controlSchemes"": [ + { + ""name"": ""Keyboard&Mouse"", + ""bindingGroup"": ""Keyboard&Mouse"", + ""devices"": [ + { + ""devicePath"": """", + ""isOptional"": false, + ""isOR"": false + }, + { + ""devicePath"": """", + ""isOptional"": false, + ""isOR"": false + } + ] + }, + { + ""name"": ""Gamepad"", + ""bindingGroup"": ""Gamepad"", + ""devices"": [ + { + ""devicePath"": """", + ""isOptional"": false, + ""isOR"": false + } + ] + }, + { + ""name"": ""Touch"", + ""bindingGroup"": ""Touch"", + ""devices"": [ + { + ""devicePath"": """", + ""isOptional"": false, + ""isOR"": false + } + ] + }, + { + ""name"": ""Joystick"", + ""bindingGroup"": ""Joystick"", + ""devices"": [ + { + ""devicePath"": """", + ""isOptional"": false, + ""isOR"": false + } + ] + }, + { + ""name"": ""XR"", + ""bindingGroup"": ""XR"", + ""devices"": [ + { + ""devicePath"": """", + ""isOptional"": false, + ""isOR"": false + } + ] + } + ] +}"); + // Player + m_Player = asset.FindActionMap("Player", throwIfNotFound: true); + m_Player_Move = m_Player.FindAction("Move", throwIfNotFound: true); + m_Player_Look = m_Player.FindAction("Look", throwIfNotFound: true); + m_Player_Attack = m_Player.FindAction("Attack", throwIfNotFound: true); + m_Player_Interact = m_Player.FindAction("Interact", throwIfNotFound: true); + m_Player_Crouch = m_Player.FindAction("Crouch", throwIfNotFound: true); + m_Player_Jump = m_Player.FindAction("Jump", throwIfNotFound: true); + m_Player_Previous = m_Player.FindAction("Previous", throwIfNotFound: true); + m_Player_Next = m_Player.FindAction("Next", throwIfNotFound: true); + m_Player_Sprint = m_Player.FindAction("Sprint", throwIfNotFound: true); + // UI + m_UI = asset.FindActionMap("UI", throwIfNotFound: true); + m_UI_Navigate = m_UI.FindAction("Navigate", throwIfNotFound: true); + m_UI_Submit = m_UI.FindAction("Submit", throwIfNotFound: true); + m_UI_Cancel = m_UI.FindAction("Cancel", throwIfNotFound: true); + m_UI_Point = m_UI.FindAction("Point", throwIfNotFound: true); + m_UI_Click = m_UI.FindAction("Click", throwIfNotFound: true); + m_UI_RightClick = m_UI.FindAction("RightClick", throwIfNotFound: true); + m_UI_MiddleClick = m_UI.FindAction("MiddleClick", throwIfNotFound: true); + m_UI_ScrollWheel = m_UI.FindAction("ScrollWheel", throwIfNotFound: true); + m_UI_TrackedDevicePosition = m_UI.FindAction("TrackedDevicePosition", throwIfNotFound: true); + m_UI_TrackedDeviceOrientation = m_UI.FindAction("TrackedDeviceOrientation", throwIfNotFound: true); + } + + ~@InputSystem_Actions() + { + UnityEngine.Debug.Assert(!m_Player.enabled, "This will cause a leak and performance issues, InputSystem_Actions.Player.Disable() has not been called."); + UnityEngine.Debug.Assert(!m_UI.enabled, "This will cause a leak and performance issues, InputSystem_Actions.UI.Disable() has not been called."); + } + + /// + /// Destroys this asset and all associated instances. + /// + public void Dispose() + { + UnityEngine.Object.Destroy(asset); + } + + /// + public InputBinding? bindingMask + { + get => asset.bindingMask; + set => asset.bindingMask = value; + } + + /// + public ReadOnlyArray? devices + { + get => asset.devices; + set => asset.devices = value; + } + + /// + public ReadOnlyArray controlSchemes => asset.controlSchemes; + + /// + public bool Contains(InputAction action) + { + return asset.Contains(action); + } + + /// + public IEnumerator GetEnumerator() + { + return asset.GetEnumerator(); + } + + /// + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + /// + public void Enable() + { + asset.Enable(); + } + + /// + public void Disable() + { + asset.Disable(); + } + + /// + public IEnumerable bindings => asset.bindings; + + /// + public InputAction FindAction(string actionNameOrId, bool throwIfNotFound = false) + { + return asset.FindAction(actionNameOrId, throwIfNotFound); + } + + /// + public int FindBinding(InputBinding bindingMask, out InputAction action) + { + return asset.FindBinding(bindingMask, out action); + } + + // Player + private readonly InputActionMap m_Player; + private List m_PlayerActionsCallbackInterfaces = new List(); + private readonly InputAction m_Player_Move; + private readonly InputAction m_Player_Look; + private readonly InputAction m_Player_Attack; + private readonly InputAction m_Player_Interact; + private readonly InputAction m_Player_Crouch; + private readonly InputAction m_Player_Jump; + private readonly InputAction m_Player_Previous; + private readonly InputAction m_Player_Next; + private readonly InputAction m_Player_Sprint; + /// + /// Provides access to input actions defined in input action map "Player". + /// + public struct PlayerActions + { + private @InputSystem_Actions m_Wrapper; + + /// + /// Construct a new instance of the input action map wrapper class. + /// + public PlayerActions(@InputSystem_Actions wrapper) { m_Wrapper = wrapper; } + /// + /// Provides access to the underlying input action "Player/Move". + /// + public InputAction @Move => m_Wrapper.m_Player_Move; + /// + /// Provides access to the underlying input action "Player/Look". + /// + public InputAction @Look => m_Wrapper.m_Player_Look; + /// + /// Provides access to the underlying input action "Player/Attack". + /// + public InputAction @Attack => m_Wrapper.m_Player_Attack; + /// + /// Provides access to the underlying input action "Player/Interact". + /// + public InputAction @Interact => m_Wrapper.m_Player_Interact; + /// + /// Provides access to the underlying input action "Player/Crouch". + /// + public InputAction @Crouch => m_Wrapper.m_Player_Crouch; + /// + /// Provides access to the underlying input action "Player/Jump". + /// + public InputAction @Jump => m_Wrapper.m_Player_Jump; + /// + /// Provides access to the underlying input action "Player/Previous". + /// + public InputAction @Previous => m_Wrapper.m_Player_Previous; + /// + /// Provides access to the underlying input action "Player/Next". + /// + public InputAction @Next => m_Wrapper.m_Player_Next; + /// + /// Provides access to the underlying input action "Player/Sprint". + /// + public InputAction @Sprint => m_Wrapper.m_Player_Sprint; + /// + /// Provides access to the underlying input action map instance. + /// + public InputActionMap Get() { return m_Wrapper.m_Player; } + /// + public void Enable() { Get().Enable(); } + /// + public void Disable() { Get().Disable(); } + /// + public bool enabled => Get().enabled; + /// + /// Implicitly converts an to an instance. + /// + public static implicit operator InputActionMap(PlayerActions set) { return set.Get(); } + /// + /// Adds , and callbacks provided via on all input actions contained in this map. + /// + /// Callback instance. + /// + /// If is null or have already been added this method does nothing. + /// + /// + public void AddCallbacks(IPlayerActions instance) + { + if (instance == null || m_Wrapper.m_PlayerActionsCallbackInterfaces.Contains(instance)) return; + m_Wrapper.m_PlayerActionsCallbackInterfaces.Add(instance); + @Move.started += instance.OnMove; + @Move.performed += instance.OnMove; + @Move.canceled += instance.OnMove; + @Look.started += instance.OnLook; + @Look.performed += instance.OnLook; + @Look.canceled += instance.OnLook; + @Attack.started += instance.OnAttack; + @Attack.performed += instance.OnAttack; + @Attack.canceled += instance.OnAttack; + @Interact.started += instance.OnInteract; + @Interact.performed += instance.OnInteract; + @Interact.canceled += instance.OnInteract; + @Crouch.started += instance.OnCrouch; + @Crouch.performed += instance.OnCrouch; + @Crouch.canceled += instance.OnCrouch; + @Jump.started += instance.OnJump; + @Jump.performed += instance.OnJump; + @Jump.canceled += instance.OnJump; + @Previous.started += instance.OnPrevious; + @Previous.performed += instance.OnPrevious; + @Previous.canceled += instance.OnPrevious; + @Next.started += instance.OnNext; + @Next.performed += instance.OnNext; + @Next.canceled += instance.OnNext; + @Sprint.started += instance.OnSprint; + @Sprint.performed += instance.OnSprint; + @Sprint.canceled += instance.OnSprint; + } + + /// + /// Removes , and callbacks provided via on all input actions contained in this map. + /// + /// + /// Calling this method when have not previously been registered has no side-effects. + /// + /// + private void UnregisterCallbacks(IPlayerActions instance) + { + @Move.started -= instance.OnMove; + @Move.performed -= instance.OnMove; + @Move.canceled -= instance.OnMove; + @Look.started -= instance.OnLook; + @Look.performed -= instance.OnLook; + @Look.canceled -= instance.OnLook; + @Attack.started -= instance.OnAttack; + @Attack.performed -= instance.OnAttack; + @Attack.canceled -= instance.OnAttack; + @Interact.started -= instance.OnInteract; + @Interact.performed -= instance.OnInteract; + @Interact.canceled -= instance.OnInteract; + @Crouch.started -= instance.OnCrouch; + @Crouch.performed -= instance.OnCrouch; + @Crouch.canceled -= instance.OnCrouch; + @Jump.started -= instance.OnJump; + @Jump.performed -= instance.OnJump; + @Jump.canceled -= instance.OnJump; + @Previous.started -= instance.OnPrevious; + @Previous.performed -= instance.OnPrevious; + @Previous.canceled -= instance.OnPrevious; + @Next.started -= instance.OnNext; + @Next.performed -= instance.OnNext; + @Next.canceled -= instance.OnNext; + @Sprint.started -= instance.OnSprint; + @Sprint.performed -= instance.OnSprint; + @Sprint.canceled -= instance.OnSprint; + } + + /// + /// Unregisters and unregisters all input action callbacks via . + /// + /// + public void RemoveCallbacks(IPlayerActions instance) + { + if (m_Wrapper.m_PlayerActionsCallbackInterfaces.Remove(instance)) + UnregisterCallbacks(instance); + } + + /// + /// Replaces all existing callback instances and previously registered input action callbacks associated with them with callbacks provided via . + /// + /// + /// If is null, calling this method will only unregister all existing callbacks but not register any new callbacks. + /// + /// + /// + /// + public void SetCallbacks(IPlayerActions instance) + { + foreach (var item in m_Wrapper.m_PlayerActionsCallbackInterfaces) + UnregisterCallbacks(item); + m_Wrapper.m_PlayerActionsCallbackInterfaces.Clear(); + AddCallbacks(instance); + } + } + /// + /// Provides a new instance referencing this action map. + /// + public PlayerActions @Player => new PlayerActions(this); + + // UI + private readonly InputActionMap m_UI; + private List m_UIActionsCallbackInterfaces = new List(); + private readonly InputAction m_UI_Navigate; + private readonly InputAction m_UI_Submit; + private readonly InputAction m_UI_Cancel; + private readonly InputAction m_UI_Point; + private readonly InputAction m_UI_Click; + private readonly InputAction m_UI_RightClick; + private readonly InputAction m_UI_MiddleClick; + private readonly InputAction m_UI_ScrollWheel; + private readonly InputAction m_UI_TrackedDevicePosition; + private readonly InputAction m_UI_TrackedDeviceOrientation; + /// + /// Provides access to input actions defined in input action map "UI". + /// + public struct UIActions + { + private @InputSystem_Actions m_Wrapper; + + /// + /// Construct a new instance of the input action map wrapper class. + /// + public UIActions(@InputSystem_Actions wrapper) { m_Wrapper = wrapper; } + /// + /// Provides access to the underlying input action "UI/Navigate". + /// + public InputAction @Navigate => m_Wrapper.m_UI_Navigate; + /// + /// Provides access to the underlying input action "UI/Submit". + /// + public InputAction @Submit => m_Wrapper.m_UI_Submit; + /// + /// Provides access to the underlying input action "UI/Cancel". + /// + public InputAction @Cancel => m_Wrapper.m_UI_Cancel; + /// + /// Provides access to the underlying input action "UI/Point". + /// + public InputAction @Point => m_Wrapper.m_UI_Point; + /// + /// Provides access to the underlying input action "UI/Click". + /// + public InputAction @Click => m_Wrapper.m_UI_Click; + /// + /// Provides access to the underlying input action "UI/RightClick". + /// + public InputAction @RightClick => m_Wrapper.m_UI_RightClick; + /// + /// Provides access to the underlying input action "UI/MiddleClick". + /// + public InputAction @MiddleClick => m_Wrapper.m_UI_MiddleClick; + /// + /// Provides access to the underlying input action "UI/ScrollWheel". + /// + public InputAction @ScrollWheel => m_Wrapper.m_UI_ScrollWheel; + /// + /// Provides access to the underlying input action "UI/TrackedDevicePosition". + /// + public InputAction @TrackedDevicePosition => m_Wrapper.m_UI_TrackedDevicePosition; + /// + /// Provides access to the underlying input action "UI/TrackedDeviceOrientation". + /// + public InputAction @TrackedDeviceOrientation => m_Wrapper.m_UI_TrackedDeviceOrientation; + /// + /// Provides access to the underlying input action map instance. + /// + public InputActionMap Get() { return m_Wrapper.m_UI; } + /// + public void Enable() { Get().Enable(); } + /// + public void Disable() { Get().Disable(); } + /// + public bool enabled => Get().enabled; + /// + /// Implicitly converts an to an instance. + /// + public static implicit operator InputActionMap(UIActions set) { return set.Get(); } + /// + /// Adds , and callbacks provided via on all input actions contained in this map. + /// + /// Callback instance. + /// + /// If is null or have already been added this method does nothing. + /// + /// + public void AddCallbacks(IUIActions instance) + { + if (instance == null || m_Wrapper.m_UIActionsCallbackInterfaces.Contains(instance)) return; + m_Wrapper.m_UIActionsCallbackInterfaces.Add(instance); + @Navigate.started += instance.OnNavigate; + @Navigate.performed += instance.OnNavigate; + @Navigate.canceled += instance.OnNavigate; + @Submit.started += instance.OnSubmit; + @Submit.performed += instance.OnSubmit; + @Submit.canceled += instance.OnSubmit; + @Cancel.started += instance.OnCancel; + @Cancel.performed += instance.OnCancel; + @Cancel.canceled += instance.OnCancel; + @Point.started += instance.OnPoint; + @Point.performed += instance.OnPoint; + @Point.canceled += instance.OnPoint; + @Click.started += instance.OnClick; + @Click.performed += instance.OnClick; + @Click.canceled += instance.OnClick; + @RightClick.started += instance.OnRightClick; + @RightClick.performed += instance.OnRightClick; + @RightClick.canceled += instance.OnRightClick; + @MiddleClick.started += instance.OnMiddleClick; + @MiddleClick.performed += instance.OnMiddleClick; + @MiddleClick.canceled += instance.OnMiddleClick; + @ScrollWheel.started += instance.OnScrollWheel; + @ScrollWheel.performed += instance.OnScrollWheel; + @ScrollWheel.canceled += instance.OnScrollWheel; + @TrackedDevicePosition.started += instance.OnTrackedDevicePosition; + @TrackedDevicePosition.performed += instance.OnTrackedDevicePosition; + @TrackedDevicePosition.canceled += instance.OnTrackedDevicePosition; + @TrackedDeviceOrientation.started += instance.OnTrackedDeviceOrientation; + @TrackedDeviceOrientation.performed += instance.OnTrackedDeviceOrientation; + @TrackedDeviceOrientation.canceled += instance.OnTrackedDeviceOrientation; + } + + /// + /// Removes , and callbacks provided via on all input actions contained in this map. + /// + /// + /// Calling this method when have not previously been registered has no side-effects. + /// + /// + private void UnregisterCallbacks(IUIActions instance) + { + @Navigate.started -= instance.OnNavigate; + @Navigate.performed -= instance.OnNavigate; + @Navigate.canceled -= instance.OnNavigate; + @Submit.started -= instance.OnSubmit; + @Submit.performed -= instance.OnSubmit; + @Submit.canceled -= instance.OnSubmit; + @Cancel.started -= instance.OnCancel; + @Cancel.performed -= instance.OnCancel; + @Cancel.canceled -= instance.OnCancel; + @Point.started -= instance.OnPoint; + @Point.performed -= instance.OnPoint; + @Point.canceled -= instance.OnPoint; + @Click.started -= instance.OnClick; + @Click.performed -= instance.OnClick; + @Click.canceled -= instance.OnClick; + @RightClick.started -= instance.OnRightClick; + @RightClick.performed -= instance.OnRightClick; + @RightClick.canceled -= instance.OnRightClick; + @MiddleClick.started -= instance.OnMiddleClick; + @MiddleClick.performed -= instance.OnMiddleClick; + @MiddleClick.canceled -= instance.OnMiddleClick; + @ScrollWheel.started -= instance.OnScrollWheel; + @ScrollWheel.performed -= instance.OnScrollWheel; + @ScrollWheel.canceled -= instance.OnScrollWheel; + @TrackedDevicePosition.started -= instance.OnTrackedDevicePosition; + @TrackedDevicePosition.performed -= instance.OnTrackedDevicePosition; + @TrackedDevicePosition.canceled -= instance.OnTrackedDevicePosition; + @TrackedDeviceOrientation.started -= instance.OnTrackedDeviceOrientation; + @TrackedDeviceOrientation.performed -= instance.OnTrackedDeviceOrientation; + @TrackedDeviceOrientation.canceled -= instance.OnTrackedDeviceOrientation; + } + + /// + /// Unregisters and unregisters all input action callbacks via . + /// + /// + public void RemoveCallbacks(IUIActions instance) + { + if (m_Wrapper.m_UIActionsCallbackInterfaces.Remove(instance)) + UnregisterCallbacks(instance); + } + + /// + /// Replaces all existing callback instances and previously registered input action callbacks associated with them with callbacks provided via . + /// + /// + /// If is null, calling this method will only unregister all existing callbacks but not register any new callbacks. + /// + /// + /// + /// + public void SetCallbacks(IUIActions instance) + { + foreach (var item in m_Wrapper.m_UIActionsCallbackInterfaces) + UnregisterCallbacks(item); + m_Wrapper.m_UIActionsCallbackInterfaces.Clear(); + AddCallbacks(instance); + } + } + /// + /// Provides a new instance referencing this action map. + /// + public UIActions @UI => new UIActions(this); + private int m_KeyboardMouseSchemeIndex = -1; + /// + /// Provides access to the input control scheme. + /// + /// + public InputControlScheme KeyboardMouseScheme + { + get + { + if (m_KeyboardMouseSchemeIndex == -1) m_KeyboardMouseSchemeIndex = asset.FindControlSchemeIndex("Keyboard&Mouse"); + return asset.controlSchemes[m_KeyboardMouseSchemeIndex]; + } + } + private int m_GamepadSchemeIndex = -1; + /// + /// Provides access to the input control scheme. + /// + /// + public InputControlScheme GamepadScheme + { + get + { + if (m_GamepadSchemeIndex == -1) m_GamepadSchemeIndex = asset.FindControlSchemeIndex("Gamepad"); + return asset.controlSchemes[m_GamepadSchemeIndex]; + } + } + private int m_TouchSchemeIndex = -1; + /// + /// Provides access to the input control scheme. + /// + /// + public InputControlScheme TouchScheme + { + get + { + if (m_TouchSchemeIndex == -1) m_TouchSchemeIndex = asset.FindControlSchemeIndex("Touch"); + return asset.controlSchemes[m_TouchSchemeIndex]; + } + } + private int m_JoystickSchemeIndex = -1; + /// + /// Provides access to the input control scheme. + /// + /// + public InputControlScheme JoystickScheme + { + get + { + if (m_JoystickSchemeIndex == -1) m_JoystickSchemeIndex = asset.FindControlSchemeIndex("Joystick"); + return asset.controlSchemes[m_JoystickSchemeIndex]; + } + } + private int m_XRSchemeIndex = -1; + /// + /// Provides access to the input control scheme. + /// + /// + public InputControlScheme XRScheme + { + get + { + if (m_XRSchemeIndex == -1) m_XRSchemeIndex = asset.FindControlSchemeIndex("XR"); + return asset.controlSchemes[m_XRSchemeIndex]; + } + } + /// + /// Interface to implement callback methods for all input action callbacks associated with input actions defined by "Player" which allows adding and removing callbacks. + /// + /// + /// + public interface IPlayerActions + { + /// + /// Method invoked when associated input action "Move" is either , or . + /// + /// + /// + /// + void OnMove(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Look" is either , or . + /// + /// + /// + /// + void OnLook(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Attack" is either , or . + /// + /// + /// + /// + void OnAttack(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Interact" is either , or . + /// + /// + /// + /// + void OnInteract(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Crouch" is either , or . + /// + /// + /// + /// + void OnCrouch(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Jump" is either , or . + /// + /// + /// + /// + void OnJump(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Previous" is either , or . + /// + /// + /// + /// + void OnPrevious(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Next" is either , or . + /// + /// + /// + /// + void OnNext(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Sprint" is either , or . + /// + /// + /// + /// + void OnSprint(InputAction.CallbackContext context); + } + /// + /// Interface to implement callback methods for all input action callbacks associated with input actions defined by "UI" which allows adding and removing callbacks. + /// + /// + /// + public interface IUIActions + { + /// + /// Method invoked when associated input action "Navigate" is either , or . + /// + /// + /// + /// + void OnNavigate(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Submit" is either , or . + /// + /// + /// + /// + void OnSubmit(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Cancel" is either , or . + /// + /// + /// + /// + void OnCancel(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Point" is either , or . + /// + /// + /// + /// + void OnPoint(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "Click" is either , or . + /// + /// + /// + /// + void OnClick(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "RightClick" is either , or . + /// + /// + /// + /// + void OnRightClick(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "MiddleClick" is either , or . + /// + /// + /// + /// + void OnMiddleClick(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "ScrollWheel" is either , or . + /// + /// + /// + /// + void OnScrollWheel(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "TrackedDevicePosition" is either , or . + /// + /// + /// + /// + void OnTrackedDevicePosition(InputAction.CallbackContext context); + /// + /// Method invoked when associated input action "TrackedDeviceOrientation" is either , or . + /// + /// + /// + /// + void OnTrackedDeviceOrientation(InputAction.CallbackContext context); + } +} diff --git a/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.cs.meta b/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.cs.meta new file mode 100644 index 00000000000..732ca9a333d --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 8623e771df90bb148818ce6afdc4d88b \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.inputactions b/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.inputactions new file mode 100644 index 00000000000..66b681064a7 --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.inputactions @@ -0,0 +1,1123 @@ +{ + "name": "InputSystem_Actions", + "maps": [ + { + "name": "Player", + "id": "df70fa95-8a34-4494-b137-73ab6b9c7d37", + "actions": [ + { + "name": "Move", + "type": "Value", + "id": "351f2ccd-1f9f-44bf-9bec-d62ac5c5f408", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "Look", + "type": "Value", + "id": "6b444451-8a00-4d00-a97e-f47457f736a8", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "Attack", + "type": "Button", + "id": "6c2ab1b8-8984-453a-af3d-a3c78ae1679a", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Interact", + "type": "PassThrough", + "id": "852140f2-7766-474d-8707-702459ba45f3", + "expectedControlType": "Key", + "processors": "", + "interactions": "Hold", + "initialStateCheck": false + }, + { + "name": "Crouch", + "type": "Button", + "id": "27c5f898-bc57-4ee1-8800-db469aca5fe3", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Jump", + "type": "Button", + "id": "f1ba0d36-48eb-4cd5-b651-1c94a6531f70", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Previous", + "type": "Button", + "id": "2776c80d-3c14-4091-8c56-d04ced07a2b0", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Next", + "type": "Button", + "id": "b7230bb6-fc9b-4f52-8b25-f5e19cb2c2ba", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Sprint", + "type": "Button", + "id": "641cd816-40e6-41b4-8c3d-04687c349290", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + } + ], + "bindings": [ + { + "name": "", + "id": "978bfe49-cc26-4a3d-ab7b-7d7a29327403", + "path": "/leftStick", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Move", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "WASD", + "id": "00ca640b-d935-4593-8157-c05846ea39b3", + "path": "Dpad", + "interactions": "", + "processors": "", + "groups": "", + "action": "Move", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "e2062cb9-1b15-46a2-838c-2f8d72a0bdd9", + "path": "/w", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "up", + "id": "8180e8bd-4097-4f4e-ab88-4523101a6ce9", + "path": "/upArrow", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "320bffee-a40b-4347-ac70-c210eb8bc73a", + "path": "/s", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "1c5327b5-f71c-4f60-99c7-4e737386f1d1", + "path": "/downArrow", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "d2581a9b-1d11-4566-b27d-b92aff5fabbc", + "path": "/a", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "2e46982e-44cc-431b-9f0b-c11910bf467a", + "path": "/leftArrow", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "fcfe95b8-67b9-4526-84b5-5d0bc98d6400", + "path": "/d", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "77bff152-3580-4b21-b6de-dcd0c7e41164", + "path": "/rightArrow", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Move", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "", + "id": "1635d3fe-58b6-4ba9-a4e2-f4b964f6b5c8", + "path": "/{Primary2DAxis}", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "Move", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "3ea4d645-4504-4529-b061-ab81934c3752", + "path": "/stick", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Move", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "c1f7a91b-d0fd-4a62-997e-7fb9b69bf235", + "path": "/rightStick", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Look", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "8c8e490b-c610-4785-884f-f04217b23ca4", + "path": "/delta", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse;Touch", + "action": "Look", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "3e5f5442-8668-4b27-a940-df99bad7e831", + "path": "/{Hatswitch}", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Look", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "143bb1cd-cc10-4eca-a2f0-a3664166fe91", + "path": "/buttonWest", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "05f6913d-c316-48b2-a6bb-e225f14c7960", + "path": "/leftButton", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "886e731e-7071-4ae4-95c0-e61739dad6fd", + "path": "/primaryTouch/tap", + "interactions": "", + "processors": "", + "groups": ";Touch", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "ee3d0cd2-254e-47a7-a8cb-bc94d9658c54", + "path": "/trigger", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "8255d333-5683-4943-a58a-ccb207ff1dce", + "path": "/{PrimaryAction}", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "b3c1c7f0-bd20-4ee7-a0f1-899b24bca6d7", + "path": "/enter", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Attack", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "cbac6039-9c09-46a1-b5f2-4e5124ccb5ed", + "path": "/2", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Next", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "e15ca19d-e649-4852-97d5-7fe8ccc44e94", + "path": "/dpad/right", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Next", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "f2e9ba44-c423-42a7-ad56-f20975884794", + "path": "/leftShift", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Sprint", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "8cbb2f4b-a784-49cc-8d5e-c010b8c7f4e6", + "path": "/leftStickPress", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Sprint", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "d8bf24bf-3f2f-4160-a97c-38ec1eb520ba", + "path": "/trigger", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "Sprint", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "eb40bb66-4559-4dfa-9a2f-820438abb426", + "path": "/space", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Jump", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "daba33a1-ad0c-4742-a909-43ad1cdfbeb6", + "path": "/buttonSouth", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Jump", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "603f3daf-40bd-4854-8724-93e8017f59e3", + "path": "/secondaryButton", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "Jump", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "1534dc16-a6aa-499d-9c3a-22b47347b52a", + "path": "/1", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Previous", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "25060bbd-a3a6-476e-8fba-45ae484aad05", + "path": "/dpad/left", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Previous", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "1c04ea5f-b012-41d1-a6f7-02e963b52893", + "path": "/e", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Interact", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "b3f66d0b-7751-423f-908b-a11c5bd95930", + "path": "/buttonNorth", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Interact", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "f8725771-b4c8-4321-9f32-9f97d61ad6bc", + "path": "/numpad1", + "interactions": "Tap", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Interact", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "ed20bbd5-e83f-457e-b647-8a594ba9f0f7", + "path": "/numpad2", + "interactions": "Tap", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Interact", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "e31d0749-c86c-4b86-bec3-a1185a8b4010", + "path": "/numpad3", + "interactions": "Tap", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Interact", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "0bedbe9a-4002-4ee7-b867-6169ac47b0ea", + "path": "/1", + "interactions": "Tap", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Interact", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "89b09c27-3c7b-409e-aeb1-10c2a49a8d9b", + "path": "/2", + "interactions": "Tap", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Interact", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "ca6969c0-61a7-470c-b967-acdb738961ed", + "path": "/3", + "interactions": "Tap", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Interact", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "4f4649ac-64a8-4a73-af11-b3faef356a4d", + "path": "/buttonEast", + "interactions": "", + "processors": "", + "groups": "Gamepad", + "action": "Crouch", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "36e52cba-0905-478e-a818-f4bfcb9f3b9a", + "path": "/c", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Crouch", + "isComposite": false, + "isPartOfComposite": false + } + ] + }, + { + "name": "UI", + "id": "272f6d14-89ba-496f-b7ff-215263d3219f", + "actions": [ + { + "name": "Navigate", + "type": "PassThrough", + "id": "c95b2375-e6d9-4b88-9c4c-c5e76515df4b", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Submit", + "type": "Button", + "id": "7607c7b6-cd76-4816-beef-bd0341cfe950", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Cancel", + "type": "Button", + "id": "15cef263-9014-4fd5-94d9-4e4a6234a6ef", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "Point", + "type": "PassThrough", + "id": "32b35790-4ed0-4e9a-aa41-69ac6d629449", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": true + }, + { + "name": "Click", + "type": "PassThrough", + "id": "3c7022bf-7922-4f7c-a998-c437916075ad", + "expectedControlType": "Button", + "processors": "", + "interactions": "Press", + "initialStateCheck": true + }, + { + "name": "RightClick", + "type": "PassThrough", + "id": "44b200b1-1557-4083-816c-b22cbdf77ddf", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "MiddleClick", + "type": "PassThrough", + "id": "dad70c86-b58c-4b17-88ad-f5e53adf419e", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "ScrollWheel", + "type": "PassThrough", + "id": "0489e84a-4833-4c40-bfae-cea84b696689", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "TrackedDevicePosition", + "type": "PassThrough", + "id": "24908448-c609-4bc3-a128-ea258674378a", + "expectedControlType": "Vector3", + "processors": "", + "interactions": "", + "initialStateCheck": false + }, + { + "name": "TrackedDeviceOrientation", + "type": "PassThrough", + "id": "9caa3d8a-6b2f-4e8e-8bad-6ede561bd9be", + "expectedControlType": "Quaternion", + "processors": "", + "interactions": "", + "initialStateCheck": false + } + ], + "bindings": [ + { + "name": "Gamepad", + "id": "809f371f-c5e2-4e7a-83a1-d867598f40dd", + "path": "2DVector", + "interactions": "", + "processors": "", + "groups": "", + "action": "Navigate", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "14a5d6e8-4aaf-4119-a9ef-34b8c2c548bf", + "path": "/leftStick/up", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "up", + "id": "9144cbe6-05e1-4687-a6d7-24f99d23dd81", + "path": "/rightStick/up", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "2db08d65-c5fb-421b-983f-c71163608d67", + "path": "/leftStick/down", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "58748904-2ea9-4a80-8579-b500e6a76df8", + "path": "/rightStick/down", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "8ba04515-75aa-45de-966d-393d9bbd1c14", + "path": "/leftStick/left", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "712e721c-bdfb-4b23-a86c-a0d9fcfea921", + "path": "/rightStick/left", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "fcd248ae-a788-4676-a12e-f4d81205600b", + "path": "/leftStick/right", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "1f04d9bc-c50b-41a1-bfcc-afb75475ec20", + "path": "/rightStick/right", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "", + "id": "fb8277d4-c5cd-4663-9dc7-ee3f0b506d90", + "path": "/dpad", + "interactions": "", + "processors": "", + "groups": ";Gamepad", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "Joystick", + "id": "e25d9774-381c-4a61-b47c-7b6b299ad9f9", + "path": "2DVector", + "interactions": "", + "processors": "", + "groups": "", + "action": "Navigate", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "3db53b26-6601-41be-9887-63ac74e79d19", + "path": "/stick/up", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "0cb3e13e-3d90-4178-8ae6-d9c5501d653f", + "path": "/stick/down", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "0392d399-f6dd-4c82-8062-c1e9c0d34835", + "path": "/stick/left", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "942a66d9-d42f-43d6-8d70-ecb4ba5363bc", + "path": "/stick/right", + "interactions": "", + "processors": "", + "groups": "Joystick", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "Keyboard", + "id": "ff527021-f211-4c02-933e-5976594c46ed", + "path": "2DVector", + "interactions": "", + "processors": "", + "groups": "", + "action": "Navigate", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "563fbfdd-0f09-408d-aa75-8642c4f08ef0", + "path": "/w", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "up", + "id": "eb480147-c587-4a33-85ed-eb0ab9942c43", + "path": "/upArrow", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "2bf42165-60bc-42ca-8072-8c13ab40239b", + "path": "/s", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "85d264ad-e0a0-4565-b7ff-1a37edde51ac", + "path": "/downArrow", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "74214943-c580-44e4-98eb-ad7eebe17902", + "path": "/a", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "cea9b045-a000-445b-95b8-0c171af70a3b", + "path": "/leftArrow", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "8607c725-d935-4808-84b1-8354e29bab63", + "path": "/d", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "4cda81dc-9edd-4e03-9d7c-a71a14345d0b", + "path": "/rightArrow", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Navigate", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "", + "id": "9e92bb26-7e3b-4ec4-b06b-3c8f8e498ddc", + "path": "*/{Submit}", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR", + "action": "Submit", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "82627dcc-3b13-4ba9-841d-e4b746d6553e", + "path": "*/{Cancel}", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse;Gamepad;Touch;Joystick;XR", + "action": "Cancel", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "c52c8e0b-8179-41d3-b8a1-d149033bbe86", + "path": "/position", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Point", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "e1394cbc-336e-44ce-9ea8-6007ed6193f7", + "path": "/position", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "Point", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "5693e57a-238a-46ed-b5ae-e64e6e574302", + "path": "/touch*/position", + "interactions": "", + "processors": "", + "groups": "Touch", + "action": "Point", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "4faf7dc9-b979-4210-aa8c-e808e1ef89f5", + "path": "/leftButton", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Click", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "8d66d5ba-88d7-48e6-b1cd-198bbfef7ace", + "path": "/tip", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "Click", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "47c2a644-3ebc-4dae-a106-589b7ca75b59", + "path": "/touch*/press", + "interactions": "", + "processors": "", + "groups": "Touch", + "action": "Click", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "bb9e6b34-44bf-4381-ac63-5aa15d19f677", + "path": "/trigger", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "Click", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "38c99815-14ea-4617-8627-164d27641299", + "path": "/scroll", + "interactions": "", + "processors": "", + "groups": ";Keyboard&Mouse", + "action": "ScrollWheel", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "4c191405-5738-4d4b-a523-c6a301dbf754", + "path": "/rightButton", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "RightClick", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "24066f69-da47-44f3-a07e-0015fb02eb2e", + "path": "/middleButton", + "interactions": "", + "processors": "", + "groups": "Keyboard&Mouse", + "action": "MiddleClick", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "7236c0d9-6ca3-47cf-a6ee-a97f5b59ea77", + "path": "/devicePosition", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "TrackedDevicePosition", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "23e01e3a-f935-4948-8d8b-9bcac77714fb", + "path": "/deviceRotation", + "interactions": "", + "processors": "", + "groups": "XR", + "action": "TrackedDeviceOrientation", + "isComposite": false, + "isPartOfComposite": false + } + ] + } + ], + "controlSchemes": [ + { + "name": "Keyboard&Mouse", + "bindingGroup": "Keyboard&Mouse", + "devices": [ + { + "devicePath": "", + "isOptional": false, + "isOR": false + }, + { + "devicePath": "", + "isOptional": false, + "isOR": false + } + ] + }, + { + "name": "Gamepad", + "bindingGroup": "Gamepad", + "devices": [ + { + "devicePath": "", + "isOptional": false, + "isOR": false + } + ] + }, + { + "name": "Touch", + "bindingGroup": "Touch", + "devices": [ + { + "devicePath": "", + "isOptional": false, + "isOR": false + } + ] + }, + { + "name": "Joystick", + "bindingGroup": "Joystick", + "devices": [ + { + "devicePath": "", + "isOptional": false, + "isOR": false + } + ] + }, + { + "name": "XR", + "bindingGroup": "XR", + "devices": [ + { + "devicePath": "", + "isOptional": false, + "isOR": false + } + ] + } + ] +} \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.inputactions.meta b/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.inputactions.meta new file mode 100644 index 00000000000..91037e2b383 --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/InputSystem_Actions.inputactions.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: 68c940064c6b3154588d17df46eb691d +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} + generateWrapperCode: 1 + wrapperCodePath: + wrapperClassName: + wrapperCodeNamespace: diff --git a/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/LensFlareSamplesInputAndControl.cs b/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/LensFlareSamplesInputAndControl.cs index bd1c7f583be..77b534c7f7d 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/LensFlareSamplesInputAndControl.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/LensFlareSamplesInputAndControl.cs @@ -1,16 +1,8 @@ -#if (ENABLE_INPUT_SYSTEM && INPUT_SYSTEM_INSTALLED) -#define USE_INPUT_SYSTEM -#endif - using UnityEngine; +using UnityEngine.InputSystem; using UnityEngine.Rendering; using UnityEngine.UI; -#if USE_INPUT_SYSTEM -using UnityEngine.InputSystem; -#endif - -// Script that allows easy navigation of provided lens flare assets and ability to add custom lens flare assets for development [ExecuteInEditMode] public class LensFlareSamplesInputAndControl : MonoBehaviour { @@ -37,8 +29,6 @@ public class LensFlareSamplesInputAndControl : MonoBehaviour private LensFlareComponentSRP lensFlareComponent; private GameObject lensFlareLight; - - private int flareNumber; private Vector3 vectorNoise = Vector3.zero; void Start() @@ -48,7 +38,6 @@ void Start() void Update() { - if (Application.isFocused) { lensFlareLight = this.transform.GetChild(0).gameObject; @@ -62,33 +51,18 @@ void Update() private void SetSkyFromInput() { -#if USE_INPUT_SYSTEM - if (Keyboard.current.digit1Key.wasPressedThisFrame) + if (Keyboard.current.digit1Key.wasPressedThisFrame || Keyboard.current.numpad1Key.wasPressedThisFrame) { SetSky(0); } - else if (Keyboard.current.digit2Key.wasPressedThisFrame) + else if (Keyboard.current.digit2Key.wasPressedThisFrame || Keyboard.current.numpad2Key.wasPressedThisFrame) { SetSky(1); } - else if (Keyboard.current.digit3Key.wasPressedThisFrame) + else if (Keyboard.current.digit3Key.wasPressedThisFrame || Keyboard.current.numpad3Key.wasPressedThisFrame) { SetSky(2); } -#else - if (Input.GetKeyDown("1")) - { - SetSky(0); - } - else if (Input.GetKeyDown("2")) - { - SetSky(1); - } - else if (Input.GetKeyDown("3")) - { - SetSky(2); - } -#endif } void SetSky(int inputNumber) @@ -106,26 +80,18 @@ void SetSky(int inputNumber) private void MoveLightWithMouse() { -#if USE_INPUT_SYSTEM - if (Mouse.current.leftButton.IsPressed()) + if (Mouse.current.leftButton.isPressed) { var mousePosition = Mouse.current.position.ReadValue(); - lensFlareLight.transform.position = cameraComponent.ScreenToWorldPoint(new Vector3(mousePosition.x, mousePosition.y, lightDistance)); - } -#else - if (Input.GetMouseButton(0)) - { - lensFlareLight.transform.position = cameraComponent.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, lightDistance)); + lensFlareLight.transform.position = cameraComponent.ScreenToWorldPoint( + new Vector3(mousePosition.x, mousePosition.y, lightDistance)); } -#endif } - private void CameraMovementWithMouse() { LockCursorWhileMouseButtonDown(); -#if USE_INPUT_SYSTEM if (Mouse.current.rightButton.isPressed) { var mouseMovement = Mouse.current.delta.ReadValue() * cameraRotationSpeed / 30f; @@ -139,26 +105,10 @@ private void CameraMovementWithMouse() cameraGameObject.transform.localEulerAngles += new Vector3(mouseMovement.y * -1f, mouseMovement.x, 0f); } } -#else - if (Input.GetMouseButton(1)) - { - var mouseMovement = new Vector2(Input.GetAxis("Mouse Y"), Input.GetAxis("Mouse X")) * Time.deltaTime * cameraRotationSpeed * 200.0f; - - if (useMouseDragInsteadOfFPSControl) - { - cameraGameObject.transform.localEulerAngles += new Vector3(mouseMovement.x, mouseMovement.y * -1f, 0f); - } - else - { - cameraGameObject.transform.localEulerAngles += new Vector3(mouseMovement.x * -1f, mouseMovement.y, 0f); - } - } -#endif } private void LockCursorWhileMouseButtonDown() { -#if USE_INPUT_SYSTEM if (Mouse.current.rightButton.wasPressedThisFrame) { Cursor.lockState = CursorLockMode.Locked; @@ -169,18 +119,6 @@ private void LockCursorWhileMouseButtonDown() Cursor.visible = true; Cursor.lockState = CursorLockMode.None; } -#else - if (Input.GetMouseButtonDown(1)) - { - Cursor.lockState = CursorLockMode.Locked; - } - - if (Input.GetMouseButtonUp(1)) - { - Cursor.visible = true; - Cursor.lockState = CursorLockMode.None; - } -#endif } private void CameraShake() @@ -189,9 +127,12 @@ private void CameraShake() { cameraGameObject.transform.localEulerAngles -= vectorNoise; - vectorNoise = new Vector3(Mathf.PerlinNoise(0, Time.time * cameraShakeSpeed), Mathf.PerlinNoise(1, Time.time * cameraShakeSpeed), Mathf.PerlinNoise(2, Time.time * cameraShakeSpeed)) * cameraShakeAmplitude; + vectorNoise = new Vector3( + Mathf.PerlinNoise(0, Time.time * cameraShakeSpeed), + Mathf.PerlinNoise(1, Time.time * cameraShakeSpeed), + Mathf.PerlinNoise(2, Time.time * cameraShakeSpeed)) * cameraShakeAmplitude; cameraGameObject.transform.localEulerAngles += vectorNoise; } } -} +} \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/SampleAssembly.asmdef b/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/SampleAssembly.asmdef new file mode 100644 index 00000000000..1a08a555bb9 --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/SampleAssembly.asmdef @@ -0,0 +1,19 @@ +{ + "name": "SampleAssembly", + "rootNamespace": "", + "references": [ + "Unity.InputSystem", + "Unity.RenderPipelines.HighDefinition.Runtime", + "Unity.RenderPipelines.HighDefinition.Editor", + "Unity.RenderPipelines.Core.Runtime" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": ["ENABLE_INPUT_SYSTEM" ], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/SampleAssembly.asmdef.meta b/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/SampleAssembly.asmdef.meta new file mode 100644 index 00000000000..b39a2b11477 --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Samples~/LensFlareSamples/Scripts/SampleAssembly.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0383721d598eea64f80dd1f0cfae1776 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: From 1b5d02187e802228fa1175bc046f6c042ac2ddd7 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Mon, 29 Sep 2025 23:55:23 +0000 Subject: [PATCH 43/65] [Port] [6000.3] Shader Graph : Fixed UUM-120015 --- .../Editor/Data/Graphs/Vector1ShaderProperty.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Packages/com.unity.shadergraph/Editor/Data/Graphs/Vector1ShaderProperty.cs b/Packages/com.unity.shadergraph/Editor/Data/Graphs/Vector1ShaderProperty.cs index 4e3ad2b4a98..191abd25318 100644 --- a/Packages/com.unity.shadergraph/Editor/Data/Graphs/Vector1ShaderProperty.cs +++ b/Packages/com.unity.shadergraph/Editor/Data/Graphs/Vector1ShaderProperty.cs @@ -130,6 +130,7 @@ internal bool LiteralFloatMode set => m_LiteralFloatMode = value; } + [SerializeField] Vector2 m_RangeValues = new Vector2(0, 1); public Vector2 rangeValues From 6eeec8ce35324a80ed02c32059e844793dc2cefe Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Mon, 29 Sep 2025 23:55:23 +0000 Subject: [PATCH 44/65] [Port] [6000.3] HDRP - Color checker - Fix color fields row wrap mode. --- .../{Resources.meta => ColorChecker.meta} | 2 +- .../ColorCheckerToolEditor.cs | 25 +++++++----------- .../ColorCheckerToolEditor.cs.meta | 0 .../Editor/Tools/ColorChecker/UITK.meta | 8 ++++++ .../UITK/ColorCheckerStylesheet.uss | 9 +++++++ .../UITK/ColorCheckerStylesheet.uss.meta | 12 +++++++++ .../UITK}/ColorCheckerUI.uxml | 0 .../UITK}/ColorCheckerUI.uxml.meta | 0 .../Runtime/Tools/ColorChecker.meta | 8 ++++++ .../ColorChecker}/ColorCheckerMaterial.mat | 0 .../ColorCheckerMaterial.mat.meta | 0 .../ColorChecker/ColorCheckerResources.cs | 26 +++++++++++++++++++ .../ColorCheckerResources.cs.meta | 2 ++ .../ColorCheckerShader.shadergraph | 0 .../ColorCheckerShader.shadergraph.meta | 0 .../{ => ColorChecker}/ColorCheckerTool.cs | 10 ++++--- .../ColorCheckerTool.cs.meta | 0 .../ColorChecker}/ProceduralColorchecker.hlsl | 0 .../ProceduralColorchecker.hlsl.meta | 0 19 files changed, 82 insertions(+), 20 deletions(-) rename Packages/com.unity.render-pipelines.high-definition/Editor/Tools/{Resources.meta => ColorChecker.meta} (77%) rename Packages/com.unity.render-pipelines.high-definition/Editor/Tools/{ => ColorChecker}/ColorCheckerToolEditor.cs (95%) rename Packages/com.unity.render-pipelines.high-definition/Editor/Tools/{ => ColorChecker}/ColorCheckerToolEditor.cs.meta (100%) create mode 100644 Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK.meta create mode 100644 Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK/ColorCheckerStylesheet.uss create mode 100644 Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK/ColorCheckerStylesheet.uss.meta rename Packages/com.unity.render-pipelines.high-definition/Editor/Tools/{Resources => ColorChecker/UITK}/ColorCheckerUI.uxml (100%) rename Packages/com.unity.render-pipelines.high-definition/Editor/Tools/{Resources => ColorChecker/UITK}/ColorCheckerUI.uxml.meta (100%) create mode 100644 Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker.meta rename Packages/com.unity.render-pipelines.high-definition/{Editor/Tools/Resources => Runtime/Tools/ColorChecker}/ColorCheckerMaterial.mat (100%) rename Packages/com.unity.render-pipelines.high-definition/{Editor/Tools/Resources => Runtime/Tools/ColorChecker}/ColorCheckerMaterial.mat.meta (100%) create mode 100644 Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerResources.cs create mode 100644 Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerResources.cs.meta rename Packages/com.unity.render-pipelines.high-definition/{Editor/Tools/Resources => Runtime/Tools/ColorChecker}/ColorCheckerShader.shadergraph (100%) rename Packages/com.unity.render-pipelines.high-definition/{Editor/Tools/Resources => Runtime/Tools/ColorChecker}/ColorCheckerShader.shadergraph.meta (100%) rename Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/{ => ColorChecker}/ColorCheckerTool.cs (97%) rename Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/{ => ColorChecker}/ColorCheckerTool.cs.meta (100%) rename Packages/com.unity.render-pipelines.high-definition/{Editor/Tools/Resources => Runtime/Tools/ColorChecker}/ProceduralColorchecker.hlsl (100%) rename Packages/com.unity.render-pipelines.high-definition/{Editor/Tools/Resources => Runtime/Tools/ColorChecker}/ProceduralColorchecker.hlsl.meta (100%) diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources.meta b/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker.meta similarity index 77% rename from Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources.meta rename to Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker.meta index 7a50b1b69f3..a3117d2cef7 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources.meta +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3fe79bf53b4949d479f5429d3b1a3276 +guid: 2d5e9da28e2eb9a47a4a25a7c81aac0b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorCheckerToolEditor.cs b/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/ColorCheckerToolEditor.cs similarity index 95% rename from Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorCheckerToolEditor.cs rename to Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/ColorCheckerToolEditor.cs index befc21fada5..cf5a80e582e 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorCheckerToolEditor.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/ColorCheckerToolEditor.cs @@ -1,10 +1,8 @@ -using System.Collections.Generic; -using System.Collections; using UnityEditor; +using UnityEditor.Rendering; +using UnityEditor.UIElements; using UnityEngine; using UnityEngine.UIElements; -using UnityEditor.UIElements; -using UnityEditor.Rendering; #if UNITY_EDITOR [InitializeOnLoad] @@ -15,8 +13,9 @@ ///
public class ColorCheckerToolEditor : Editor { - private static readonly string UXMLPath = "ColorCheckerUI"; - + private static readonly string k_UXMLPath = "Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK/ColorCheckerUI.uxml"; + private static readonly string k_StyleSheetPath = "Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK/ColorCheckerStylesheet.uss"; + private void OnEnable() { var self = (ColorCheckerTool)target; @@ -26,8 +25,10 @@ public override VisualElement CreateInspectorGUI() { //uxml setup var root = new VisualElement(); - var visualTree = Resources.Load(UXMLPath); + var visualTree = AssetDatabase.LoadAssetAtPath(k_UXMLPath); VisualElement inspectorUI = visualTree.CloneTree(); + var styleSheet = AssetDatabase.LoadAssetAtPath(k_StyleSheetPath); + inspectorUI.styleSheets.Add(styleSheet); root.Add(inspectorUI); var self = (ColorCheckerTool)target; @@ -132,16 +133,8 @@ void CreateColorFields(ColorCheckerTool target, VisualElement root, Color32[] co VisualElement newRow = new() { name = "colorfieldsRow" + i, - style = - { - flexDirection = UnityEngine.UIElements.FlexDirection.Row, - alignItems = UnityEngine.UIElements.Align.FlexStart, - justifyContent = UnityEngine.UIElements.Justify.SpaceAround, - alignSelf = UnityEngine.UIElements.Align.Stretch, - maxHeight = 22, - flexWrap = Wrap.Wrap - } }; + newRow.AddToClassList("color-fields-row"); colorfieldsRoot.Add(newRow); } diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorCheckerToolEditor.cs.meta b/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/ColorCheckerToolEditor.cs.meta similarity index 100% rename from Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorCheckerToolEditor.cs.meta rename to Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/ColorCheckerToolEditor.cs.meta diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK.meta b/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK.meta new file mode 100644 index 00000000000..03de0e6ab2b --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 532ca824081aa33418131639ddac03ff +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK/ColorCheckerStylesheet.uss b/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK/ColorCheckerStylesheet.uss new file mode 100644 index 00000000000..b5c22d8ddb8 --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK/ColorCheckerStylesheet.uss @@ -0,0 +1,9 @@ +.color-fields-row +{ + flex-direction: row; + align-items: flex-start; + justify-content: space-around; + align-self: stretch; + max-height: 22px; + flex-wrap: nowrap; +} diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK/ColorCheckerStylesheet.uss.meta b/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK/ColorCheckerStylesheet.uss.meta new file mode 100644 index 00000000000..1f2da7512ef --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK/ColorCheckerStylesheet.uss.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9ba90f425a12b794c8c83815d7a4165b +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0} + disableValidation: 0 + unsupportedSelectorAction: 0 diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ColorCheckerUI.uxml b/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK/ColorCheckerUI.uxml similarity index 100% rename from Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ColorCheckerUI.uxml rename to Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK/ColorCheckerUI.uxml diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ColorCheckerUI.uxml.meta b/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK/ColorCheckerUI.uxml.meta similarity index 100% rename from Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ColorCheckerUI.uxml.meta rename to Packages/com.unity.render-pipelines.high-definition/Editor/Tools/ColorChecker/UITK/ColorCheckerUI.uxml.meta diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker.meta b/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker.meta new file mode 100644 index 00000000000..fb1a9e390a8 --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b372885328558cf449647cb26d3bb5c5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ColorCheckerMaterial.mat b/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerMaterial.mat similarity index 100% rename from Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ColorCheckerMaterial.mat rename to Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerMaterial.mat diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ColorCheckerMaterial.mat.meta b/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerMaterial.mat.meta similarity index 100% rename from Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ColorCheckerMaterial.mat.meta rename to Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerMaterial.mat.meta diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerResources.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerResources.cs new file mode 100644 index 00000000000..fa95cea8a44 --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerResources.cs @@ -0,0 +1,26 @@ +using System; + +namespace UnityEngine.Rendering.HighDefinition +{ + [HideInInspector] + [Serializable] + [SupportedOnRenderPipeline(typeof(HDRenderPipelineAsset))] + [Categorization.CategoryInfo(Name = "R: Tools", Order = 900)] + [Categorization.ElementInfo(Name = "Color Checker", Order = 0)] + class ColorCheckerResources : IRenderPipelineResources + { + public int version => -1; + + [SerializeField, ResourcePath("Runtime/Tools/ColorChecker/ColorCheckerMaterial.mat")] + private Material m_ColorCheckerMaterial; + + public Material colorCheckerMaterial + { + get => m_ColorCheckerMaterial; + set => this.SetValueAndNotify(ref m_ColorCheckerMaterial, value); + } + } +} + + + diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerResources.cs.meta b/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerResources.cs.meta new file mode 100644 index 00000000000..51825f5b819 --- /dev/null +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerResources.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 451d644d3e80fda4cbede06970b69490 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ColorCheckerShader.shadergraph b/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerShader.shadergraph similarity index 100% rename from Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ColorCheckerShader.shadergraph rename to Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerShader.shadergraph diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ColorCheckerShader.shadergraph.meta b/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerShader.shadergraph.meta similarity index 100% rename from Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ColorCheckerShader.shadergraph.meta rename to Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerShader.shadergraph.meta diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorCheckerTool.cs b/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerTool.cs similarity index 97% rename from Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorCheckerTool.cs rename to Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerTool.cs index 58c3c25b5ac..762039b699c 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorCheckerTool.cs +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerTool.cs @@ -4,6 +4,8 @@ using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.HighDefinition; +using UnityEditor.Rendering.HighDefinition; +using System; [ExecuteInEditMode] [SelectionBaseAttribute] @@ -241,15 +243,17 @@ void Awake() if (ColorCheckerObject == null) { ColorCheckerObject = new GameObject("Colorchecker Geometry"); - ColorCheckerObject.transform.position = transform.position; - ColorCheckerObject.transform.rotation= transform.rotation; + ColorCheckerObject.transform.SetPositionAndRotation(transform.position, transform.rotation); ColorCheckerObject.transform.localScale = transform.localScale; ColorCheckerObject.tag = "EditorOnly"; ColorCheckerObject.transform.parent = transform; ColorCheckerRenderer = ColorCheckerObject.AddComponent(); ColorCheckerFilter = ColorCheckerObject.AddComponent(); ColorCheckerFilter.hideFlags = HideFlags.NotEditable; - ColorCheckerRenderer.sharedMaterial = Resources.Load("ColorCheckerMaterial"); + if (!GraphicsSettings.TryGetRenderPipelineSettings(out var res)) + throw new Exception("Resources not found. ColorCheckerTool can only be used with the High Definition Render Pipeline."); + + ColorCheckerRenderer.sharedMaterial = res.colorCheckerMaterial; ColorCheckerRenderer.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.Off; } else diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorCheckerTool.cs.meta b/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerTool.cs.meta similarity index 100% rename from Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorCheckerTool.cs.meta rename to Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ColorCheckerTool.cs.meta diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ProceduralColorchecker.hlsl b/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ProceduralColorchecker.hlsl similarity index 100% rename from Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ProceduralColorchecker.hlsl rename to Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ProceduralColorchecker.hlsl diff --git a/Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ProceduralColorchecker.hlsl.meta b/Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ProceduralColorchecker.hlsl.meta similarity index 100% rename from Packages/com.unity.render-pipelines.high-definition/Editor/Tools/Resources/ProceduralColorchecker.hlsl.meta rename to Packages/com.unity.render-pipelines.high-definition/Runtime/Tools/ColorChecker/ProceduralColorchecker.hlsl.meta From 0326a16526a1ebe59b1273a1251e526e938b9d08 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Mon, 29 Sep 2025 23:55:23 +0000 Subject: [PATCH 45/65] [Port] [6000.3] Render Pipeline Converter - Readonly Material Converter fixes and improvements --- .../Editor/Converter/ConversionIndexers.cs | 68 ---- .../Converter/ConversionIndexers.cs.meta | 11 - .../Converter/MaterialReferenceBuilder.cs | 180 ----------- .../MaterialReferenceBuilder.cs.meta | 11 - .../Converter/ReadonlyMaterialConverter.cs | 298 ------------------ .../ReadonlyMaterialConverter.cs.meta | 3 - .../Editor/Converter/SearchServiceUtils.cs | 86 +++++ .../Converter/SearchServiceUtils.cs.meta | 2 + .../Converters/ReadonlyMaterialConverter.meta | 8 + ...erialConverter.MaterialReferenceBuilder.cs | 172 ++++++++++ ...Converter.MaterialReferenceBuilder.cs.meta | 2 + ...erialConverter.MaterialReferenceChanger.cs | 217 +++++++++++++ ...Converter.MaterialReferenceChanger.cs.meta | 2 + .../ReadonlyMaterialConverter.cs | 232 ++++++++++++++ .../ReadonlyMaterialConverter.cs.meta | 2 + .../Converters/ReadonlyMaterialConverter.meta | 8 + .../ReadonlyMaterialConverter/Cube.prefab | 123 ++++++++ .../Cube.prefab.meta | 7 + ...ConverterTests.MaterialReferenceBuilder.cs | 40 +++ ...rterTests.MaterialReferenceBuilder.cs.meta | 2 + ...ConverterTests.MaterialReferenceChanger.cs | 225 +++++++++++++ ...rterTests.MaterialReferenceChanger.cs.meta | 2 + .../ReadonlyMaterialConverterTests.cs | 100 ++++++ .../ReadonlyMaterialConverterTests.cs.meta | 2 + 24 files changed, 1232 insertions(+), 571 deletions(-) delete mode 100644 Packages/com.unity.render-pipelines.universal/Editor/Converter/ConversionIndexers.cs delete mode 100644 Packages/com.unity.render-pipelines.universal/Editor/Converter/ConversionIndexers.cs.meta delete mode 100644 Packages/com.unity.render-pipelines.universal/Editor/Converter/MaterialReferenceBuilder.cs delete mode 100644 Packages/com.unity.render-pipelines.universal/Editor/Converter/MaterialReferenceBuilder.cs.meta delete mode 100644 Packages/com.unity.render-pipelines.universal/Editor/Converter/ReadonlyMaterialConverter.cs delete mode 100644 Packages/com.unity.render-pipelines.universal/Editor/Converter/ReadonlyMaterialConverter.cs.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Editor/Converter/SearchServiceUtils.cs create mode 100644 Packages/com.unity.render-pipelines.universal/Editor/Converter/SearchServiceUtils.cs.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceBuilder.cs create mode 100644 Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceBuilder.cs.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceChanger.cs create mode 100644 Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceChanger.cs.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.cs create mode 100644 Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.cs.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/Cube.prefab create mode 100644 Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/Cube.prefab.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceBuilder.cs create mode 100644 Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceBuilder.cs.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceChanger.cs create mode 100644 Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceChanger.cs.meta create mode 100644 Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.cs create mode 100644 Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.cs.meta diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Converter/ConversionIndexers.cs b/Packages/com.unity.render-pipelines.universal/Editor/Converter/ConversionIndexers.cs deleted file mode 100644 index bc30facc245..00000000000 --- a/Packages/com.unity.render-pipelines.universal/Editor/Converter/ConversionIndexers.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.IO; -using UnityEditor.Search; -using UnityEngine; -using Object = UnityEngine.Object; - -namespace UnityEditor.Rendering.Universal -{ - static class ConversionIndexers - { - private const int k_Version = 9; - - [CustomObjectIndexer(typeof(Component), version = k_Version)] - internal static void ComponentConversionIndexer(CustomObjectIndexerTarget context, ObjectIndexer indexer) - { - ConversionIndexer(context, indexer); - } - - [CustomObjectIndexer(typeof(ScriptableObject), version = k_Version)] - internal static void ScriptableObjectConversionIndexer(CustomObjectIndexerTarget context, ObjectIndexer indexer) - { - ConversionIndexer(context, indexer); - } - - internal static void ConversionIndexer(CustomObjectIndexerTarget context, ObjectIndexer indexer) - { - var path = AssetDatabase.GetAssetPath(context.target); - if (path.StartsWith("Packages")) - return; - - //Custom finding of all default Material properties on every single object type including custom types - if (MaterialReferenceBuilder.MaterialReferenceLookup.TryGetValue(context.targetType, out var methods)) - { - if (!string.IsNullOrEmpty(path) && - !path.EndsWith(".asset", StringComparison.InvariantCultureIgnoreCase) && - !path.EndsWith(".prefab", StringComparison.InvariantCultureIgnoreCase) && - !path.EndsWith(".unity", StringComparison.InvariantCultureIgnoreCase)) - return; - - foreach (var method in methods) - { - if (method == null) continue; - - var result = method.GetMaterialFromMethod(context.target, (methodName, objectName) => - $"The method {methodName} was not found on {objectName}. This property will not be indexed."); - - if (result is Material materialResult) - { - if (materialResult != null && MaterialReferenceBuilder.GetIsReadonlyMaterial(materialResult)) - { - indexer.AddProperty("urp", "convert-readonly", context.documentIndex); - } - } - else if (result is Material[] materialArrayResult) - { - foreach (var material in materialArrayResult) - { - if (material != null && MaterialReferenceBuilder.GetIsReadonlyMaterial(material)) - { - indexer.AddProperty("urp", "convert-readonly", context.documentIndex); - } - } - } - } - } - } - } -} diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Converter/ConversionIndexers.cs.meta b/Packages/com.unity.render-pipelines.universal/Editor/Converter/ConversionIndexers.cs.meta deleted file mode 100644 index c1cdbb66abe..00000000000 --- a/Packages/com.unity.render-pipelines.universal/Editor/Converter/ConversionIndexers.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 192e94d6ebdfb96438e2d027c77f9519 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Converter/MaterialReferenceBuilder.cs b/Packages/com.unity.render-pipelines.universal/Editor/Converter/MaterialReferenceBuilder.cs deleted file mode 100644 index ecd78ef2fd1..00000000000 --- a/Packages/com.unity.render-pipelines.universal/Editor/Converter/MaterialReferenceBuilder.cs +++ /dev/null @@ -1,180 +0,0 @@ -using UnityEngine; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System; -using Object = UnityEngine.Object; - -namespace UnityEditor.Rendering.Universal -{ - internal static class MaterialReferenceBuilder - { - public static readonly Dictionary> MaterialReferenceLookup; - - static MaterialReferenceBuilder() - { - MaterialReferenceLookup = GetMaterialReferenceLookup(); - } - - internal static Dictionary> GetMaterialReferenceLookup() - { - var result = new Dictionary>(); - - var allObjectsWithMaterialProperties = TypeCache.GetTypesDerivedFrom() - .Where(type => type.GetProperties().Any(HasMaterialProperty)); - - foreach (var property in allObjectsWithMaterialProperties) - { - if (!result.ContainsKey(property)) - { - result.Add(property, new List()); - } - - var materialProps = GetMaterialPropertiesWithoutLeaking(property); - foreach (var prop in materialProps) - { - result[property].Add(prop.GetGetMethod()); - } - } - - return result; - } - - private static bool HasMaterialProperty(PropertyInfo prop) - { - return prop.PropertyType == typeof(Material) || prop.PropertyType == typeof(Material[]); - } - - private static List GetMaterials(Object obj) - { - var result = new List(); - - var allMaterialProperties = obj.GetType().GetMaterialPropertiesWithoutLeaking(); - foreach (var property in allMaterialProperties) - { - var value = property.GetGetMethod().GetMaterialFromMethod(obj, (methodName, objectName) => - $"The method {methodName} was not found on {objectName}. This property will not be indexed."); - - if (value is Material materialResult) - { - result.Add(materialResult); - } - else if (value is Material[] materialList) - { - result.AddRange(materialList); - } - } - - return result; - } - - /// - /// Gets all of the types in the Material Reference lookup that are components. Used to determine whether to run the - /// method directly or on the component - /// - /// List of types that are components - public static List GetComponentTypes() - { - return MaterialReferenceLookup.Keys.Where(key => typeof(Component).IsAssignableFrom(key)).ToList(); - } - - /// - /// Gets all material properties from an object or a component of an object - /// - /// The GameObject or Scriptable Object - /// List of Materials - public static List GetMaterialsFromObject(Object obj) - { - var result = new List(); - - if (obj is GameObject go) - { - foreach (var key in GetComponentTypes()) - { - var components = go.GetComponentsInChildren(key); - foreach (var component in components) - { - result.AddRange(GetMaterials(component)); - } - } - } - else - { - result.AddRange(GetMaterials(obj)); - } - - return result.Distinct().ToList(); - } - - /// - /// Text Mesh pro will sometimes be missing the GetFontSharedMaterials method, even though the property is supposed - /// to have that method. This gracefully handles that case. - /// - /// The Method being invoked - /// The Unity Object the method is invoked upon - /// The function that takes the method name and object name and produces an error string - /// The resulting object from invoking the method on the Object - /// Any exception that is not the missing method exception - public static object GetMaterialFromMethod(this MethodInfo method, - Object obj, - Func generateErrorString) - { - object result = null; - try - { - result = method.Invoke(obj, null); - } - catch (Exception e) - { - // swallow the missing method exception, there's nothing we can do about it at this point - // and we've already checked for other possible null exceptions here - if ((e.InnerException is NullReferenceException)) - { - Debug.LogWarning(generateErrorString(method.Name, obj.name)); - } - else - { - throw e; - } - } - - return result; - } - - /// - /// Gets the SharedMaterial(s) properties when there are shared materials so that we don't leak material instances into the scene - /// - /// The property Type that we are getting the SharedMaterial(s) properties from - /// List of shared material properties and other material properties that won't leak material instances - public static IEnumerable GetMaterialPropertiesWithoutLeaking(this Type property) - { - var materialProps = property.GetProperties().Where(HasMaterialProperty).ToList(); - - // if there is a sharedMaterial property or sharedMaterials property, remove the property that will leak materials - var sharedMaterialProps = - materialProps.Where(prop => prop.Name.ToLowerInvariant().Contains("shared")).ToList(); - - var propsToRemove = sharedMaterialProps - .Select(prop => prop.Name.ToLowerInvariant().Replace("shared", string.Empty)) - .ToList(); - materialProps.RemoveAll(prop => propsToRemove.Contains(prop.Name.ToLowerInvariant())); - - // also remove any property which has no setter - materialProps.RemoveAll(prop => prop.SetMethod == null); - - return materialProps; - } - - /// - /// Get whether or not a Material is considered readonly (Built In Resource) - /// - /// The Material to test - /// Boolean of whether or not that Material is considered readonly - public static bool GetIsReadonlyMaterial(Material material) - { - var assetPath = AssetDatabase.GetAssetPath(material); - - return string.IsNullOrEmpty(assetPath) || assetPath.Equals(@"Resources/unity_builtin_extra", StringComparison.OrdinalIgnoreCase); - } - } -} diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Converter/MaterialReferenceBuilder.cs.meta b/Packages/com.unity.render-pipelines.universal/Editor/Converter/MaterialReferenceBuilder.cs.meta deleted file mode 100644 index 6b6d4efc57d..00000000000 --- a/Packages/com.unity.render-pipelines.universal/Editor/Converter/MaterialReferenceBuilder.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 630a22f725821a446b26d9393ed2a8c4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Converter/ReadonlyMaterialConverter.cs b/Packages/com.unity.render-pipelines.universal/Editor/Converter/ReadonlyMaterialConverter.cs deleted file mode 100644 index 954cdf46e19..00000000000 --- a/Packages/com.unity.render-pipelines.universal/Editor/Converter/ReadonlyMaterialConverter.cs +++ /dev/null @@ -1,298 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using UnityEditor.SceneManagement; -using UnityEditor.Search; -using UnityEngine; -using UnityEngine.SceneManagement; -using Object = UnityEngine.Object; - -namespace UnityEditor.Rendering.Universal -{ - enum IdentifierType { kNullIdentifier = 0, kImportedAsset = 1, kSceneObject = 2, kSourceAsset = 3, kBuiltInAsset = 4 }; - - internal static class ReadonlyMaterialMap - { - public static readonly Dictionary Map = new Dictionary - { - {"Default-Diffuse", "Packages/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat"}, - {"Default-Material", "Packages/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat"}, - {"Default-ParticleSystem", "Packages/com.unity.render-pipelines.universal/Runtime/Materials/ParticlesUnlit.mat"}, - {"Default-Particle", "Packages/com.unity.render-pipelines.universal/Runtime/Materials/ParticlesUnlit.mat"}, - {"Default-Terrain-Diffuse", "Packages/com.unity.render-pipelines.universal/Runtime/Materials/TerrainLit.mat"}, - {"Default-Terrain-Specular", "Packages/com.unity.render-pipelines.universal/Runtime/Materials/TerrainLit.mat"}, - {"Default-Terrain-Standard", "Packages/com.unity.render-pipelines.universal/Runtime/Materials/TerrainLit.mat"}, - {"Sprites-Default", "Packages/com.unity.render-pipelines.universal/Runtime/Materials/Sprite-Unlit-Default.mat"}, - {"Sprites-Mask", "Packages/com.unity.render-pipelines.universal/Runtime/Materials/Sprite-Unlit-Default.mat"}, - {"SpatialMappingOcclusion", "Packages/com.unity.render-pipelines.universal/Runtime/Materials/SpatialMappingOcclusion.mat"}, - {"SpatialMappingWireframe", "Packages/com.unity.render-pipelines.universal/Runtime/Materials/SpatialMappingWireframe.mat"}, - - // TODO: These currently render in URP, but they are using BIRP shaders. Create a task to convert these. - // {"Default UI Material", "Packages/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat"}, - // {"ETC1 Supported UI Material", "Packages/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat"}, - // {"Default-Line", "Packages/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat"}, - // {"Default-Skybox", "Packages/com.unity.render-pipelines.universal/Runtime/Materials/Lit.mat"}, - }; - } - internal class ReadonlyMaterialConverter : RenderPipelineConverter - { - public override string name => "Readonly Material Converter"; - public override string info => "Converts references to Built-In readonly materials to URP readonly materials. This will create temporarily a .index file and that can take a long time."; - public override Type container => typeof(BuiltInToURPConverterContainer); - public override bool needsIndexing => true; - - List guids = new List(); - - public override void OnInitialize(InitializeConverterContext ctx, Action callback) - { - Search.SearchService.Request - ( - Search.SearchService.CreateContext("asset", "urp=convert-readonly"), - (searchContext, items) => - { - // we're going to do this step twice in order to get them ordered, but it should be fast - var orderedRequest = items.OrderBy(req => - { - GlobalObjectId.TryParse(req.id, out var gid); - return gid.assetGUID; - }); - - foreach (var r in orderedRequest) - { - if (string.IsNullOrEmpty(r?.id) || - !GlobalObjectId.TryParse(r.id, out var gid)) - { - continue; - } - - var label = r.provider.fetchLabel(r, r.context); - var description = r.provider.fetchDescription(r, r.context); - - var item = new ConverterItemDescriptor() - { - name = description.Split('/').Last().Split('.').First(), - info = $"{label}", - }; - guids.Add(gid.ToString()); - - ctx.AddAssetToConvert(item); - } - - callback.Invoke(); - searchContext?.Dispose(); - } - ); - } - - public override void OnRun(ref RunItemContext ctx) - { - var obj = LoadObject(ref ctx); - var result = true; - var errorString = new StringBuilder(); - - if (obj != null) - { - var materials = MaterialReferenceBuilder.GetMaterialsFromObject(obj); - - foreach (var material in materials) - { - if (material == null) - { - continue; - } - // there might be multiple materials on this object, we only care about the ones we explicitly try to remap that fail - if (!MaterialReferenceBuilder.GetIsReadonlyMaterial(material)) continue; - if (!ReadonlyMaterialMap.Map.ContainsKey(material.name)) continue; - if (!ReassignMaterial(obj, material.name, ReadonlyMaterialMap.Map[material.name])) - { - result = false; - errorString.AppendLine($"Material {material.name} failed to be reassigned"); - } - } - } - else - { - result = false; - errorString.AppendLine($"Object {ctx.item.descriptor.name} could not be loaded"); - } - - if (!result) - { - ctx.didFail = true; - ctx.info = errorString.ToString(); - } - else - { - // make sure the changes get saved - EditorUtility.SetDirty(obj); - var currentScene = SceneManager.GetActiveScene(); - EditorSceneManager.SaveScene(currentScene); - } - } - - public override void OnClicked(int index) - { - if (GlobalObjectId.TryParse(guids[index], out var gid)) - { - var containerPath = AssetDatabase.GUIDToAssetPath(gid.assetGUID); - EditorGUIUtility.PingObject(AssetDatabase.LoadAssetAtPath(containerPath)); - } - } - - private static bool ReassignMaterial(Object obj, string oldMaterialName, string newMaterialPath) - { - var result = true; - - // do the reflection to make sure we get the right material reference - if (obj is GameObject go) - { - foreach (var key in MaterialReferenceBuilder.GetComponentTypes()) - { - var components = go.GetComponentsInChildren(key); - foreach (var component in components) - { - result &= ReassignMaterialOnComponentOrObject(component, - oldMaterialName, - newMaterialPath); - } - } - } - else - { - result &= ReassignMaterialOnComponentOrObject(obj, - oldMaterialName, - newMaterialPath); - } - - return result; - } - - private static bool ReassignMaterialOnComponentOrObject(Object obj, - string oldMaterialName, - string newMaterialPath) - { - var result = true; - - var materialProperties = obj.GetType().GetMaterialPropertiesWithoutLeaking(); - - foreach (var property in materialProperties) - { - var materialValue = property.GetGetMethod().GetMaterialFromMethod(obj, (methodName, objectName) => - $"The method {methodName} was not found on {objectName}. Ignoring this property."); - - if (materialValue is Material material) - { - if (material.name.Equals(oldMaterialName, StringComparison.OrdinalIgnoreCase)) - { - var newMaterial = AssetDatabase.LoadAssetAtPath(newMaterialPath); - - if (newMaterial != null) - { - var setMethod = property.GetSetMethod(); - if (setMethod != null) - { - setMethod.Invoke(obj, new object[] { newMaterial }); - } - else - { - // failed to set the material from the SetMethod - result = false; - } - } - else - { - // a material we expected to exist does not - result = false; - } - } - } - else if (materialValue is Material[] materialList) - { - for (int i = 0; i < materialList.Length; i++) - { - var mat = materialList[i]; - if (mat == null) - { - continue; - } - if (mat.name.Equals(oldMaterialName, StringComparison.OrdinalIgnoreCase)) - { - var newMaterial = AssetDatabase.LoadAssetAtPath(newMaterialPath); - - if (newMaterial != null) - { - materialList[i] = newMaterial; - } - else - { - // a material we expected to exist does not - result = false; - } - } - } - - var setMethod = property.GetSetMethod(); - if (setMethod != null) - { - setMethod.Invoke(obj, new object[] { materialList }); - } - else - { - // failed to set the material from the SetMethod - result = false; - } - } - } - - return result; - } - - private Object LoadObject(ref RunItemContext ctx) - { - var item = ctx.item; - var guid = guids[item.index]; - - if (GlobalObjectId.TryParse(guid, out var gid)) - { - var obj = GlobalObjectId.GlobalObjectIdentifierToObjectSlow(gid); - if (!obj) - { - // Open container scene - if (gid.identifierType == (int)IdentifierType.kSceneObject) - { - var containerPath = AssetDatabase.GUIDToAssetPath(gid.assetGUID); - - var mainInstanceID = AssetDatabase.LoadAssetAtPath(containerPath); - AssetDatabase.OpenAsset(mainInstanceID); - - // if we have a prefab open, then we already have the object we need to update - var prefabStage = PrefabStageUtility.GetCurrentPrefabStage(); - if (prefabStage != null) - { - obj = mainInstanceID; - } - - // Reload object if it is still null - if (obj == null) - { - obj = GlobalObjectId.GlobalObjectIdentifierToObjectSlow(gid); - if (!obj) - { - ctx.didFail = true; - ctx.info = $"Object {gid.assetGUID} failed to load..."; - } - } - } - } - - return obj; - } - - ctx.didFail = true; - ctx.info = $"Failed to parse Global ID {item.descriptor.info}..."; - - return null; - } - } -} diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Converter/ReadonlyMaterialConverter.cs.meta b/Packages/com.unity.render-pipelines.universal/Editor/Converter/ReadonlyMaterialConverter.cs.meta deleted file mode 100644 index 71c62ac4c41..00000000000 --- a/Packages/com.unity.render-pipelines.universal/Editor/Converter/ReadonlyMaterialConverter.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 4c1a380894944abb81ca30ff22942075 -timeCreated: 1617302308 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Converter/SearchServiceUtils.cs b/Packages/com.unity.render-pipelines.universal/Editor/Converter/SearchServiceUtils.cs new file mode 100644 index 00000000000..7a3e0811494 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Editor/Converter/SearchServiceUtils.cs @@ -0,0 +1,86 @@ +using System.Collections.Generic; +using System; +using UnityEditor.Search; + +namespace UnityEditor.Rendering +{ + static class SearchServiceUtils + { + [Flags] + public enum IndexingOptions + { + None = 0, + DeepSearch = 1 << 0, + PackageIndexing = 1 << 1 + } + + public static void RunQueuedSearch( + IndexingOptions neededOptions, + List<(string query, string description)> contextSearchQueriesAndIds, + Action onAssetGUIDFound, + Action onSearchsFinished) + { + bool needsDeepSearch = (neededOptions & IndexingOptions.DeepSearch) != 0; + bool needsPackageIndexing = (neededOptions & IndexingOptions.PackageIndexing) != 0; + + bool isDeepSearchEnabled = Search.SearchService.IsDeepIndexingEnabled(); + bool isPackageIndexingEnabled = Search.SearchService.IsPackageIndexingEnabled(); + + int index = 0; + void ProcessNextSearch() + { + if (index >= contextSearchQueriesAndIds.Count) + { + if (isDeepSearchEnabled != Search.SearchService.IsDeepIndexingEnabled() || + isPackageIndexingEnabled != Search.SearchService.IsPackageIndexingEnabled()) + { + // Rollback the index settings, and call the callback to notify that the initialization is done + Search.SearchService.ChangeIndexingSettings( + deepIndexing: isDeepSearchEnabled, + packageIndexing: isPackageIndexingEnabled, + () => onSearchsFinished?.Invoke()); + } + else + { + // No need to rollback the index info, the initialization is done now + onSearchsFinished?.Invoke(); + } + return; + } + var id = contextSearchQueriesAndIds[index].description; + var query = contextSearchQueriesAndIds[index].query; + var context = Search.SearchService.CreateContext(query); + + Search.SearchService.Request(context, (searchContext, searchItems) => + { + foreach (var item in searchItems) + { + onAssetGUIDFound.Invoke(item, id); + } + + searchContext?.Dispose(); + index++; + ProcessNextSearch(); + }); + } + + void OnSearchIndexReady() + { + ProcessNextSearch(); + } + + if (isDeepSearchEnabled != needsDeepSearch || isPackageIndexingEnabled != needsPackageIndexing) + { + Search.SearchService.ChangeIndexingSettings( + deepIndexing: needsDeepSearch, + packageIndexing: needsPackageIndexing, + OnSearchIndexReady + ); + } + else + { + OnSearchIndexReady(); + } + } + } +} diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Converter/SearchServiceUtils.cs.meta b/Packages/com.unity.render-pipelines.universal/Editor/Converter/SearchServiceUtils.cs.meta new file mode 100644 index 00000000000..c77c567349f --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Editor/Converter/SearchServiceUtils.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b7a71094073be404094ae62b142c24b4 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter.meta b/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter.meta new file mode 100644 index 00000000000..9b03df62702 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d0cbb8c1758af77469e1b602c122282c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceBuilder.cs b/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceBuilder.cs new file mode 100644 index 00000000000..a256d3371ed --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceBuilder.cs @@ -0,0 +1,172 @@ +using System.Collections.Generic; +using System.Reflection; +using System; +using UnityEngine; + +namespace UnityEditor.Rendering.Universal +{ + internal class MaterialReferenceBuilder : IDisposable + { + [System.Diagnostics.DebuggerDisplay("{type.Name}")] + public class MaterialReferenceInfo + { + public Type type; + public List<(MemberInfo member, bool isArray)> materialAccessors; + } + + List m_MaterialReferenceCache; + + public MaterialReferenceBuilder() + { + BuildMaterialReferenceCache(); + } + + public void Dispose() + { + m_MaterialReferenceCache.Clear(); + m_MaterialReferenceCache = null; + } + + public static bool TryGetFromMemberInfoAccessors(object obj, MemberInfo member, out Func getter, out Action setter) + { + getter = null; + setter = null; + + if (obj == null || member == null) + return false; + + if (member is PropertyInfo prop) + { + var getMethod = prop.GetGetMethod(true); + var setMethod = prop.GetSetMethod(true); + if (getMethod == null || setMethod == null) + return false; + + getter = () => getMethod.Invoke(obj, null); + setter = newVal => setMethod.Invoke(obj, new object[] { newVal }); + } + else if (member is FieldInfo field) + { + getter = () => field.GetValue(obj); + setter = newVal => field.SetValue(obj, newVal); + } + else + { + return false; + } + + return true; + } + + /// + /// Filters a list of material accessors to prioritize "shared" variants. + /// If both a regular and a corresponding "shared" accessor exist (e.g., "material" and "sharedMaterial"), + /// only the "shared" accessor is kept to ensure safer and consistent material access. + /// + static List<(MemberInfo member, bool isArray)> GetSafeMaterialAccessors(List<(MemberInfo member, bool isArray)> materialAccessors) + { + var safeMaterialAccessors = new List<(MemberInfo member, bool isArray)>(); + + // Collect all member names that include "shared" (case-insensitive), + // so we know which "shared*" accessors exist. + var sharedNames = new HashSet(StringComparer.OrdinalIgnoreCase); + for (int i = 0; i < materialAccessors.Count; i++) + { + var name = materialAccessors[i].member.Name; + if (name.IndexOf("shared", StringComparison.OrdinalIgnoreCase) >= 0) + { + sharedNames.Add(name); + } + } + + // Filter the input list: + // - Always keep accessors whose names start with or contain "shared". + // - For other accessors, only keep them if there isn't a corresponding + // "shared" version (i.e., "shared" + accessorName) in the list. + for (int i = 0; i < materialAccessors.Count; i++) + { + var accessor = materialAccessors[i]; + var name = accessor.member.Name; + + if (name.IndexOf("shared", StringComparison.OrdinalIgnoreCase) >= 0) + { + // Keep all "shared" accessors. + safeMaterialAccessors.Add(accessor); + } + else + { + // Check if a "shared" variant exists; if not, keep this accessor. + var sharedName = "shared" + name; + if (!sharedNames.Contains(sharedName)) + { + safeMaterialAccessors.Add(accessor); + } + } + } + + return safeMaterialAccessors; + } + + + void BuildMaterialReferenceCache() + { + m_MaterialReferenceCache = new List(); + + var allComponentTypes = TypeCache.GetTypesDerivedFrom(); + + foreach (var type in allComponentTypes) + { + if (TryGetReferenceInfoFromType(type, out var referenceInfo)) + m_MaterialReferenceCache.Add(referenceInfo); + } + } + + public static bool TryGetReferenceInfoFromType(Type type, out MaterialReferenceInfo referenceInfo) + { + var flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; + + var materialAccessors = new List<(MemberInfo member, bool isArray)>(); + + foreach (var field in type.GetFields(flags)) + { + if (field.FieldType == typeof(Material) || field.FieldType == typeof(Material[])) + { + bool isPublic = field.IsPublic; + bool isSerialized = field.GetCustomAttribute() != null; + bool nonSerialized = field.GetCustomAttribute() != null; + if (isPublic && !nonSerialized || !isPublic && isSerialized) + materialAccessors.Add((field, field.FieldType == typeof(Material[]))); + } + } + + foreach (var prop in type.GetProperties(flags)) + { + if (!prop.CanRead) continue; + if (prop.GetIndexParameters().Length > 0) continue; // skip indexers + + if (prop.PropertyType == typeof(Material) || prop.PropertyType == typeof(Material[])) + materialAccessors.Add((prop, prop.PropertyType == typeof(Material[]))); + } + + if (materialAccessors.Count > 0) + { + referenceInfo = new MaterialReferenceInfo + { + type = type, + materialAccessors = GetSafeMaterialAccessors(materialAccessors) + }; + return true; + } + + referenceInfo = null; + return false; + } + + /// + /// Gets all of the types in the Material Reference lookup that are components. Used to determine whether to run the + /// method directly or on the component + /// + /// List of types that are components + public IEnumerable GetMaterialReferenceLookUps() => m_MaterialReferenceCache; + } +} diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceBuilder.cs.meta b/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceBuilder.cs.meta new file mode 100644 index 00000000000..558d474a2c6 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceBuilder.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: b33c3dc42fe7f894ca819a4d2e358f6c \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceChanger.cs b/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceChanger.cs new file mode 100644 index 00000000000..31f4a444887 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceChanger.cs @@ -0,0 +1,217 @@ +using System; +using System.ComponentModel; +using System.Reflection; +using System.Text; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.SceneManagement; +using static UnityEditor.Rendering.Universal.MaterialReferenceBuilder; +using Object = UnityEngine.Object; + +namespace UnityEditor.Rendering.Universal +{ + internal class MaterialReferenceChanger : IDisposable + { + MaterialReferenceBuilder m_Builder; + + public MaterialReferenceChanger() + { + m_Builder = new MaterialReferenceBuilder(); + } + + public void Dispose() + { + m_Builder?.Dispose(); + m_Builder = null; + } + + internal static bool AreMaterialsEqual(Material a, Material b) + { + return a == b; + } + + internal static bool AreMaterialsEqual(Material[] a, Material[] b) + { + if (a == null || b == null) + return a == b; // both must be null to be equal + + if (a.Length != b.Length) + return false; + + for (int i = 0; i < a.Length; i++) + { + if (!AreMaterialsEqual(a[i], b[i])) + return false; + } + + return true; + } + + private static bool TryChangeMaterialArray(Func getter, Action setter) + { + var materials = getter() as Material[]; + if (materials == null) + return true; + + bool setIsNeeded = false; + for (int i = 0; i < materials.Length; ++i) + { + if (ReadonlyMaterialMap.TryGetMappingMaterial(materials[i], out var mappingMaterial)) + { + materials[i] = mappingMaterial; + setIsNeeded = true; + } + } + + if (setIsNeeded) + { + setter(materials); + return AreMaterialsEqual(getter() as Material[], materials); + } + + return true; + } + + private static bool TryChangeMaterial(Func getter, Action setter) + { + var material = getter() as Material; + if (ReadonlyMaterialMap.TryGetMappingMaterial(material, out var mappingMaterial)) + { + setter(mappingMaterial); + var updated = getter() as Material; + return updated == mappingMaterial; + } + + return true; + } + + private static bool ReassignMaterialsFromInstance(object obj, MemberInfo member, bool isArray) + { + if (obj == null || member == null) + return false; + + if (!TryGetFromMemberInfoAccessors(obj, member, out var getter, out var setter)) + return false; + + return (isArray) ? TryChangeMaterialArray(getter, setter) : TryChangeMaterial(getter, setter); + } + + internal bool ReassignGameObjectMaterials(GameObject go, StringBuilder errors) + { + bool ok = true; + + foreach (var entry in m_Builder.GetMaterialReferenceLookUps()) + { + var components = go.GetComponentsInChildren(entry.type); + foreach (var component in components) + { + try + { + UnityEngine.Component prefabSource = null; + if (PrefabUtility.IsPartOfPrefabInstance(component)) + prefabSource = PrefabUtility.GetCorrespondingObjectFromSource(component); + + ok &= ReassignMaterials(component, prefabSource, entry, errors); + } + catch (Exception ex) + { + errors.Append($"{ex.Message} while trying to reassign materials from {component}."); + } + } + } + + return ok; + } + + private bool ReassignMaterialsFromInstaceIfOverriden(object obj, object prefabObj, MemberInfo member, bool isArray, StringBuilder errors) + { + if (!TryGetFromMemberInfoAccessors(obj, member, out var getter, out var setter)) + { + errors.AppendLine($"Unable to retrieve material accessors from {obj}"); + return false; + } + + if (!TryGetFromMemberInfoAccessors(prefabObj, member, out var getterPrefab, out var setterPrefab)) + { + errors.AppendLine($"Unable to retrieve material accessors from {obj}"); + return false; + } + + if (isArray) + { + Material[] instanceMaterials = getter() as Material[]; + Material[] prefabMaterials = getterPrefab() as Material[]; + if (AreMaterialsEqual(instanceMaterials, prefabMaterials)) + return true; // They are the same, nothing to do, as the materials must be changed from the prefab + + return TryChangeMaterialArray(getter, setter); + } + + Material instanceMaterial = getter() as Material; + Material prefabMaterial = getterPrefab() as Material; + if (AreMaterialsEqual(instanceMaterial, prefabMaterial)) + return true; // They are the same, nothing to do, as the materials must be changed from the prefab + + return TryChangeMaterial(getter, setter); + } + + public bool ReassignMaterials(object obj, object prefabObj, MaterialReferenceInfo entry, StringBuilder errors) + { + if (errors == null) + throw new ArgumentNullException("You must provide a valid errors parameter"); + + if (obj == null) + { + errors.AppendLine($"The given object to change material references is null"); + return false; + } + + bool ok = true; + foreach (var materialAccessor in entry.materialAccessors) + { + bool reassignOk = (prefabObj != null) ? + ReassignMaterialsFromInstaceIfOverriden(obj, prefabObj, materialAccessor.member, materialAccessor.isArray, errors): + ReassignMaterialsFromInstance(obj, materialAccessor.member, materialAccessor.isArray); + + if (!reassignOk) + { + ok = false; + errors.AppendLine($"Unable to change material on {entry.type} with property {materialAccessor.member.Name}"); + } + } + return ok; + } + + public bool ReassignUnityObjectMaterials(Object obj, StringBuilder errors) + { + if (obj == null) + { + return false; + } + + bool reassignOk = true; + if (obj is GameObject go) + { + // Iterate over all components, and reassign materials + reassignOk = ReassignGameObjectMaterials(go, errors); + } + + // Any other type, just get the mappings for that type and assing it through reflection + else if (MaterialReferenceBuilder.TryGetReferenceInfoFromType(obj.GetType(), out var entry)) + { + reassignOk = ReassignMaterials(obj, null, entry, errors); + } + + if (reassignOk) + { + // Make sure the changes get saved + EditorUtility.SetDirty(obj); + EditorSceneManager.SaveScene(SceneManager.GetActiveScene()); + } + else + errors.AppendLine($"Could not reassign materials of {obj} with {obj.GetType()} type."); + + return reassignOk; + } + } +} diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceChanger.cs.meta b/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceChanger.cs.meta new file mode 100644 index 00000000000..badcb6ad467 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.MaterialReferenceChanger.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: f4c78ca7f2e9828499e1861881e6e143 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.cs b/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.cs new file mode 100644 index 00000000000..a987f36bba5 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.cs @@ -0,0 +1,232 @@ +using System; +using System.Collections.Generic; +using System.Text; +using UnityEditor.SceneManagement; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; +using Object = UnityEngine.Object; + +namespace UnityEditor.Rendering.Universal +{ + enum IdentifierType { kNullIdentifier = 0, kImportedAsset = 1, kSceneObject = 2, kSourceAsset = 3, kBuiltInAsset = 4 }; + + internal static class ReadonlyMaterialMap + { + public static bool TryGetMappingMaterial(Material material, out Material mappingMaterial) + { + mappingMaterial = material; + + if (GraphicsSettings.currentRenderPipeline is UniversalRenderPipelineAsset) + { + if (s_BuiltInMaterialsToURPMaterialsMappings.TryGetValue(material.name, out var mapping)) + mappingMaterial = mapping(); + } + + return mappingMaterial != null; + } + + public static int count => s_BuiltInMaterialsToURPMaterialsMappings.Count; + + public static IEnumerable Keys => s_BuiltInMaterialsToURPMaterialsMappings.Keys; + + static Dictionary> s_BuiltInMaterialsToURPMaterialsMappings = new() + { + ["Default-Diffuse"] = () => GraphicsSettings.GetRenderPipelineSettings().defaultMaterial, + ["Default-Material"] = () => GraphicsSettings.GetRenderPipelineSettings().defaultMaterial, + ["Default-ParticleSystem"] = () => GraphicsSettings.GetRenderPipelineSettings().defaultParticleUnlitMaterial, + ["Default-Particle"] = () => GraphicsSettings.GetRenderPipelineSettings().defaultParticleUnlitMaterial, + ["Default-Terrain-Diffuse"] = () => GraphicsSettings.GetRenderPipelineSettings().defaultTerrainLitMaterial, + ["Default-Terrain-Specular"] = () => GraphicsSettings.GetRenderPipelineSettings().defaultTerrainLitMaterial, + ["Default-Terrain-Standard"] = () => GraphicsSettings.GetRenderPipelineSettings().defaultTerrainLitMaterial, + ["Sprites-Default"] = () => GraphicsSettings.GetRenderPipelineSettings().defaultLitMaterial, + ["Sprites-Mask"] = () => GraphicsSettings.GetRenderPipelineSettings().defaultLitMaterial, + ["SpatialMappingOcclusion"] = () => AssetDatabase.LoadAssetAtPath("Packages/com.unity.render-pipelines.universal/Runtime/Materials/SpatialMappingOcclusion.mat"), + ["SpatialMappingWireframe"] = () => AssetDatabase.LoadAssetAtPath("Packages/com.unity.render-pipelines.universal/Runtime/Materials/SpatialMappingWireframe.mat"), + }; + + public static List<(string materialName, string searchQuery)> GetMaterialSearchList() + { + List<(string materialName, string searchQuery)> list = new(); + foreach (var mat in GetBuiltInMaterials()) + { + string formattedId = $"<$object:{GlobalObjectId.GetGlobalObjectIdSlow(mat)},UnityEngine.Object$>"; + list.Add(($"p: ref={formattedId}", $"{mat.name} is being referenced")); + } + return list; + } + + public static Material[] GetBuiltInMaterials() + { + using(ListPool.Get(out var tmp)) + { + foreach (var materialName in Keys) + { + var name = materialName + ".mat"; + + Material mat = null; + foreach (var material in AssetDatabaseHelper.FindAssets()) + { + if (material.name == materialName) + { + mat = material; + break; + } + } + + if (mat == null) + { + mat = AssetDatabase.GetBuiltinExtraResource(name); + if (mat == null) + { + mat = Resources.GetBuiltinResource(name); + if (mat == null) + { + mat = Resources.Load(name); + } + } + } + + if (mat == null) + { + Debug.LogError($"Material '{materialName}' not found in built-in resources or project assets."); + continue; + } + + tmp.Add(mat); + } + return tmp.ToArray(); + } + } + } + + internal class ReadonlyMaterialConverter : RenderPipelineConverter + { + private static bool s_HasShownWarning = false; + public override bool isEnabled + { + get + { + if (GraphicsSettings.currentRenderPipeline is not UniversalRenderPipelineAsset) + { + if (!s_HasShownWarning) + Debug.LogWarning("[Render Pipeline Converter] Readonly Material Converter requires URP. Convert your project to URP to use this converter."); + s_HasShownWarning = true; + return false; + } + + return true; + } + } + + public override string name => "Readonly Material Converter"; + public override string info => "Converts references to Built-In readonly materials to URP readonly materials. This will create temporarily a .index file and that can take a long time."; + public override Type container => typeof(BuiltInToURPConverterContainer); + + List guids = new(); + List assetPaths = new (); + + internal void Add(string guid, string assetPath) + { + guids.Add(guid); + assetPaths.Add(assetPath); + } + + public override void OnInitialize(InitializeConverterContext ctx, Action callback) + { + SearchServiceUtils.RunQueuedSearch + ( + SearchServiceUtils.IndexingOptions.DeepSearch, + ReadonlyMaterialMap.GetMaterialSearchList(), + (item, description) => + { + if (GlobalObjectId.TryParse(item.id, out var gid)) + { + var assetPath = AssetDatabase.GUIDToAssetPath(gid.assetGUID); + var itemDescriptor = new ConverterItemDescriptor() + { + name = assetPath, + info = description, + }; + Add(gid.ToString(), assetPath); + ctx.AddAssetToConvert(itemDescriptor); + } + }, + callback + ); + } + + internal MaterialReferenceChanger m_MaterialReferenceChanger; + + public override void OnPreRun() + { + m_MaterialReferenceChanger = new MaterialReferenceChanger(); + } + + public override void OnPostRun() + { + m_MaterialReferenceChanger?.Dispose(); + m_MaterialReferenceChanger = null; + } + + public override void OnRun(ref RunItemContext ctx) + { + var errorString = new StringBuilder(); + var obj = LoadObject(ref ctx, errorString); + if (!m_MaterialReferenceChanger.ReassignUnityObjectMaterials(obj, errorString)) + { + ctx.didFail = true; + ctx.info = errorString.ToString(); + } + } + + public override void OnClicked(int index) + { + EditorGUIUtility.PingObject(AssetDatabase.LoadAssetAtPath(assetPaths[index])); + } + + private Object LoadObject(ref RunItemContext ctx, StringBuilder sb) + { + var item = ctx.item; + var guid = guids[item.index]; + + if (GlobalObjectId.TryParse(guid, out var gid)) + { + var obj = GlobalObjectId.GlobalObjectIdentifierToObjectSlow(gid); + if (!obj) + { + // Open container scene + if (gid.identifierType == (int)IdentifierType.kSceneObject) + { + var containerPath = AssetDatabase.GUIDToAssetPath(gid.assetGUID); + + var mainInstanceID = AssetDatabase.LoadAssetAtPath(containerPath); + AssetDatabase.OpenAsset(mainInstanceID); + + // if we have a prefab open, then we already have the object we need to update + var prefabStage = PrefabStageUtility.GetCurrentPrefabStage(); + if (prefabStage != null) + { + obj = mainInstanceID; + } + + // Reload object if it is still null + if (obj == null) + { + obj = GlobalObjectId.GlobalObjectIdentifierToObjectSlow(gid); + if (!obj) + { + sb.AppendLine($"Object {gid.assetGUID} failed to load..."); + } + } + } + } + + return obj; + } + + sb.AppendLine($"Failed to parse Global ID {item.descriptor.info}..."); + return null; + } + } +} diff --git a/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.cs.meta b/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.cs.meta new file mode 100644 index 00000000000..b9a74b3f895 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverter.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 946d3881885b6ab4ba938dad9c25a5e7 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter.meta b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter.meta new file mode 100644 index 00000000000..9ca8beab529 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 942a5a86e2bef824ea90af68b65e11d5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/Cube.prefab b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/Cube.prefab new file mode 100644 index 00000000000..b8acf589c58 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/Cube.prefab @@ -0,0 +1,123 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &7720142174441302186 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6694468348056204606} + - component: {fileID: 1552815716135096073} + - component: {fileID: 5322394103119292604} + - component: {fileID: 4602385329376030183} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6694468348056204606 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7720142174441302186} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.5, y: 0.35, z: 0.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1552815716135096073 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7720142174441302186} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &5322394103119292604 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7720142174441302186} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_ForceMeshLod: -1 + m_MeshLodSelectionBias: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10302, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10308, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10301, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10650, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10651, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10652, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 10758, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15302, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 15303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_GlobalIlluminationMeshLod: 0 + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &4602385329376030183 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7720142174441302186} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} diff --git a/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/Cube.prefab.meta b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/Cube.prefab.meta new file mode 100644 index 00000000000..d9551a2a346 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/Cube.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 95cb9745d0f90ed4cb2976ad2147b05d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceBuilder.cs b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceBuilder.cs new file mode 100644 index 00000000000..e161afa1b19 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceBuilder.cs @@ -0,0 +1,40 @@ +using System; +using NUnit.Framework; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +namespace UnityEditor.Rendering.Universal.Tools +{ + [TestFixture] + [Category("Graphics Tools")] + class ReadonlyMaterialConverterTests_MaterialReferenceBuilder + { + [OneTimeSetUp] + public void OneTimeSetup() + { + if (!(GraphicsSettings.currentRenderPipeline is UniversalRenderPipelineAsset)) + Assert.Ignore("Current pipeline is not URP. Skipping tests"); + } + + public class TestClass_PublicPropertySharedProperty + { + public Material Single { get; set; } + public Material[] Array { get; set; } + public Material SharedSingle { get; set; } + public Material[] SharedArray { get; set; } + } + + [Test] + public void TypeWithSharedAndNonSharedProperties_OnlySharedOnesAreReturnedOnMaterialAccessor() + { + var obj = Activator.CreateInstance(typeof(TestClass_PublicPropertySharedProperty)); + Assert.IsTrue(MaterialReferenceBuilder.TryGetReferenceInfoFromType(obj.GetType(), out var entry)); + + Assert.AreEqual(2, entry.materialAccessors.Count); + Assert.AreEqual("SharedSingle", entry.materialAccessors[0].member.Name); + Assert.AreEqual("SharedArray", entry.materialAccessors[1].member.Name); + } + } + +} diff --git a/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceBuilder.cs.meta b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceBuilder.cs.meta new file mode 100644 index 00000000000..071acacd84d --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceBuilder.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ace421d79f5a6bd41bca418cddff7683 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceChanger.cs b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceChanger.cs new file mode 100644 index 00000000000..8036c92be0a --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceChanger.cs @@ -0,0 +1,225 @@ +using System; +using System.Collections.Generic; +using System.Text; +using NUnit.Framework; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; +using static UnityEditor.Rendering.Universal.MaterialReferenceBuilder; + +namespace UnityEditor.Rendering.Universal.Tools +{ + [TestFixture] + [Category("Graphics Tools")] + class ReadonlyMaterialConverterTests_MaterialReferenceChanger + { + #region Types Definition + public class TestClass_PublicNonSerializedField + { + [NonSerialized] public Material Single; + [NonSerialized] public Material[] Array; + } + + public class TestClass_PrivateField + { + Material Single; + Material[] Array; + } + + public class TestClass_NoGetProperties + { + private Material m_Single; + private Material[] m_Array; + + public Material Single { set => m_Single = value; } + public Material[] Array { set => m_Array = value; } + } + + public class TestClass_PublicField + { + public Material Single; + public Material[] Array; + } + + public class TestClass_PrivateSerializedField + { + [SerializeField] Material Single; + [SerializeField] Material[] Array; + } + + public class TestClass_PrivateProperties + { + Material Single { get; set; } + Material[] Array { get; set; } + } + + public class TestClass_PublicProperty + { + public Material Single { get; set; } + public Material[] Array { get; set; } + } + + public class TestClass_PublicPropertyWithBackingField + { + Material m_Single; + Material[] m_Array; + + public Material Single { get => m_Single; set => m_Single = value; } + public Material[] Array { get => m_Array; set => m_Array = value; } + } + #endregion + + Material[] m_Materials; + Material[] m_ExpectedMaterials; + + [OneTimeSetUp] + public void OneTimeSetup() + { + if (!(GraphicsSettings.currentRenderPipeline is UniversalRenderPipelineAsset)) + Assert.Ignore("Current pipeline is not URP. Skipping tests"); + + m_Materials = ReadonlyMaterialMap.GetBuiltInMaterials(); + Assume.That(m_Materials.Length > 0, "There are no mapping materials"); + + m_ExpectedMaterials = new Material[m_Materials.Length]; + for(int i = 0; i < m_Materials.Length; ++i) + { + Assert.IsTrue(ReadonlyMaterialMap.TryGetMappingMaterial(m_Materials[i], out var expectedMaterial)); + m_ExpectedMaterials[i] = expectedMaterial; + } + } + + public static IEnumerable Success_TestCases() + { + yield return new TestCaseData(typeof(TestClass_PublicField)).SetName("Public Fields are migrated"); + yield return new TestCaseData(typeof(TestClass_PrivateSerializedField)).SetName("Private Serialized Fields are migrated"); + yield return new TestCaseData(typeof(TestClass_PublicProperty)).SetName("Public Properties are migrated"); + yield return new TestCaseData(typeof(TestClass_PrivateProperties)).SetName("Private Properties are migrated"); + yield return new TestCaseData(typeof(TestClass_PublicPropertyWithBackingField)).SetName("Public Property With Serialized Field are migrated"); + } + + public static IEnumerable Failing_TestCases() + { + yield return new TestCaseData(typeof(TestClass_PublicNonSerializedField)).SetName("Public Non Fields"); + yield return new TestCaseData(typeof(TestClass_PrivateField)).SetName("Private Fields"); + yield return new TestCaseData(typeof(TestClass_NoGetProperties)).SetName("Setter only Properties "); + } + + [TestCaseSource(nameof(Failing_TestCases))] + public void ReassignMaterial_Failing_Tests(Type classType) + { + var obj = Activator.CreateInstance(classType); + Assert.IsFalse(MaterialReferenceBuilder.TryGetReferenceInfoFromType(obj.GetType(), out var entry)); + } + + private bool TryGetMembers(object obj, MaterialReferenceInfo entry, out Func getterArray, out Action setterArray, out Func getterSingle, out Action setterSingle) + { + getterArray = null; + setterArray = null; + getterSingle = null; + setterSingle = null; + + bool ok = true; + foreach (var materialAccessor in entry.materialAccessors) + { + ok &= materialAccessor.isArray ? + MaterialReferenceBuilder.TryGetFromMemberInfoAccessors(obj, materialAccessor.member, out getterArray, out setterArray) : + MaterialReferenceBuilder.TryGetFromMemberInfoAccessors(obj, materialAccessor.member, out getterSingle, out setterSingle); + } + + return getterArray != null && setterArray != null && getterSingle != null && setterSingle != null; + } + + private object CreateInstanceWithAllMaterials(Type classType, MaterialReferenceInfo entry, out Func getterArray, out Action setterArray, out Func getterSingle, out Action setterSingle) + { + var obj = Activator.CreateInstance(classType); + Assert.IsTrue(TryGetMembers(obj, entry, out getterArray, out setterArray, out getterSingle, out setterSingle), "Failed to get material accessors"); + + var copy = (Material[])m_Materials.Clone(); + // Set initial materials + setterSingle(copy[0]); + setterArray(copy); + + return obj; + } + + [TestCaseSource(nameof(Success_TestCases))] + public void ReassignMaterial_Success_Tests(Type classType) + { + Assert.IsTrue(MaterialReferenceBuilder.TryGetReferenceInfoFromType(classType, out var entry)); + var obj = CreateInstanceWithAllMaterials(classType, entry, out var getterArray, out var setterArray, out var getterSingle, out var setterSingle); + + // Perform the reassignment + using (var materialReferenceChanger = new MaterialReferenceChanger()) + { + var sb = new StringBuilder(); + bool ok = materialReferenceChanger.ReassignMaterials(obj, null, entry, sb); + Assert.IsTrue(ok, "Reassing Materials Failed"); + } + + Assert.IsTrue(MaterialReferenceChanger.AreMaterialsEqual(m_ExpectedMaterials, getterArray() as Material[]), "Materials Arrays NOT changed"); + Assert.IsTrue(MaterialReferenceChanger.AreMaterialsEqual(m_ExpectedMaterials[0], getterSingle() as Material), "Material Single NOT changed"); + } + + [TestCaseSource(nameof(Success_TestCases))] + public void ReassignMaterial_OnPrefabWhenNoOverride(Type classType) + { + Assert.IsTrue(MaterialReferenceBuilder.TryGetReferenceInfoFromType(classType, out var entry)); + var obj = CreateInstanceWithAllMaterials(classType, entry, out var getterArray, out var setterArray, out var getterSingle, out var setterSingle); + var objPrefab = CreateInstanceWithAllMaterials(classType, entry, out var getterPrefabArray, out var setterPrefabArray, out var getterPrefabSingle, out var setterPrefabSingle); + + // Perform the reassignment + using (var materialReferenceChanger = new MaterialReferenceChanger()) + { + var sb = new StringBuilder(); + bool ok = materialReferenceChanger.ReassignMaterials(obj, objPrefab, entry, sb); + Assert.IsTrue(ok, "Reassing Materials Failed"); + } + + // Nothing is changed, as the instance should not change prefab materials. + var expectedBuiltIn = (Material[])m_Materials.Clone(); + Assert.IsTrue(MaterialReferenceChanger.AreMaterialsEqual(expectedBuiltIn, getterArray() as Material[]), "Materials from the instance have been modified"); + Assert.IsTrue(MaterialReferenceChanger.AreMaterialsEqual(expectedBuiltIn, getterPrefabArray() as Material[]), "Materials from the prefab have NOT been modified"); + + Assert.IsTrue(MaterialReferenceChanger.AreMaterialsEqual(expectedBuiltIn[0], getterSingle() as Material), "Materials from the instance have been modified"); + Assert.IsTrue(MaterialReferenceChanger.AreMaterialsEqual(expectedBuiltIn[0], getterPrefabSingle() as Material), "Materials from the prefab have NOT been modified"); + } + + [TestCaseSource(nameof(Success_TestCases))] + public void ReassignMaterial_OnInstanceWhenOverridingPrefab(Type classType) + { + Assert.IsTrue(MaterialReferenceBuilder.TryGetReferenceInfoFromType(classType, out var entry)); + var obj = CreateInstanceWithAllMaterials(classType, entry, out var getterArray, out var setterArray, out var getterSingle, out var setterSingle); + var objPrefab = CreateInstanceWithAllMaterials(classType, entry, out var getterPrefabArray, out var setterPrefabArray, out var getterPrefabSingle, out var setterPrefabSingle); + + // Prefab will point to 0, and instance to last, changing instance to fake an override from the prefab + setterSingle(m_Materials[m_Materials.Length - 1]); + + // Change the instance materials to reverse order + var builtInReversed = (Material[])m_Materials.Clone(); + Array.Reverse(builtInReversed); + setterArray(builtInReversed); + + // Perform the reassignment + using (var materialReferenceChanger = new MaterialReferenceChanger()) + { + var sb = new StringBuilder(); + bool ok = materialReferenceChanger.ReassignMaterials(obj, objPrefab, entry, sb); + Assert.IsTrue(ok, "Reassing Materials Failed"); + } + + var expectedBuiltIn = (Material[])m_Materials.Clone(); + + var reversedExpected = (Material[])m_ExpectedMaterials.Clone(); + Array.Reverse(reversedExpected); + + // As the instance is overriding materials, those must me changed, but not the prefab + Assert.IsTrue(MaterialReferenceChanger.AreMaterialsEqual(reversedExpected, getterArray() as Material[]), "Materials from the instance have NOT been modified"); + Assert.IsTrue(MaterialReferenceChanger.AreMaterialsEqual(expectedBuiltIn, getterPrefabArray() as Material[]), "Materials from the prefab have been modified"); + + Assert.IsTrue(MaterialReferenceChanger.AreMaterialsEqual(reversedExpected[0], getterSingle() as Material), "Materials from the instance have NOT been modified"); + Assert.IsTrue(MaterialReferenceChanger.AreMaterialsEqual(expectedBuiltIn[0], getterPrefabSingle() as Material), "Materials from the prefab have been modified"); + } + } + +} diff --git a/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceChanger.cs.meta b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceChanger.cs.meta new file mode 100644 index 00000000000..b66f5ecb999 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.MaterialReferenceChanger.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 4839e753f107dca4db956c531da90096 \ No newline at end of file diff --git a/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.cs b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.cs new file mode 100644 index 00000000000..3ab957875f9 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.cs @@ -0,0 +1,100 @@ +using NUnit.Framework; +using UnityEngine; +using UnityEngine.Rendering; +using UnityEngine.Rendering.Universal; + +namespace UnityEditor.Rendering.Universal.Tools +{ + [TestFixture] + [Category("Graphics Tools")] + class ReadonlyMaterialConverterTests + { + const string k_PrefabPath = "Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/Cube.prefab"; + + GameObject m_GO; + MeshRenderer m_MeshRenderer; + Material[] m_RollbackMaterials; + + [OneTimeSetUp] + public void OneTimeSetup() + { + var urpAsset = GraphicsSettings.currentRenderPipeline as UniversalRenderPipelineAsset; + if (urpAsset == null) + Assert.Ignore("Project without URP. Skipping test"); + + var universalRenderer = urpAsset.scriptableRenderer as UniversalRenderer; + if (universalRenderer == null) + Assert.Ignore("Project without URP - Universal Renderer. Skipping test"); + } + + [SetUp] + public void Setup() + { + m_GO = AssetDatabase.LoadAssetAtPath(k_PrefabPath); + m_MeshRenderer = m_GO.GetComponent(); + Assert.AreEqual(ReadonlyMaterialMap.count, m_MeshRenderer.sharedMaterials.Length, "ReadonlyMaterialMap - Lengths are different"); + + int i = 0; + foreach (var key in ReadonlyMaterialMap.Keys) + { + Assert.AreEqual(key, m_MeshRenderer.sharedMaterials[i].name, "ReadonlyMaterialMap - Order has changed"); + ++i; + } + + m_RollbackMaterials = new Material[ReadonlyMaterialMap.count]; + m_MeshRenderer.sharedMaterials.CopyTo(m_RollbackMaterials, 0); + } + + [TearDown] + public void Teardown() + { + if (m_MeshRenderer != null) + m_MeshRenderer.sharedMaterials = m_RollbackMaterials; + } + + private void CheckMaterials(Material[] actual) + { + int i = 0; + foreach (var key in ReadonlyMaterialMap.Keys) + { + Assert.IsTrue(ReadonlyMaterialMap.TryGetMappingMaterial(m_RollbackMaterials[i], out var expected)); + CheckMaterials(expected, actual[i]); + ++i; + } + } + + private void CheckMaterials(Material expected, Material actual) + { + Assert.AreEqual(expected, actual, "The material was not changed"); + } + + [Test] + [Timeout(5 * 60 * 1000)] + public void ReassignGameObjectMaterials_Succeeds_WhenMaterialCanBeSet() + { + var materialConverter = new ReadonlyMaterialConverter(); + var gid = GlobalObjectId.GetGlobalObjectIdSlow(m_GO); + materialConverter.Add(gid.ToString(), k_PrefabPath); + + RunItemContext runItemContext = new RunItemContext(new ConverterItemInfo + { + descriptor = new ConverterItemDescriptor() + { + name = m_GO.name + }, + index = 0, + }); + + Assert.IsNull(materialConverter.m_MaterialReferenceChanger, "MaterialReferenceChanger should be null before OnPreRun"); + materialConverter.OnPreRun(); + Assert.IsNotNull(materialConverter.m_MaterialReferenceChanger, "MaterialReferenceChanger should NOT be null after OnPreRun"); + materialConverter.OnRun(ref runItemContext); + materialConverter.OnPostRun(); + Assert.IsNull(materialConverter.m_MaterialReferenceChanger, "MaterialReferenceChanger should be null after OnPostRun"); + + Assert.IsFalse(runItemContext.didFail, runItemContext.info); + CheckMaterials(m_MeshRenderer.sharedMaterials); + } + } + +} diff --git a/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.cs.meta b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.cs.meta new file mode 100644 index 00000000000..a44f1ef96e2 --- /dev/null +++ b/Packages/com.unity.render-pipelines.universal/Tests/Editor/Tools/Converters/ReadonlyMaterialConverter/ReadonlyMaterialConverterTests.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c639c93fd368e814686381019d589f37 \ No newline at end of file From a9aa9d3b67096974af5e2ecf7ea16951eafa3ed7 Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Mon, 29 Sep 2025 23:55:24 +0000 Subject: [PATCH 46/65] [Port] [6000.3] URP Fix Texture Mode Force Prepass when depth copy is turned off on camera --- .../Runtime/UniversalRendererRenderGraph.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs index 0496e62f42f..d65157458f0 100644 --- a/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs +++ b/Packages/com.unity.render-pipelines.universal/Runtime/UniversalRendererRenderGraph.cs @@ -1555,7 +1555,7 @@ private void OnAfterRendering(RenderGraph renderGraph, bool applyPostProcessing) bool RequirePrepassForTextures(UniversalCameraData cameraData, in RenderPassInputSummary renderPassInputs, bool requireDepthTexture) { bool requiresDepthTexturePrepass = requireDepthTexture && !CanCopyDepth(cameraData); - requiresDepthTexturePrepass |= m_CopyDepthMode == CopyDepthMode.ForcePrepass; + requiresDepthTexturePrepass |= cameraData.requiresDepthTexture && m_CopyDepthMode == CopyDepthMode.ForcePrepass; requiresDepthTexturePrepass |= renderPassInputs.requiresDepthPrepass; requiresDepthTexturePrepass |= DebugHandlerRequireDepthPass(cameraData); requiresDepthTexturePrepass |= renderPassInputs.requiresNormalsTexture; // This must be checked explicitly because some features inject normal requirements later in the frame From e8358d10f288c4de09f4002b0a62de82ef86514c Mon Sep 17 00:00:00 2001 From: Reach Platform Support Date: Mon, 29 Sep 2025 23:55:24 +0000 Subject: [PATCH 47/65] [Port] [6000.3] Fixed cloud shadow popping when no directional shadows are rendered --- .../Runtime/Lighting/SurfaceShading.hlsl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl index 4753e19d2a9..523718345fc 100644 --- a/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl +++ b/Packages/com.unity.render-pipelines.high-definition/Runtime/Lighting/SurfaceShading.hlsl @@ -87,10 +87,9 @@ DirectLighting ShadeSurface_Directional(LightLoopContext lightLoopContext, // Apply the volumetric cloud shadow if relevant // We evaluate them here instead of inside EvaluateLight_Directional to be able to apply it on objects // with transmission and still benefit from shadow dimmer and colored shadows - if (light.shadowIndex >= 0 && _VolumetricCloudsShadowOriginToggle.w == 1.0) + if (_VolumetricCloudsShadowOriginToggle.w == 1.0) { cloudShadow = EvaluateVolumetricCloudsShadows(light, posInput.positionWS); - lightLoopContext.shadowValue *= cloudShadow; } #endif @@ -105,6 +104,7 @@ DirectLighting ShadeSurface_Directional(LightLoopContext lightLoopContext, #endif { SHADOW_TYPE shadow = EvaluateShadow_Directional(lightLoopContext, posInput, light, builtinData, GetNormalForShadowBias(bsdfData)); + shadow *= cloudShadow; float NdotL = dot(bsdfData.normalWS, L); // No microshadowing when facing away from light (use for thin transmission as well) shadow *= NdotL >= 0.0 ? ComputeMicroShadowing(GetAmbientOcclusionForMicroShadowing(bsdfData), NdotL, _MicroShadowOpacity) : 1.0; From f83e9381a87d3fbfebc4b1fd86b48e6e773c77b3 Mon Sep 17 00:00:00 2001 From: Alexandre Thibodeau Date: Mon, 29 Sep 2025 23:55:24 +0000 Subject: [PATCH 48/65] Merge PR #79350 from uitech/opacity-performance --- .../PanelSettings270.asset} | 18 +- .../PanelSettings270.asset.meta} | 0 .../Assets/Scenes/363_UIToolkit_Misc.meta | 8 + .../Assets/Scenes/363_UIToolkit_Misc.unity | 216 ++++++++++++++++ .../Scenes/363_UIToolkit_Misc.unity.meta | 7 + .../OpacityOverride363.shadergraph | 230 ++++++++++++++++++ .../OpacityOverride363.shadergraph.meta | 18 ++ .../363_UIToolkit_Misc/PanelSettings363.asset | 56 +++++ .../PanelSettings363.asset.meta | 8 + .../Scenes/363_UIToolkit_Misc/Styles363.uss | 19 ++ .../363_UIToolkit_Misc/Styles363.uss.meta | 12 + .../363_UIToolkit_Misc/Template363.uxml | 13 + .../363_UIToolkit_Misc/Template363.uxml.meta | 10 + .../ProjectSettings/EditorBuildSettings.asset | 4 +- 14 files changed, 615 insertions(+), 4 deletions(-) rename Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/{CommonAssets/UI Toolkit/PanelSettings.asset => Scenes/270_ScreenSpace_UI_Overlay/PanelSettings270.asset} (66%) rename Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/{CommonAssets/UI Toolkit/PanelSettings.asset.meta => Scenes/270_ScreenSpace_UI_Overlay/PanelSettings270.asset.meta} (100%) create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc.unity create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc.unity.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/OpacityOverride363.shadergraph create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/OpacityOverride363.shadergraph.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/PanelSettings363.asset create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/PanelSettings363.asset.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/Styles363.uss create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/Styles363.uss.meta create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/Template363.uxml create mode 100644 Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/Template363.uxml.meta diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/UI Toolkit/PanelSettings.asset b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/270_ScreenSpace_UI_Overlay/PanelSettings270.asset similarity index 66% rename from Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/UI Toolkit/PanelSettings.asset rename to Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/270_ScreenSpace_UI_Overlay/PanelSettings270.asset index 4c27839f60f..33deca62fda 100644 --- a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/UI Toolkit/PanelSettings.asset +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/270_ScreenSpace_UI_Overlay/PanelSettings270.asset @@ -10,13 +10,15 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 19101, guid: 0000000000000000e000000000000000, type: 0} - m_Name: PanelSettings + m_Name: PanelSettings270 m_EditorClassIdentifier: themeUss: {fileID: -4733365628477956816, guid: 348e5dea337a2034f84984b3284c58d6, type: 3} + m_DisableNoThemeWarning: 0 m_TargetTexture: {fileID: 0} m_RenderMode: 0 - m_WorldSpaceLayer: 0 + m_ColliderUpdateMode: 0 + m_ColliderIsTrigger: 1 m_ScaleMode: 1 m_ReferenceSpritePixelsPerUnit: 100 m_PixelsPerUnit: 100 @@ -33,12 +35,22 @@ MonoBehaviour: m_ClearColor: 0 m_ColorClearValue: {r: 0, g: 0, b: 0, a: 0} m_VertexBudget: 0 + m_TextureSlotCount: 8 m_DynamicAtlasSettings: m_MinAtlasSize: 64 m_MaxAtlasSize: 4096 m_MaxSubTextureSize: 64 - m_ActiveFilters: 31 + m_ActiveFilters: -1 m_AtlasBlitShader: {fileID: 9101, guid: 0000000000000000f000000000000000, type: 0} m_RuntimeShader: {fileID: 9100, guid: 0000000000000000f000000000000000, type: 0} m_RuntimeWorldShader: {fileID: 9102, guid: 0000000000000000f000000000000000, type: 0} + m_RuntimeGaussianBlurShader: {fileID: 20300, guid: 0000000000000000f000000000000000, + type: 0} + m_RuntimeColorEffectShader: {fileID: 20301, guid: 0000000000000000f000000000000000, + type: 0} + m_SDFShader: {fileID: 19011, guid: 0000000000000000f000000000000000, type: 0} + m_BitmapShader: {fileID: 9001, guid: 0000000000000000f000000000000000, type: 0} + m_SpriteShader: {fileID: 19012, guid: 0000000000000000f000000000000000, type: 0} + m_ICUDataAsset: {fileID: 0} + forceGammaRendering: 0 textSettings: {fileID: 0} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/UI Toolkit/PanelSettings.asset.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/270_ScreenSpace_UI_Overlay/PanelSettings270.asset.meta similarity index 100% rename from Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/CommonAssets/UI Toolkit/PanelSettings.asset.meta rename to Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/270_ScreenSpace_UI_Overlay/PanelSettings270.asset.meta diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc.meta new file mode 100644 index 00000000000..7dd50dd5b9b --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 490efcd1a279aef4b9c3d66e4f789a3c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc.unity b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc.unity new file mode 100644 index 00000000000..028789e1c65 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc.unity @@ -0,0 +1,216 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 2 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 1 + m_PVRFilteringGaussRadiusAO: 1 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &819469642 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 819469644} + - component: {fileID: 819469643} + m_Layer: 5 + m_Name: UIDocument + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &819469643 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819469642} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument + m_PanelSettings: {fileID: 11400000, guid: c1288931a5960b1489ff22a9b77ca091, type: 2} + m_ParentUI: {fileID: 0} + sourceAsset: {fileID: 9197481963319205126, guid: 6b60d5abe0964254fa112b39ca8e9a28, + type: 3} + m_SortingOrder: 0 + m_Position: 0 + m_WorldSpaceSizeMode: 1 + m_WorldSpaceWidth: 1920 + m_WorldSpaceHeight: 1080 + m_PivotReferenceSize: 0 + m_Pivot: 0 + m_WorldSpaceCollider: {fileID: 0} +--- !u!4 &819469644 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 819469642} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1748372767 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 7765703020162394032, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_Name + value: OverlayUITestSettings + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8546375357908578044, guid: 92ce377cda9a62847a6ab6f48024bc47, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 92ce377cda9a62847a6ab6f48024bc47, type: 3} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1748372767} + - {fileID: 819469644} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc.unity.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc.unity.meta new file mode 100644 index 00000000000..bdbacaeaa80 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8447fe53718694246a4e772d4ddde368 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/OpacityOverride363.shadergraph b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/OpacityOverride363.shadergraph new file mode 100644 index 00000000000..45d3f27ebde --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/OpacityOverride363.shadergraph @@ -0,0 +1,230 @@ +{ + "m_SGVersion": 3, + "m_Type": "UnityEditor.ShaderGraph.GraphData", + "m_ObjectId": "31537789fac64862bc5cb99aec855ffb", + "m_Properties": [], + "m_Keywords": [], + "m_Dropdowns": [], + "m_CategoryData": [ + { + "m_Id": "644b4d99774546c387622a33f728fc49" + } + ], + "m_Nodes": [ + { + "m_Id": "894be734b492492bb205a9f3ed94fae7" + }, + { + "m_Id": "99cd0440f92f4c43b1e984b48ad01a17" + } + ], + "m_GroupDatas": [], + "m_StickyNoteDatas": [], + "m_Edges": [], + "m_VertexContext": { + "m_Position": { + "x": 0.0, + "y": 0.0 + }, + "m_Blocks": [] + }, + "m_FragmentContext": { + "m_Position": { + "x": 0.0, + "y": 200.0 + }, + "m_Blocks": [ + { + "m_Id": "894be734b492492bb205a9f3ed94fae7" + }, + { + "m_Id": "99cd0440f92f4c43b1e984b48ad01a17" + } + ] + }, + "m_PreviewData": { + "serializedMesh": { + "m_SerializedMesh": "{\"mesh\":{\"instanceID\":0}}", + "m_Guid": "" + }, + "preventRotation": false + }, + "m_Path": "Shader Graphs", + "m_GraphPrecision": 1, + "m_PreviewMode": 2, + "m_OutputNode": { + "m_Id": "" + }, + "m_SubDatas": [], + "m_ActiveTargets": [ + { + "m_Id": "eb52f607ad72437d9f2665b5fd67331e" + } + ] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalUISubTarget", + "m_ObjectId": "34e8cfbf70a749b2a0025455577b8d3d" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.Rendering.UITK.ShaderGraph.UIData", + "m_ObjectId": "43d0f8b4233b4ecfbc96331983883f18", + "m_Version": 0 +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.ColorRGBMaterialSlot", + "m_ObjectId": "4f806f890ee54b94850cb07f7e2e3edd", + "m_Id": 0, + "m_DisplayName": "Base Color", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "BaseColor", + "m_StageCapability": 2, + "m_Value": { + "x": 1.0, + "y": 0.0, + "z": 0.0 + }, + "m_DefaultValue": { + "x": 0.5, + "y": 0.5, + "z": 0.5 + }, + "m_Labels": [], + "m_ColorMode": 0, + "m_DefaultColor": { + "r": 0.5, + "g": 0.5, + "b": 0.5, + "a": 1.0 + } +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.Vector1MaterialSlot", + "m_ObjectId": "572bf8a0a9b14bf6b3a843376031966d", + "m_Id": 0, + "m_DisplayName": "Alpha", + "m_SlotType": 0, + "m_Hidden": false, + "m_ShaderOutputName": "Alpha", + "m_StageCapability": 2, + "m_Value": 1.0, + "m_DefaultValue": 1.0, + "m_Labels": [], + "m_LiteralMode": false +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.CategoryData", + "m_ObjectId": "644b4d99774546c387622a33f728fc49", + "m_Name": "", + "m_ChildObjectList": [] +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "894be734b492492bb205a9f3ed94fae7", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.BaseColor", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "4f806f890ee54b94850cb07f7e2e3edd" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.BaseColor" +} + +{ + "m_SGVersion": 0, + "m_Type": "UnityEditor.ShaderGraph.BlockNode", + "m_ObjectId": "99cd0440f92f4c43b1e984b48ad01a17", + "m_Group": { + "m_Id": "" + }, + "m_Name": "SurfaceDescription.Alpha", + "m_DrawState": { + "m_Expanded": true, + "m_Position": { + "serializedVersion": "2", + "x": 0.0, + "y": 0.0, + "width": 0.0, + "height": 0.0 + } + }, + "m_Slots": [ + { + "m_Id": "572bf8a0a9b14bf6b3a843376031966d" + } + ], + "synonyms": [], + "m_Precision": 0, + "m_PreviewExpanded": true, + "m_DismissedVersion": 0, + "m_PreviewMode": 0, + "m_CustomColors": { + "m_SerializableColors": [] + }, + "m_SerializedDescriptor": "SurfaceDescription.Alpha" +} + +{ + "m_SGVersion": 1, + "m_Type": "UnityEditor.Rendering.Universal.ShaderGraph.UniversalTarget", + "m_ObjectId": "eb52f607ad72437d9f2665b5fd67331e", + "m_Datas": [ + { + "m_Id": "43d0f8b4233b4ecfbc96331983883f18" + } + ], + "m_ActiveSubTarget": { + "m_Id": "34e8cfbf70a749b2a0025455577b8d3d" + }, + "m_AllowMaterialOverride": false, + "m_SurfaceType": 0, + "m_ZTestMode": 4, + "m_ZWriteControl": 0, + "m_AlphaMode": 0, + "m_RenderFace": 2, + "m_AlphaClip": false, + "m_CastShadows": true, + "m_ReceiveShadows": true, + "m_DisableTint": false, + "m_Sort3DAs2DCompatible": false, + "m_AdditionalMotionVectorMode": 0, + "m_AlembicMotionVectors": false, + "m_SupportsLODCrossFade": false, + "m_CustomEditorGUI": "", + "m_SupportVFX": false +} + diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/OpacityOverride363.shadergraph.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/OpacityOverride363.shadergraph.meta new file mode 100644 index 00000000000..b070bbace2d --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/OpacityOverride363.shadergraph.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: 7cc114cad8443cc41995ecdfa0d5bff7 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 625f186215c104763be7675aa2d941aa, type: 3} + useAsTemplate: 0 + exposeTemplateAsShader: 0 + template: + name: + category: + description: + icon: {instanceID: 0} + thumbnail: {instanceID: 0} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/PanelSettings363.asset b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/PanelSettings363.asset new file mode 100644 index 00000000000..7ab2cfadcbb --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/PanelSettings363.asset @@ -0,0 +1,56 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 19101, guid: 0000000000000000e000000000000000, type: 0} + m_Name: PanelSettings363 + m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.PanelSettings + themeUss: {fileID: -4733365628477956816, guid: 348e5dea337a2034f84984b3284c58d6, + type: 3} + m_DisableNoThemeWarning: 0 + m_TargetTexture: {fileID: 0} + m_RenderMode: 0 + m_ColliderUpdateMode: 0 + m_ColliderIsTrigger: 1 + m_ScaleMode: 0 + m_ReferenceSpritePixelsPerUnit: 100 + m_PixelsPerUnit: 100 + m_Scale: 1 + m_ReferenceDpi: 96 + m_FallbackDpi: 96 + m_ReferenceResolution: {x: 1200, y: 800} + m_ScreenMatchMode: 0 + m_Match: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 + m_BindingLogLevel: 0 + m_ClearDepthStencil: 1 + m_ClearColor: 1 + m_ColorClearValue: {r: 0, g: 0, b: 0, a: 1} + m_VertexBudget: 0 + m_TextureSlotCount: 8 + m_DynamicAtlasSettings: + m_MinAtlasSize: 64 + m_MaxAtlasSize: 4096 + m_MaxSubTextureSize: 64 + m_ActiveFilters: -1 + m_AtlasBlitShader: {fileID: 9101, guid: 0000000000000000f000000000000000, type: 0} + m_RuntimeShader: {fileID: 9100, guid: 0000000000000000f000000000000000, type: 0} + m_RuntimeWorldShader: {fileID: 9102, guid: 0000000000000000f000000000000000, type: 0} + m_RuntimeGaussianBlurShader: {fileID: 20300, guid: 0000000000000000f000000000000000, + type: 0} + m_RuntimeColorEffectShader: {fileID: 20301, guid: 0000000000000000f000000000000000, + type: 0} + m_SDFShader: {fileID: 19011, guid: 0000000000000000f000000000000000, type: 0} + m_BitmapShader: {fileID: 9001, guid: 0000000000000000f000000000000000, type: 0} + m_SpriteShader: {fileID: 19012, guid: 0000000000000000f000000000000000, type: 0} + m_ICUDataAsset: {fileID: 0} + forceGammaRendering: 0 + textSettings: {fileID: 0} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/PanelSettings363.asset.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/PanelSettings363.asset.meta new file mode 100644 index 00000000000..f981942a3a9 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/PanelSettings363.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c1288931a5960b1489ff22a9b77ca091 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/Styles363.uss b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/Styles363.uss new file mode 100644 index 00000000000..64c17b89ce6 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/Styles363.uss @@ -0,0 +1,19 @@ +.WhiteRectangle { + width: 40px; + height: 40px; + position: absolute; + background-color: rgb(255, 255, 255); + background-size: 100% 100%; +} + +#OpacityContainer { + position: absolute; + width: 40px; + height: 40px; + background-color: rgb(0, 255, 0); + background-size: 40px 40px; +} + +.TestOpacity { + -unity-material: url("project://database/Assets/Scenes/363_UIToolkit_Misc/OpacityOverride363.shadergraph?fileID=-876546973899608171&guid=7cc114cad8443cc41995ecdfa0d5bff7&type=3#OpacityOverride363"); +} diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/Styles363.uss.meta b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/Styles363.uss.meta new file mode 100644 index 00000000000..d62fa817687 --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/Styles363.uss.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b7e751cc86011cb46acc3f69741b567e +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0} + disableValidation: 0 + unsupportedSelectorAction: 0 diff --git a/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/Template363.uxml b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/Template363.uxml new file mode 100644 index 00000000000..38e9cbd478f --- /dev/null +++ b/Tests/SRPTests/Projects/UniversalGraphicsTest_Foundation/Assets/Scenes/363_UIToolkit_Misc/Template363.uxml @@ -0,0 +1,13 @@ + +