// Date: 2/5/2012 10:11:18 AM
// Template version 1.1
// Java generated by Techne
// Keep in mind that you still need to fill in some blanks
// - ZeuX
package twilightforest.client.model.entity;

import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.model.HierarchicalModel;
import net.minecraft.client.model.geom.ModelPart;
import net.minecraft.client.model.geom.PartPose;
import net.minecraft.client.model.geom.builders.CubeListBuilder;
import net.minecraft.client.model.geom.builders.LayerDefinition;
import net.minecraft.client.model.geom.builders.MeshDefinition;
import net.minecraft.client.model.geom.builders.PartDefinition;
import net.minecraft.util.Mth;
import org.jetbrains.annotations.Nullable;
import twilightforest.client.JappaPackReloadListener;
import twilightforest.entity.boss.Hydra;

public class HydraModel extends HierarchicalModel<Hydra> {

	private final ModelPart root;
	private final ModelPart body;
	private final ModelPart tail;
	private final ModelPart rightLeg;
	private final ModelPart leftLeg;

	@Nullable
	private Hydra hydra;

	public HydraModel(ModelPart root) {
		this.root = root;
		this.body = root.getChild("body");
		this.tail = root.getChild("tail_1");
		this.rightLeg = root.getChild("right_leg");
		this.leftLeg = root.getChild("left_leg");
	}

	public static LayerDefinition checkForPack() {
		return JappaPackReloadListener.INSTANCE.isJappaPackLoaded() ? createJappaModel() : create();
	}

