aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTec <daniel112092@gmail.com>2020-07-18 13:01:56 +0200
committerTec <daniel112092@gmail.com>2020-07-18 13:01:56 +0200
commit69c8841a2f201cafcea26073d5d2da0613cc4dc1 (patch)
treea5fc9e2ce0c6d20c3283b68c5b9dcaad7189efc8 /src
parentd44e0b0c61384ca1a63f0dc322715d8a4e57678a (diff)
downloadGT5-Unofficial-69c8841a2f201cafcea26073d5d2da0613cc4dc1.tar.gz
GT5-Unofficial-69c8841a2f201cafcea26073d5d2da0613cc4dc1.tar.bz2
GT5-Unofficial-69c8841a2f201cafcea26073d5d2da0613cc4dc1.zip
Rework machines
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_ElementalContainer.java6
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_OverflowElemental.java20
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_decay.java2
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_dequantizer.java4
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_quantizer.java4
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/MultiblockControl.java68
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java62
7 files changed, 87 insertions, 79 deletions
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_ElementalContainer.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_ElementalContainer.java
index d0b9411773..bf84663058 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_ElementalContainer.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_ElementalContainer.java
@@ -43,7 +43,7 @@ public abstract class GT_MetaTileEntity_Hatch_ElementalContainer extends GT_Meta
protected cElementalInstanceStackMap content = new cElementalInstanceStackMap();
//float lifeTimeMult=1f;
public int postEnergize = 0;
- public float overflowMatter = 0f;
+ public double overflowMatter = 0f;
public short id = -1;
private byte deathDelay = 2;
@@ -80,7 +80,7 @@ public abstract class GT_MetaTileEntity_Hatch_ElementalContainer extends GT_Meta
super.saveNBTData(aNBT);
aNBT.setInteger("postEnergize", postEnergize);
//aNBT.setFloat("lifeTimeMult",lifeTimeMult);
- aNBT.setFloat("overflowMatter", overflowMatter);
+ aNBT.setDouble("OverflowMatter", overflowMatter);
aNBT.setTag("eM_Stacks", content.toNBT());
aNBT.setShort("eID", id);
}
@@ -90,7 +90,7 @@ public abstract class GT_MetaTileEntity_Hatch_ElementalContainer extends GT_Meta
super.loadNBTData(aNBT);
postEnergize = aNBT.getInteger("postEnergize");
//lifeTimeMult=aNBT.getFloat("lifeTimeMult");
- overflowMatter = aNBT.getFloat("overflowMatter");
+ overflowMatter = aNBT.getFloat("overflowMatter")+aNBT.getDouble("OverflowMatter");
id = aNBT.getShort("eID");
try {
content = cElementalInstanceStackMap.fromNBT(aNBT.getCompoundTag("eM_Stacks"));
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_OverflowElemental.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_OverflowElemental.java
index ad7f1fe159..a5e6dc4d5d 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_OverflowElemental.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_OverflowElemental.java
@@ -44,13 +44,13 @@ public class GT_MetaTileEntity_Hatch_OverflowElemental extends GT_MetaTileEntity
private static Textures.BlockIcons.CustomIcon EM_T_ACTIVE;
public static Textures.BlockIcons.CustomIcon MufflerEM;
public static Textures.BlockIcons.CustomIcon MufflerEMidle;
- private float overflowMatter;
- public final float overflowMax;
- private final float overflowDisperse;
+ private double overflowMatter;
+ public final double overflowMax;
+ private final double overflowDisperse;
private String clientLocale = "en_US";
- public GT_MetaTileEntity_Hatch_OverflowElemental(int aID, String aName, String aNameRegional, int aTier, float max) {
+ public GT_MetaTileEntity_Hatch_OverflowElemental(int aID, String aName, String aNameRegional, int aTier, double max) {
super(aID, aName, aNameRegional, aTier, 0, translateToLocal("gt.blockmachines.hatch.emmuffler.desc.0"));//Disposes excess elemental Matter
overflowMatter = max / 2;
overflowMax = max;
@@ -58,7 +58,7 @@ public class GT_MetaTileEntity_Hatch_OverflowElemental extends GT_MetaTileEntity
Util.setTier(aTier, this);
}
- public GT_MetaTileEntity_Hatch_OverflowElemental(String aName, int aTier, float max, String aDescription, ITexture[][][] aTextures) {
+ public GT_MetaTileEntity_Hatch_OverflowElemental(String aName, int aTier, double max, String aDescription, ITexture[][][] aTextures) {
super(aName, aTier, 0, aDescription, aTextures);
overflowMatter = max / 2;
overflowMax = max;
@@ -124,13 +124,13 @@ public class GT_MetaTileEntity_Hatch_OverflowElemental extends GT_MetaTileEntity
@Override
public void saveNBTData(NBTTagCompound aNBT) {
super.saveNBTData(aNBT);
- aNBT.setFloat("overflowMatter", overflowMatter);
+ aNBT.setDouble("OverflowMatter", overflowMatter);
}
@Override
public void loadNBTData(NBTTagCompound aNBT) {
super.loadNBTData(aNBT);
- overflowMatter = aNBT.getFloat("overflowMatter");
+ overflowMatter = aNBT.getFloat("overflowMatter")+aNBT.getDouble("OverflowMatter");
}
@Override
@@ -235,17 +235,17 @@ public class GT_MetaTileEntity_Hatch_OverflowElemental extends GT_MetaTileEntity
}
//Return - Should Explode
- public boolean addOverflowMatter(float matter) {
+ public boolean addOverflowMatter(double matter) {
overflowMatter += matter;
return overflowMatter > overflowMax;
}
- public float getOverflowMatter() {
+ public double getOverflowMatter() {
return overflowMatter;
}
//Return - Should Explode
- public boolean setOverflowMatter(float overflowMatter) {
+ public boolean setOverflowMatter(double overflowMatter) {
this.overflowMatter = overflowMatter;
return overflowMatter > overflowMax;
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_decay.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_decay.java
index d8ddc2c5b5..b5dc211f3a 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_decay.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_decay.java
@@ -144,7 +144,7 @@ public class GT_MetaTileEntity_EM_decay extends GT_MetaTileEntity_MultiblockBase
//System.out.println(stack.definition.getSymbol()+" "+stack.amount);
}
- float preMass = outputEM[0].getMass();
+ double preMass = outputEM[0].getMass();
outputEM[0].tickContent(1, 0, 1);
double energyDose = ((preMass - outputEM[0].getMass()) * URANIUM_MASS_TO_EU_PARTIAL);
eAmpereFlow = (long) ampereFlow.get();
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_dequantizer.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_dequantizer.java
index 1ba1389c80..11bc0fefd7 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_dequantizer.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_dequantizer.java
@@ -74,8 +74,8 @@ public class GT_MetaTileEntity_EM_dequantizer extends GT_MetaTileEntity_Multiblo
private void startRecipe(iHasElementalDefinition from, long energy) {
mMaxProgresstime = 20;
mEfficiencyIncrease = 10000;
- float mass = from.getMass();
- float euMult = Math.abs(mass / refMass);
+ double mass = from.getMass();
+ double euMult = Math.abs(mass / refMass);
eAmpereFlow = (int) Math.ceil(Math.sqrt(Math.sqrt(euMult)));
if (mass > refUnstableMass || from.getDefinition().getRawTimeSpan(energy) < STABLE_RAW_LIFE_TIME) {
mEUt = (int) -V[8];
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_quantizer.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_quantizer.java
index a04a960bf1..d6ab35cd4b 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_quantizer.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_quantizer.java
@@ -155,8 +155,8 @@ public class GT_MetaTileEntity_EM_quantizer extends GT_MetaTileEntity_Multiblock
private void startRecipe(iHasElementalDefinition into) {
mMaxProgresstime = 20;
mEfficiencyIncrease = 10000;
- float mass = into.getMass();
- float euMult = Math.abs(mass / refMass);
+ double mass = into.getMass();
+ double euMult = Math.abs(mass / refMass);
eAmpereFlow = (int) Math.ceil(Math.sqrt(Math.sqrt(euMult)));
if (mass > refUnstableMass || into.getDefinition().getRawTimeSpan(DEFAULT_ENERGY_LEVEL) < STABLE_RAW_LIFE_TIME) {
mEUt = (int) -V[8];
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/MultiblockControl.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/MultiblockControl.java
index 41bc0e5a37..8429bf4e67 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/MultiblockControl.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/MultiblockControl.java
@@ -5,68 +5,70 @@ package com.github.technus.tectech.thing.metaTileEntity.multi.base;
*/
public class MultiblockControl<T>{
- private final int[] controls=new int[7];
private final boolean shouldExplode;
- private final T values;
+ private final T value;
+ private final int eUt;
+ private final int amperes;
+ private final int requiredData;
+ private final int effIncrease;
+ private final int maxProgressTime;
+ private final int pollutionToAdd;
+ private final double excessMass;
- public MultiblockControl(T values, int EUt, int amperes, int requiredData, int effIncrease, int maxProgressTime){
- this.values = values;
- controls[0]=EUt;
- controls[1]=amperes;
- controls[2]=requiredData;
- controls[3]=effIncrease;
- controls[4]=maxProgressTime;
- shouldExplode=false;
+ public MultiblockControl(T value, int eUt, int amperes, int requiredData, int effIncrease, int maxProgressTime, int pollutionToAdd, double excessMass,boolean shouldExplode){
+ this.value = value;
+ this.eUt = eUt;
+ this.amperes = amperes;
+ this.requiredData = requiredData;
+ this.effIncrease = effIncrease;
+ this.maxProgressTime = maxProgressTime;
+ this.pollutionToAdd = pollutionToAdd;
+ this.excessMass = excessMass;
+ this.shouldExplode=shouldExplode;
}
- public MultiblockControl(T values, int EUt, int amperes, int requiredData, int effIncrease, int maxProgressTime, int pollutionToAdd, float excessMass){
- this.values = values;
- controls[0]=EUt;
- controls[1]=amperes;
- controls[2]=requiredData;
- controls[3]=effIncrease;
- controls[4]=maxProgressTime;
- controls[5]=pollutionToAdd;
- controls[6]=Float.floatToIntBits(excessMass);
- shouldExplode=false;
+ public MultiblockControl(T value, int eUt, int amperes, int requiredData, int effIncrease, int maxProgressTime, int pollutionToAdd, double excessMass){
+ this(value, eUt, amperes, requiredData, effIncrease, maxProgressTime,pollutionToAdd,excessMass,false);
}
- public MultiblockControl(float excessMass){
- this.values = null;
- controls[6]=Float.floatToIntBits(excessMass);
- shouldExplode=true;
+ public MultiblockControl(T value, int eUt, int amperes, int requiredData, int effIncrease, int maxProgressTime){
+ this(value,eUt,amperes,requiredData,effIncrease,maxProgressTime,0,0);
+ }
+
+ public MultiblockControl(double excessMass){
+ this(null,0,0,0,0,0,0,excessMass,true);
}
public T getValue() {
- return values;
+ return value;
}
public int getEUT(){
- return controls[0];
+ return eUt;
}
public int getAmperage(){
- return controls[1];
+ return amperes;
}
public int getRequiredData(){
- return controls[2];
+ return requiredData;
}
public int getEffIncrease(){
- return controls[3];
+ return effIncrease;
}
public int getMaxProgressTime(){
- return controls[4];
+ return maxProgressTime;
}
public int getPollutionToAdd(){
- return controls[5];
+ return pollutionToAdd;
}
- public float getExcessMass(){
- return Float.intBitsToFloat(controls[6]);
+ public double getExcessMass(){
+ return excessMass;
}
public boolean shouldExplode() {
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java
index 9612426598..c44e5a3d42 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/em_machine/Behaviour_Centrifuge.java
@@ -8,6 +8,7 @@ import com.github.technus.tectech.thing.metaTileEntity.multi.base.INameFunction;
import com.github.technus.tectech.thing.metaTileEntity.multi.base.IStatusFunction;
import com.github.technus.tectech.thing.metaTileEntity.multi.base.MultiblockControl;
import com.github.technus.tectech.thing.metaTileEntity.multi.base.Parameters;
+import com.github.technus.tectech.util.DoubleCount;
import java.util.Arrays;
@@ -20,7 +21,11 @@ import static com.github.technus.tectech.thing.metaTileEntity.multi.base.LedStat
*/
public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.IBehaviour {
private final byte tier;
- private float radius, maxRPM, maxRCF, maxForce, maxCapacity;
+ private double maxRPM;
+ private final double radius;
+ private final double maxRCF;
+ private final double maxForce;
+ private final double maxCapacity;
private Parameters.Group.ParameterIn settingRPM, settingFraction;
private final static INameFunction<GT_MetaTileEntity_EM_machine> rpmName= (gt_metaTileEntity_em_machine, iParameter) -> "RPM Setting";
private final IStatusFunction<GT_MetaTileEntity_EM_machine> rpmStatus= (gt_metaTileEntity_em_machine, iParameter) -> {
@@ -65,12 +70,12 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.IBehav
//6 to 12 recommended
public Behaviour_Centrifuge(int desiredTier) {
tier = (byte) desiredTier;
- radius = 0.5f - (12 - tier) / 64f;
- maxRCF = (float) (Math.pow(Math.E, tier) * 12);
- maxRPM = (float) Math.sqrt(maxRCF / (0.001118 * radius));
- float maxSafeMass = dAtomDefinition.getSomethingHeavy().getMass() * (1 << tier);
+ radius = 0.5D - (12D - tier) / 64D;
+ maxRCF = Math.pow(Math.E, tier) * 12D;
+ maxRPM = Math.sqrt(maxRCF / (0.001118D * radius));
+ double maxSafeMass = dAtomDefinition.getSomethingHeavy().getMass() * (1 << tier);
maxForce = maxSafeMass * maxRCF;// (eV/c^2 * m/s) / g
- maxCapacity = maxSafeMass * 4f * radius;// eV/c^2
+ maxCapacity = maxSafeMass * 4D * radius;// eV/c^2
}
private double getRCF(double RPM) {
@@ -78,19 +83,19 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.IBehav
}
private void addRandomly(cElementalInstanceStack me, cElementalInstanceStackMap[] toThis, int fractionCount) {
- long amountPerFraction = me.amount / fractionCount;
+ double amountPerFraction = DoubleCount.div(me.amount,fractionCount);
cElementalInstanceStack[] stacks = new cElementalInstanceStack[fractionCount];
for (int i = 0; i < fractionCount; i++) {
stacks[i] = me.clone();
stacks[i].amount = amountPerFraction;
toThis[i].putReplace(stacks[i]);
}
- int remainingAmount = (int) (me.amount % fractionCount);
- while (remainingAmount > 0) {
- int amountToAdd = TecTech.RANDOM.nextInt(remainingAmount) + 1;
- stacks[TecTech.RANDOM.nextInt(fractionCount)].amount += amountToAdd;
- remainingAmount -= amountToAdd;
- }
+ //int remainingAmount = (int) (me.amount % fractionCount);
+ //while (remainingAmount > 0) {
+ // int amountToAdd = TecTech.RANDOM.nextInt(remainingAmount) + 1;
+ // stacks[TecTech.RANDOM.nextInt(fractionCount)].amount += amountToAdd;
+ // remainingAmount -= amountToAdd;
+ //}
}
@Override
@@ -116,15 +121,16 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.IBehav
for (cElementalInstanceStack stack : stacks) {
inputMass += Math.abs(stack.getMass());
}
- float excessMass = 0;
+ double excessMass = 0;
while (inputMass > maxCapacity) {
cElementalInstanceStack randomStack = stacks[TecTech.RANDOM.nextInt(stacks.length)];
- int amountToRemove = TecTech.RANDOM.nextInt((int) randomStack.getAmount()) + 1;
- randomStack.amount -= amountToRemove;//mutates the parent InstanceStackMap
+ double amountToRemove = TecTech.RANDOM.nextDouble()/10D * randomStack.getAmount();
+ randomStack.amount=DoubleCount.sub(randomStack.amount,amountToRemove);//mutates the parent InstanceStackMap
if (randomStack.amount <= 0) {
input.remove(randomStack.definition);
+ stacks = input.values();
}
- float mass = Math.abs(randomStack.getDefinition().getMass()) * amountToRemove;
+ double mass = Math.abs(randomStack.getDefinition().getMass()) * amountToRemove;
excessMass += mass;
inputMass -= mass;
}
@@ -147,7 +153,7 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.IBehav
TecTech.LOGGER.info("mixingFactor "+mixingFactor);
}
- int mEut = (int) (Math.pow(settingRPM.get() / maxRPM, 3f) * V[tier]);
+ int mEut = (int) (Math.pow(settingRPM.get() / maxRPM, 3D) * V[tier]);
mEut = Math.max(mEut, 512);
mEut = -mEut;
int mTicks = (int) (20 * (inputMass / maxCapacity) * (fractionCount - 1));
@@ -158,8 +164,8 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.IBehav
stacks = input.takeAllToNewMap().values();//cleanup stacks
if (stacks.length > 1) {
Arrays.sort(stacks, (o1, o2) -> {
- float m1 = o1.definition.getMass();
- float m2 = o2.definition.getMass();
+ double m1 = o1.definition.getMass();
+ double m2 = o2.definition.getMass();
if (m1 < m2) return -1;
if (m1 > m2) return 1;
return o1.compareTo(o2);
@@ -169,17 +175,17 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.IBehav
for (cElementalInstanceStack stack : stacks) {
double tempMass=Math.abs(stack.getMass());
if(tempMass!=0) {
- long amount = stack.amount;
- stack.amount *= mixingFactor;
+ double amount = stack.amount;
+ stack.amount =DoubleCount.mul(stack.amount,mixingFactor);
addRandomly(stack, outputs, fractionCount);
- stack.amount = amount - stack.amount;
+ stack.amount = DoubleCount.sub(amount,stack.amount);
absMassPerOutput += tempMass;
}
}
//if(DEBUG_MODE){
// TecTech.LOGGER.info("absMass "+absMassPerOutput);
//}
- absMassPerOutput /= fractionCount;
+ absMassPerOutput =DoubleCount.div(absMassPerOutput,fractionCount);
if(DEBUG_MODE){
TecTech.LOGGER.info("absMassPerOutput "+absMassPerOutput);
}
@@ -190,7 +196,7 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.IBehav
for (int stackNo = 0; stackNo < stacks.length; stackNo++) {
if (stacks[stackNo] != null) {
double stackMass = Math.abs(stacks[stackNo].getMass());
- long amount = (long) (remaining/Math.abs(stacks[stackNo].definition.getMass()));
+ double amount = DoubleCount.div(remaining,Math.abs(stacks[stackNo].definition.getMass()));
//if(DEBUG_MODE){
// TecTech.LOGGER.info("stackMass "+stackMass);
// TecTech.LOGGER.info("defMass "+stacks[stackNo].definition.getMass());
@@ -201,15 +207,15 @@ public class Behaviour_Centrifuge implements GT_MetaTileEntity_EM_machine.IBehav
addRandomly(stacks[stackNo], outputs, fractionCount);
stacks[stackNo] = null;
} else if (amount >= stacks[stackNo].amount) {
- remaining -= stackMass;
+ remaining=DoubleCount.sub(remaining,stackMass);
outputs[fraction].putUnify(stacks[stackNo]);
stacks[stackNo] = null;
} else if (amount > 0) {
- remaining -= amount * stacks[stackNo].definition.getMass();
+ remaining=DoubleCount.sub(remaining,DoubleCount.mul(amount,stacks[stackNo].definition.getMass()));
cElementalInstanceStack clone = stacks[stackNo].clone();
clone.amount = amount;
outputs[fraction].putUnify(clone);
- stacks[stackNo].amount-=amount;
+ stacks[stackNo].amount=DoubleCount.sub(stacks[stackNo].amount,amount);
//if(DEBUG_MODE){
// TecTech.LOGGER.info("remainingAfter "+remaining);
// TecTech.LOGGER.info("amountCloneAfter "+clone.amount+"/"+stacks[stackNo].amount);