	private static LayerDefinition create() {
		MeshDefinition meshdefinition = new MeshDefinition();
		PartDefinition partdefinition = meshdefinition.getRoot();

		partdefinition.addOrReplaceChild("body", CubeListBuilder.create()
				.texOffs(0, 0)
				.addBox(-48.0F, 0.0F, 0.0F, 96.0F, 96.0F, 40.0F),
			PartPose.offsetAndRotation(0.0F, -12.0F, 0.0F, 1.22173F, 0.0F, 0.0F));

		partdefinition.addOrReplaceChild("right_leg", CubeListBuilder.create()
				.texOffs(0, 136)
				.addBox(-16.0F, 0.0F, -16.0F, 32.0F, 48.0F, 32.0F)
				.texOffs(184, 200)
				.addBox(-20.0F, 40.0F, -20.0F, 8.0F, 8.0F, 8.0F)
				.texOffs(184, 200)
				.addBox(-4.0F, 40.0F, -22.0F, 8.0F, 8.0F, 8.0F)
				.texOffs(184, 200)
				.addBox(12.0F, 40.0F, -20.0F, 8.0F, 8.0F, 8.0F),
			PartPose.offset(48.0F, -24.0F, 0.0F));

		partdefinition.addOrReplaceChild("left_leg", CubeListBuilder.create().mirror()
				.texOffs(0, 136)
				.addBox(-16.0F, 0.0F, -16.0F, 32.0F, 48.0F, 32.0F)
				.texOffs(184, 200)
				.addBox(-20.0F, 40.0F, -20.0F, 8.0F, 8.0F, 8.0F)
				.texOffs(184, 200)
				.addBox(-4.0F, 40.0F, -22.0F, 8.0F, 8.0F, 8.0F)
				.texOffs(184, 200)
				.addBox(12.0F, 40.0F, -20.0F, 8.0F, 8.0F, 8.0F),
			PartPose.offset(-48.0F, -24.0F, 0.0F));

		var tail1 = partdefinition.addOrReplaceChild("tail_1", CubeListBuilder.create()
				.texOffs(128, 136)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -28.0F, -11.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(0.0F, 6.0F, 108.0F));

		var tail2 = tail1.addOrReplaceChild("tail_2", CubeListBuilder.create()
				.texOffs(128, 136)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -28.0F, -11.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(0.0F, 0.0F, 32.0F));

		var tail3 = tail2.addOrReplaceChild("tail_3", CubeListBuilder.create()
				.texOffs(128, 136)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -28.0F, -11.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(0.0F, 0.0F, 32.0F));

		tail3.addOrReplaceChild("tail_4", CubeListBuilder.create()
				.texOffs(128, 136)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -28.0F, -11.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(0.0F, 0.0F, 32.0F));

		var head1 = partdefinition.addOrReplaceChild("head_1", CubeListBuilder.create()
				.texOffs(272, 0)
				.addBox(-16.0F, -14.0F, -32.0F, 32.0F, 24.0F, 32.0F)
				.texOffs(272, 56)
				.addBox(-15.0F, -2.0F, -56.0F, 30.0F, 12.0F, 24.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -30.0F, -12.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(-74.0F, -100.0F, -32.0F));

		head1.addOrReplaceChild("jaw_1", CubeListBuilder.create()
				.texOffs(272, 92)
				.addBox(-15.0F, 0.0F, -48.0F, 30.0F, 8.0F, 48.0F),
			PartPose.offset(0.0F, 10.0F, -4.0F));

		head1.addOrReplaceChild("frill_1", CubeListBuilder.create()
				.texOffs(272, 200)
				.addBox(-24.0F, -40.0F, 0.0F, 48.0F, 48.0F, 4.0F),
			PartPose.offsetAndRotation(0.0F, 0.0F, -10.0F, -0.5235988F, 0.0F, 0.0F));

		var neck1a = partdefinition.addOrReplaceChild("neck_1a", CubeListBuilder.create()
				.texOffs(128, 136)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -24.0F, 0.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(-42.0F, -48.0F, 0.0F));

		var neck1b = neck1a.addOrReplaceChild("neck_1b", CubeListBuilder.create()
				.texOffs(128, 136)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -24.0F, 0.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(-16.0F, -16.0F, -16.0F));

		neck1b.addOrReplaceChild("neck_1c", CubeListBuilder.create()
				.texOffs(128, 136)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -24.0F, 0.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(-16.0F, -16.0F, -16.0F));

		var head2 = partdefinition.addOrReplaceChild("head_2", CubeListBuilder.create()
				.texOffs(272, 0)
				.addBox(-16.0F, -14.0F, -32.0F, 32.0F, 24.0F, 32.0F)
				.texOffs(272, 56)
				.addBox(-15.0F, -2.0F, -56.0F, 30.0F, 12.0F, 24.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -30.0F, -12.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(0.0F, -116.0F, -32.0F));

		head2.addOrReplaceChild("jaw_2", CubeListBuilder.create()
				.texOffs(272, 92)
				.addBox(-15.0F, 0.0F, -48.0F, 30.0F, 8.0F, 48.0F),
			PartPose.offset(0.0F, 10.0F, -4.0F));

		head2.addOrReplaceChild("frill_2", CubeListBuilder.create()
				.texOffs(272, 200)
				.addBox(-24.0F, -40.0F, 0.0F, 48.0F, 48.0F, 4.0F),
			PartPose.offsetAndRotation(0.0F, 0.0F, -10.0F, -0.5235988F, 0.0F, 0.0F));

		var neck2a = partdefinition.addOrReplaceChild("neck_2a", CubeListBuilder.create()
				.texOffs(128, 136)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -24.0F, 0.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(0.0F, -48.0F, 0.0F));

		var neck2b = neck2a.addOrReplaceChild("neck_2b", CubeListBuilder.create()
				.texOffs(128, 136)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -24.0F, 0.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(-0.0F, -24.0F, -16.0F));

		neck2b.addOrReplaceChild("neck_2c", CubeListBuilder.create()
				.texOffs(128, 136)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -24.0F, 0.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(0.0F, -24.0F, -16.0F));

		var head3 = partdefinition.addOrReplaceChild("head_3", CubeListBuilder.create()
				.texOffs(272, 0)
				.addBox(-16.0F, -14.0F, -32.0F, 32.0F, 24.0F, 32.0F)
				.texOffs(272, 56)
				.addBox(-15.0F, -2.0F, -56.0F, 30.0F, 12.0F, 24.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -30.0F, -12.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(74.0F, -100.0F, -32.0F));

		head3.addOrReplaceChild("jaw_3", CubeListBuilder.create()
				.texOffs(272, 92)
				.addBox(-15.0F, 0.0F, -48.0F, 30.0F, 8.0F, 48.0F),
			PartPose.offset(0.0F, 10.0F, -4.0F));

		head3.addOrReplaceChild("frill_3", CubeListBuilder.create()
				.texOffs(272, 200)
				.addBox(-24.0F, -40.0F, 0.0F, 48.0F, 48.0F, 4.0F),
			PartPose.offsetAndRotation(0.0F, 0.0F, -10.0F, -0.5235988F, 0.0F, 0.0F));

		var neck3a = partdefinition.addOrReplaceChild("neck_3a", CubeListBuilder.create()
				.texOffs(128, 136)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -24.0F, 0.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(42.0F, -48.0F, 0.0F));

		var neck3b = neck3a.addOrReplaceChild("neck_3b", CubeListBuilder.create()
				.texOffs(128, 136)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -24.0F, 0.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(16.0F, -16.0F, -16.0F));

		neck3b.addOrReplaceChild("neck_3c", CubeListBuilder.create()
				.texOffs(128, 136)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(128, 200)
				.addBox(-2.0F, -24.0F, 0.0F, 4.0F, 24.0F, 24.0F),
			PartPose.offset(16.0F, -16.0F, -16.0F));

		return LayerDefinition.create(meshdefinition, 512, 256);
	}

	private static LayerDefinition createJappaModel() {
		MeshDefinition meshdefinition = new MeshDefinition();
		PartDefinition partdefinition = meshdefinition.getRoot();

		var head1 = partdefinition.addOrReplaceChild("head_1", CubeListBuilder.create()
				.texOffs(260, 64)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(236, 128)
				.addBox(-16.0F, -2.0F, -40.0F, 32.0F, 10.0F, 24.0F)
				.texOffs(356, 70)
				.addBox(-12.0F, 8.0F, -36.0F, 24.0F, 6.0F, 20.0F),
			PartPose.offset(-74.0F, -100.0F, -56.0F));

		var head2 = partdefinition.addOrReplaceChild("head_2", CubeListBuilder.create()
				.texOffs(260, 64)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(236, 128)
				.addBox(-16.0F, -2.0F, -40.0F, 32.0F, 10.0F, 24.0F)
				.texOffs(356, 70)
				.addBox(-12.0F, 8.0F, -36.0F, 24.0F, 6.0F, 20.0F),
			PartPose.offset(0.0F, -116.0F, -56.0F));

		var head3 = partdefinition.addOrReplaceChild("head_3", CubeListBuilder.create()
				.texOffs(260, 64)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(236, 128)
				.addBox(-16.0F, -2.0F, -40.0F, 32.0F, 10.0F, 24.0F)
				.texOffs(356, 70)
				.addBox(-12.0F, 8.0F, -36.0F, 24.0F, 6.0F, 20.0F),
			PartPose.offset(74.0F, -100.0F, -56.0F));

		head1.addOrReplaceChild("mouth_1", CubeListBuilder.create()
				.texOffs(240, 162)
				.addBox(-15.0F, 0.0F, -24.0F, 30.0F, 8.0F, 24.0F),
			PartPose.offset(0.0F, 8.0F, -16.0F));

		head2.addOrReplaceChild("mouth_2", CubeListBuilder.create()
				.texOffs(240, 162)
				.addBox(-15.0F, 0.0F, -24.0F, 30.0F, 8.0F, 24.0F),
			PartPose.offset(0.0F, 8.0F, -16.0F));

		head3.addOrReplaceChild("mouth_3", CubeListBuilder.create()
				.texOffs(240, 162)
				.addBox(-15.0F, 0.0F, -24.0F, 30.0F, 8.0F, 24.0F),
			PartPose.offset(0.0F, 8.0F, -16.0F));

		head1.addOrReplaceChild("plate_1", CubeListBuilder.create()
				.texOffs(388, 0)
				.addBox(-24.0F, -48.0F, 0.0F, 48.0F, 48.0F, 6.0F)
				.texOffs(220, 0)
				.addBox(-4.0F, -32.0F, -8.0F, 8.0F, 32.0F, 8.0F),
			PartPose.offsetAndRotation(0.0F, 0.0F, -1.0F, -0.7853981633974483F, 0.0F, 0.0F));

		head2.addOrReplaceChild("plate_2", CubeListBuilder.create()
				.texOffs(388, 0)
				.addBox(-24.0F, -48.0F, 0.0F, 48.0F, 48.0F, 6.0F)
				.texOffs(220, 0)
				.addBox(-4.0F, -32.0F, -8.0F, 8.0F, 32.0F, 8.0F),
			PartPose.offsetAndRotation(0.0F, 0.0F, -1.0F, -0.7853981633974483F, 0.0F, 0.0F));

		head3.addOrReplaceChild("plate_3", CubeListBuilder.create()
				.texOffs(388, 0)
				.addBox(-24.0F, -48.0F, 0.0F, 48.0F, 48.0F, 6.0F)
				.texOffs(220, 0)
				.addBox(-4.0F, -32.0F, -8.0F, 8.0F, 32.0F, 8.0F),
			PartPose.offsetAndRotation(0.0F, 0.0F, -1.0F, -0.7853981633974483F, 0.0F, 0.0F));

		var neck1 = partdefinition.addOrReplaceChild("neck_1", CubeListBuilder.create()
				.texOffs(260, 0).addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(0, 0).addBox(-2.0F, -24.0F, 0.0F, 4.0F, 8.0F, 16.0F),
			PartPose.offset(-42.0F, -48.0F, 0.0F));

		var neck2 = partdefinition.addOrReplaceChild("neck_2", CubeListBuilder.create()
				.texOffs(260, 0).addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(0, 0).addBox(-2.0F, -24.0F, 0.0F, 4.0F, 8.0F, 16.0F),
			PartPose.offset(0.0F, -48.0F, 0.0F));

		var neck3 = partdefinition.addOrReplaceChild("neck_3", CubeListBuilder.create()
				.texOffs(260, 0).addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(0, 0).addBox(-2.0F, -24.0F, 0.0F, 4.0F, 8.0F, 16.0F),
			PartPose.offset(42.0F, -48.0F, 0.0F));

		var neck4 = neck1.addOrReplaceChild("neck_4", CubeListBuilder.create()
				.texOffs(260, 0).addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(0, 0).addBox(-2.0F, -24.0F, 0.0F, 4.0F, 8.0F, 16.0F),
			PartPose.offset(-16.0F, -16.0F, -16.0F));

		var neck5 = neck2.addOrReplaceChild("neck_5", CubeListBuilder.create()
				.texOffs(260, 0).addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(0, 0).addBox(-2.0F, -24.0F, 0.0F, 4.0F, 8.0F, 16.0F),
			PartPose.offset(0.0F, -24.0F, -16.0F));

		var neck6 = neck3.addOrReplaceChild("neck_6", CubeListBuilder.create()
				.texOffs(260, 0).addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(0, 0).addBox(-2.0F, -24.0F, 0.0F, 4.0F, 8.0F, 16.0F),
			PartPose.offset(16.0F, -16.0F, -16.0F));

		neck4.addOrReplaceChild("neck_7", CubeListBuilder.create()
				.texOffs(260, 0).addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(0, 0).addBox(-2.0F, -24.0F, 0.0F, 4.0F, 8.0F, 16.0F),
			PartPose.offset(-16.0F, -16.0F, -16.0F));

		neck5.addOrReplaceChild("neck_8", CubeListBuilder.create()
				.texOffs(260, 0).addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(0, 0).addBox(-2.0F, -24.0F, 0.0F, 4.0F, 8.0F, 16.0F),
			PartPose.offset(0.0F, -24.0F, -16.0F));

		neck6.addOrReplaceChild("neck_9", CubeListBuilder.create()
				.texOffs(260, 0).addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(0, 0).addBox(-2.0F, -24.0F, 0.0F, 4.0F, 8.0F, 16.0F),
			PartPose.offset(16.0F, -16.0F, -16.0F));

		partdefinition.addOrReplaceChild("body", CubeListBuilder.create()
				.texOffs(0, 0)
				.addBox(-45.0F, -12.0F, -20.0F, 90.0F, 96.0F, 40.0F)
				.texOffs(88, 136)
				.addBox(-2.0F, 20.0F, 20.0F, 4.0F, 16.0F, 12.0F)
				.texOffs(120, 136)
				.addBox(-2.0F, 48.0F, 20.0F, 4.0F, 16.0F, 12.0F),
			PartPose.offsetAndRotation(0.0F, -32.0F, 0.0F, 1.117010721276371F, 0.0F, 0.0F));

		partdefinition.addOrReplaceChild("right_leg", CubeListBuilder.create()
				.texOffs(0, 136)
				.addBox(-14.0F, -8.0F, -16.0F, 28.0F, 52.0F, 32.0F)
				.texOffs(0, 220)
				.addBox(-14.0F, 36.0F, -22.0F, 28.0F, 8.0F, 6.0F),
			PartPose.offset(-40.0F, -20.0F, -12.0F));

		partdefinition.addOrReplaceChild("left_leg", CubeListBuilder.create()
				.texOffs(120, 136)
				.addBox(-14.0F, -8.0F, -16.0F, 28.0F, 52.0F, 32.0F)
				.texOffs(68, 220)
				.addBox(-14.0F, 36.0F, -22.0F, 28.0F, 8.0F, 6.0F),
			PartPose.offset(40.0F, -20.0F, -12.0F));

		var tail1 = partdefinition.addOrReplaceChild("tail_1", CubeListBuilder.create()
				.texOffs(260, 0)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(0, 0)
				.addBox(-2.0F, -24.0F, 0.0F, 4.0F, 8.0F, 16.0F),
			PartPose.offset(0.0F, 8.0F, 80.0F));

		var tail2 = tail1.addOrReplaceChild("tail_2", CubeListBuilder.create()
				.texOffs(260, 0)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(0, 0)
				.addBox(-2.0F, -24.0F, 0.0F, 4.0F, 8.0F, 16.0F),
			PartPose.offset(0.0F, 0.0F, 32.0F));

		var tail3 = tail2.addOrReplaceChild("tail_3", CubeListBuilder.create()
				.texOffs(260, 0)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(0, 0)
				.addBox(-2.0F, -24.0F, 0.0F, 4.0F, 8.0F, 16.0F),
			PartPose.offset(0.0F, 0.0F, 32.0F));

		tail3.addOrReplaceChild("tail_4", CubeListBuilder.create()
				.texOffs(260, 0)
				.addBox(-16.0F, -16.0F, -16.0F, 32.0F, 32.0F, 32.0F)
				.texOffs(0, 0)
				.addBox(-2.0F, -24.0F, 0.0F, 4.0F, 8.0F, 16.0F),
			PartPose.offset(0.0F, 0.0F, 32.0F));

		return LayerDefinition.create(meshdefinition, 512, 256);
	}

	@Override
	public ModelPart root() {
		return this.root;
	}

	@Override
	public void renderToBuffer(PoseStack stack, VertexConsumer consumer, int light, int overlay, int color) {
		if (this.hydra != null && this.hydra.renderFakeHeads) {
			super.renderToBuffer(stack, consumer, light, overlay, color);
		} else {
			this.rightLeg.render(stack, consumer, light, overlay, color);
			this.leftLeg.render(stack, consumer, light, overlay, color);
			this.body.render(stack, consumer, light, overlay, color);
			this.tail.render(stack, consumer, light, overlay, color);
		}
		this.hydra = null;
	}

	@Override
	public void setupAnim(Hydra entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) {
		this.hydra = entity;
		this.rightLeg.xRot = Mth.cos(limbSwing * 0.6662F) * 1.4F * limbSwingAmount;
		this.leftLeg.xRot = Mth.cos(limbSwing * 0.6662F + Mth.PI) * 1.4F * limbSwingAmount;
	}
}
