using System;
using System.Collections.Generic;
namespace Shared.SimpleControl.Phone
{
///
/// 后台中间界面
///
public class SystemMiddle : FrameLayout
{
///
/// 已升级
///
string text_Upgraded = "已升级";
///
/// 正在升级
///
string text_Upgrading = "正在升级";
///
/// 升级失败
///
string text_UpgradeFailed = "升级失败";
///
/// 未知版本
/// 无需升级 2022-12-08 14:23:07
///
string text_UnknownVersion = "无需升级";
///
/// 读取失败
///
string text_readFailure = "读取失败";
string text_reading = "读取中";
string text_search = "搜索并配置";
///
/// 中间界面
///
public VerticalScrolViewLayout VerticalScrolViewMiddle = new VerticalScrolViewLayout () {
Height = Application.GetRealHeight (846+80),
BackgroundColor = SkinStyle.Current.ViewColor
};
///
/// 初始化当前视图
///
public void Init ()
{
if(Language.CurrentLanguage != "Chinese") {
text_Upgraded = "Upgraded";
text_Upgrading = "Upgrading";
text_UpgradeFailed = "Upgrade failed";
text_UnknownVersion = "No upgrade required";
text_readFailure = "Read failure";
text_search = "Search and configure";
text_reading = "Reading";
}
VerticalScrolViewMiddle.BackgroundColor = SkinStyle.Current.ViewColor;
AddChidren (VerticalScrolViewMiddle);
InitBottomButton ();
}
///
/// 底部的按键,搜索网关
///
void InitBottomButton ()
{
///
/// 底部
///
Button AddSystemEquipmentButton = new Button () {
Y = Application.GetRealHeight (846 + 80),
Height = Application.GetRealHeight (90),
Text = text_search,
TextAlignment = TextAlignment.Center,
TextColor = SkinStyle.Current.TextColor1,
BackgroundColor = SkinStyle.Current.MainColor
};
AddChidren (AddSystemEquipmentButton);
AddSystemEquipmentButton.MouseUpEventHandler += (sender, e) => {
VerticalScrolViewMiddle.RemoveAll ();
CommonPage.FindGateway = true;
MainPage.Loading.Start ();
System.Threading.Tasks.Task.Run (() => {
try {
#region 搜索设备
CommonPage.LocalPhoneFindDevice = true;
CommonPage.RandomHigh = (byte)new Random ().Next (255);
CommonPage.RandomLow = (byte)new Random ().Next (255);
CommonPage.GateWayList.Clear ();
CommonPage.FindGateway = true;
//如果两次都没有数据反馈,就不读取
int readCount = 2;
while (0 < readCount) {
readCount--;
System.IO.MemoryStream ms = new System.IO.MemoryStream ();
ms.WriteByte (CommonPage.RandomHigh);
ms.WriteByte (CommonPage.RandomLow);
var list = CommonPage.GateWayList;
int tempCount = list.Count;
string s = ";";
for (int i = 0; i < list.Count; i++) {
Common common = list [i];
if (s.Contains (";" + common.SubnetID.ToString () + ":" + common.DeviceID.ToString ()))
continue;
s += common.SubnetID.ToString () + ":" + common.DeviceID.ToString () + ";";
ms.WriteByte (common.SubnetID);
ms.WriteByte (common.DeviceID);
}
Console.WriteLine ("搜索网关,搜索地址是:" + CommonPage.EndPoint.ToString () + " " + CommonPage.GateWayList.Count);
Control control = new Control ();
control.Send (new Target () {
IPEndPoint = CommonPage.EndPoint,
Command = Command.ReadGateway,
SubnetID = 0xFF,
DeviceID = 0xFF,
AddData = ms.ToArray ()
}, SendCount.Zero, false);
control.Send (new Target () {
IPEndPoint = new System.Net.IPEndPoint (new Net.NetWiFi ().BroadcastIpAddress, 6000),
Command = Command.ReadGateway,
SubnetID = 0xFF,
DeviceID = 0xFF,
AddData = ms.ToArray ()
}, SendCount.Zero, false);
System.Threading.Thread.Sleep (800);
//如果数量不相等,就重置次数
if (tempCount != CommonPage.GateWayList.Count) {
readCount = 2;
}
}
CommonPage.FindGateway = false;
Application.RunOnMainThread (() => {
ShowGateWayView ();
});
CommonPage.LocalPhoneFindDevice = false;
#endregion
} catch (Exception ex) {
Console.WriteLine (ex.ToString ());
} finally {
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
});
}
});
};
}
///
/// 显示出已经查找到的网关设备
///
public void ShowGateWayView ()
{
try {
foreach (var gateway in CommonPage.GateWayList) {
RowLayout wirelessView = new RowLayout () {
Height = Application.GetRealHeight (93),
BackgroundColor = SkinStyle.Current.ViewColor,
};
VerticalScrolViewMiddle.AddChidren (wirelessView);
showGatewayRow (gateway, wirelessView);
}
} catch (Exception ex) {
Console.WriteLine (ex.ToString ());
}
}
///
/// 显示网关
///
void showGatewayRow (Common common, RowLayout wirelessView)
{
int subnetID = common.SubnetID;
string remark = common.Name;
Button pointButton1 = new Button () {
Width = Application.GetRealHeight (13),
Height = Application.GetRealHeight (13),
X = Application.GetRealWidth (60),
UnSelectedImagePath = "Item/Point.png",
SelectedImagePath = "Item/PointSelected.png",
Gravity = Gravity.CenterVertical,
};
wirelessView.AddChidren (pointButton1);
Button nameButton1 = new Button () {
Width = Application.GetRealWidth (342),
Height = LayoutParams.MatchParent,
Text = remark,
TextAlignment = TextAlignment.CenterLeft,
X = pointButton1.Right + Application.GetRealWidth (20),
TextColor = SkinStyle.Current.TextColor1,
};
wirelessView.AddChidren (nameButton1);
Button rightButton1 = new Button () {
X = Application.GetRealWidth (480),
Width = Application.GetRealWidth (100),
Height = Application.GetRealHeight (40),
Gravity = Gravity.CenterVertical,
TextAlignment = TextAlignment.CenterLeft,
TextColor = SkinStyle.Current.TextColor1,
IsMoreLines = true,
TextSize = 12,
Text = text_reading
};
wirelessView.AddChidren (rightButton1);
new System.Threading.Thread (() => {
var serverIPBytes = Control.ControlBytesSendHasReturn (Command.ReadGatewayServerIP, common.SubnetID, common.DeviceID, new byte [] { });
if (serverIPBytes != null) {
try {
string serverIP1 = serverIPBytes [0].ToString () + "." + serverIPBytes [1].ToString () + "." +
serverIPBytes [2].ToString () + "." + serverIPBytes [3].ToString ();
string serverIP1Point = ((serverIPBytes [4] * 256) + serverIPBytes [5]).ToString ();
string serverIP2 = serverIPBytes [6].ToString () + "." + serverIPBytes [7].ToString () + "." +
serverIPBytes [8].ToString () + "." + serverIPBytes [9].ToString ();
string serverIP2Point = ((serverIPBytes [10] * 256) + serverIPBytes [11]).ToString ();
if (serverIP1 == "118.31.3.103" || serverIP2 == "118.31.3.103") {
Application.RunOnMainThread (() => {
rightButton1.Text = text_Upgraded;
rightButton1.TextColor = 0xFF00FF00;
return;
});
} else if (serverIP1 != "115.29.251.24" && serverIP2 != "115.29.251.24") {
Application.RunOnMainThread (() => {
rightButton1.Text = text_UnknownVersion;
rightButton1.TextColor = 0xFF00FF00;
return;
});
} else {
Application.RunOnMainThread (() => {
rightButton1.Text = text_Upgrading;
rightButton1.TextColor = 0xFF0000FF;
});
if (serverIP1 == "115.29.251.24") {
serverIP1 = "118.31.3.103";
serverIP1Point = "9999";
serverIPBytes [0] = 118;
serverIPBytes [1] = 31;
serverIPBytes [2] = 3;
serverIPBytes [3] = 103;
serverIPBytes [4] = Convert.ToByte (9999 / 256);
serverIPBytes [5] = Convert.ToByte (9999 % 256);
}
if (serverIP2 == "115.29.251.24") {
serverIP2 = "118.31.3.103";
serverIP2Point = "9999";
serverIPBytes [0 + 6] = 118;
serverIPBytes [1 + 6] = 31;
serverIPBytes [2 + 6] = 3;
serverIPBytes [3 + 6] = 103;
serverIPBytes [4 + 6] = Convert.ToByte (9999 / 256);
serverIPBytes [5 + 6] = Convert.ToByte (9999 % 256);
}
var mobytes = Control.ControlBytesSendHasReturn (Command.SetGateWayModelInternetInfo, common.SubnetID, common.DeviceID, serverIPBytes);
if (mobytes == null || mobytes [0] == 0xF5) {
Application.RunOnMainThread (() => {
Application.RunOnMainThread (() => {
rightButton1.Text = text_UpgradeFailed;
rightButton1.TextColor = 0x99ff0000;
});
});
} else {
Application.RunOnMainThread (() => {
Application.RunOnMainThread (() => {
rightButton1.Text = text_Upgraded;
rightButton1.TextColor = 0xFF00FF00;
});
});
}
}
} catch (Exception ex) {
Console.WriteLine ("一端口远程ip信息转译失败.");
}
} else {
Application.RunOnMainThread (() => {
rightButton1.Text = text_UnknownVersion;
rightButton1.TextColor = 0xFF00FF00;
});
}
}) { IsBackground = true }.Start ();
}
}
//public class SysMiddle : FrameLayout
//{
// ///
// /// 中间界面
// ///
// public VerticalScrolViewLayout VerticalScrolViewMiddle = new VerticalScrolViewLayout () {
// Height = Application.GetRealHeight (846),
// BackgroundColor = SkinStyle.Current.ViewColor
// };
// public static List hideListCommon = new List ();
// public void Init ()
// {
// RemoveAll ();
// VerticalScrolViewMiddle.BackgroundColor = SkinStyle.Current.ViewColor;
// AddChidren (VerticalScrolViewMiddle);
// ShowEquipmentBase ();
// }
// ///
// /// 显示设备列表信息.
// ///
// void ShowEquipmentBase ()
// {
// VerticalScrolViewMiddle.RemoveAll ();
// VerticalScrolViewMiddle.Height = Application.GetRealHeight (846 + 90);
// hideListCommon = new List ();
// List localFileList = IO.FileUtils.ReadFiles ();
// List offlineDeviceList = new List ();
// var gateWayListZ = localFileList.FindAll ((obj) => {
// return obj.Split ('_').Length == 4 && obj.StartsWith ("Equipment_") && obj.EndsWith ("_0");
// });
// var gateWayList = gateWayListZ.FindAll ((obj) => {
// return obj.Split ('_') [1].ToString () == DeviceType.OnePortBus.ToString () ||
// obj.Split ('_') [1].ToString () == DeviceType.RCU.ToString () ||
// obj.Split ('_') [1].ToString () == DeviceType.OnePortWirelessFR.ToString ();
// });
// foreach (var offline in localFileList) {
// if (offline.Split ('_').Length == 5 && offline.Split ('_') [0] == "Equipment") {
// var ss = IO.FileUtils.ReadFile (offline);
// Common commonOffline = Newtonsoft.Json.JsonConvert.DeserializeObject (CommonPage.MyEncodingUTF8.GetString (IO.FileUtils.ReadFile (offline)));
// if (commonOffline == null)
// continue;
// if (commonOffline.obj1 == 1) {
// offlineDeviceList.Add (offline);
// }
// }
// }
// foreach (var gatewayFileName in gateWayList) {
// if (offlineDeviceList.Contains (gatewayFileName))
// continue;
// var tempStrings = gatewayFileName.Split ('_');
// if (tempStrings [1].ToString () == DeviceType.OnePortBus.ToString () ||
// tempStrings [1].ToString () == DeviceType.RCU.ToString () ||
// tempStrings [1].ToString () == DeviceType.OnePortWirelessFR.ToString ()) {
// var one = System.Text.Encoding.UTF8.GetString (IO.FileUtils.ReadFile (gatewayFileName));
// if (one.Length == 0) {
// IO.FileUtils.DeleteFile (gatewayFileName);
// continue;
// }
// #region titel
// FrameLayout OnePortBusFrameLayout = new FrameLayout () {
// Height = Application.GetRealHeight (98),
// BackgroundColor = SkinStyle.Current.MainColor
// };
// VerticalScrolViewMiddle.AddChidren (OnePortBusFrameLayout);
// Button btnLineTop = new Button () {
// Height = 1,
// BackgroundColor = 0xFF2f2f2f,
// };
// VerticalScrolViewMiddle.AddChidren (btnLineTop);
// FrameLayout busEquipmentBody = new FrameLayout () {
// Height = 0,
// Tag = 0,
// };
// VerticalScrolViewMiddle.AddChidren (busEquipmentBody);
// Button button1 = new Button () {
// X = Application.GetRealWidth (20),
// Height = Application.GetRealHeight (66),
// Width = Application.GetRealWidth (66),
// UnSelectedImagePath = "Item/OnePort.png",
// SelectedImagePath = "Item/OnePortSelected.png",
// Gravity = Gravity.CenterVertical,
// };
// OnePortBusFrameLayout.AddChidren (button1);
// Button textButton1 = new Button () {
// X = Application.GetRealWidth (20) + button1.Right,
// Height = Application.GetRealHeight (41),
// Width = Application.GetRealWidth (400),
// Gravity = Gravity.CenterVertical,
// TextAlignment = TextAlignment.CenterLeft,
// TextColor = SkinStyle.Current.TextColor1,
// };
// OnePortBusFrameLayout.AddChidren (textButton1);
// Button downSelectedButton1 = new Button () {
// X = Application.GetRealWidth (550),
// Height = Application.GetRealHeight (46),
// Width = Application.GetRealWidth (47),
// UnSelectedImagePath = "Item/Down.png",
// SelectedImagePath = "Item/DownSelected.png",
// Gravity = Gravity.CenterVertical,
// IsSelected = true,
// };
// OnePortBusFrameLayout.AddChidren (downSelectedButton1);
// EventHandler eHandler = (sender, e) => {
// downSelectedButton1.IsSelected = !downSelectedButton1.IsSelected;
// if (downSelectedButton1.IsSelected) {
// busEquipmentBody.Height = Convert.ToInt32 (busEquipmentBody.Tag);
// } else {
// busEquipmentBody.Height = 0;
// }
// };
// downSelectedButton1.MouseUpEventHandler += eHandler;
// button1.MouseUpEventHandler += eHandler;
// textButton1.MouseUpEventHandler += eHandler;
// #endregion
// if (tempStrings [1].ToString () == DeviceType.OnePortWirelessFR.ToString ()) {
// var onePortWirelessFR = Newtonsoft.Json.JsonConvert.DeserializeObject (one);
// textButton1.Text = onePortWirelessFR.Name;
// button1.SelectedImagePath = "Item/WirelessSelected.png";
// button1.UnSelectedImagePath = "Item/Wireless.png";
// } else if (tempStrings [1].ToString () == DeviceType.OnePortBus.ToString ()) {
// var onePortBus = Newtonsoft.Json.JsonConvert.DeserializeObject (one);
// textButton1.Text = onePortBus.Name;
// button1.SelectedImagePath = "Item/OnePortSelected.png";
// button1.UnSelectedImagePath = "Item/OnePort.png";
// } else if (tempStrings [1].ToString () == DeviceType.RCU.ToString ()) {
// var rcu = Newtonsoft.Json.JsonConvert.DeserializeObject (one);
// textButton1.Text = rcu.Name;
// button1.SelectedImagePath = "Item/OnePortSelected.png";
// button1.UnSelectedImagePath = "Item/OnePort.png";
// }
// button1.IsSelected = false;
// int equipmentHeight = 0;
// int count = 0;
// foreach (var deviceFile in localFileList) {
// if (tempStrings [1].ToString () != DeviceType.RCU.ToString ()) {
// if (deviceFile == gatewayFileName
// || deviceFile.Split ('_') [0] != "Equipment"
// || deviceFile.Split ('_').Length != 4) {
// continue;
// }
// } else {
// if (deviceFile.Split ('_') [0] != "Equipment" || deviceFile.Split ('_').Length != 4) {
// continue;
// }
// }
// if (offlineDeviceList.Contains (deviceFile))
// continue;
// if (deviceFile.Split ('_') [2] != tempStrings [2]) {
// continue;
// }
// string localFileType = deviceFile.Split ('_') [1];
// byte [] equipmentUsefullBytes = IO.FileUtils.ReadFile (deviceFile);
// string equipmentString;
// Common common = null;
// equipmentString = CommonPage.MyEncodingUTF8.GetString (equipmentUsefullBytes);
// common = Newtonsoft.Json.JsonConvert.DeserializeObject (equipmentString);
// if (common == null) {
// continue;
// }
// if (common.isMixBox) {
// hideListCommon.Add (common);
// } else {
// RowLayout frameLayout = new RowLayout () {
// Height = Application.GetRealHeight (93),
// };
// frameLayout.Y = count++ * frameLayout.Height;
// busEquipmentBody.AddChidren (frameLayout);
// Button btnDelFile = new Button () {
// TextID = R.MyInternationalizationString.Del,
// BackgroundColor = SkinStyle.Current.DelColor
// };
// btnDelFile.MouseUpEventHandler += (sender, e) => {
// Alert alert = new Alert ("", Language.StringByID (R.MyInternationalizationString.TipDeleteEquipmentMessage)
// , Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim));
// alert.Show ();
// alert.ResultEventHandler += ( sender1, e1) => {
// if (e1) {
// //"_" + deviceFile.Split ('_') [1] +
// string delFlag = "_" + deviceFile.Split ('_') [2] + "_" + deviceFile.Split ('_') [3];
// var delFile = IO.FileUtils.ReadFiles ().FindAll ((w) => {
// return w.Contains (delFlag);
// });
// for (int i = 0; i < delFile.Count; i++) {
// IO.FileUtils.DeleteFile (delFile [i]);
// }
// ShowEquipmentBase ();
// }
// };
// };
// frameLayout.AddRightView (btnDelFile);
// busEquipmentBody.Height += Application.GetRealHeight (93);
// equipmentHeight += Application.GetRealHeight (93);
// busEquipmentBody.Tag = equipmentHeight;
// Button pointButton = new Button () {
// Width = Application.GetRealHeight (13),
// Height = Application.GetRealHeight (13),
// X = Application.GetRealWidth (80),
// UnSelectedImagePath = "Item/Point.png",
// SelectedImagePath = "Item/PointSelected.png",
// Gravity = Gravity.CenterVertical,
// };
// frameLayout.AddChidren (pointButton);
// Button btnName = new Button () {
// Width = Application.GetRealWidth (642),
// Height = LayoutParams.MatchParent,
// Text = common.Name,
// TextAlignment = TextAlignment.CenterLeft,
// X = pointButton.Right + Application.GetRealWidth (20),
// TextColor = SkinStyle.Current.TextColor1
// };
// frameLayout.AddChidren (btnName);
// Button btnRight = new Button () {
// X = Application.GetRealWidth (550),
// Width = Application.GetRealWidth (28),
// Height = Application.GetRealHeight (40),
// Gravity = Gravity.CenterVertical,
// UnSelectedImagePath = "Item/Right.png",
// SelectedImagePath = "Item/RightSelected.png",
// };
// frameLayout.AddChidren (btnRight);
// EventHandler mouseEvent = (sender, e) => {
// };
// btnRight.MouseUpEventHandler += mouseEvent;
// btnName.MouseUpEventHandler += mouseEvent;
// frameLayout.MouseUpEventHandler += mouseEvent;
// }
// }
// }
// }
// if (offlineDeviceList.Count != 0) {
// #region titel
// FrameLayout OnePortBusFrameLayout = new FrameLayout () {
// Height = Application.GetRealHeight (98),
// BackgroundColor = SkinStyle.Current.MainColor
// };
// VerticalScrolViewMiddle.AddChidren (OnePortBusFrameLayout);
// Button btnLineTop = new Button () {
// Height = 1,
// BackgroundColor = 0xFF2f2f2f,
// };
// VerticalScrolViewMiddle.AddChidren (btnLineTop);
// FrameLayout busEquipmentBody = new FrameLayout () {
// Height = 0,
// Tag = 0,
// };
// VerticalScrolViewMiddle.AddChidren (busEquipmentBody);
// Button button1 = new Button () {
// X = Application.GetRealWidth (20),
// Height = Application.GetRealHeight (66),
// Width = Application.GetRealWidth (66),
// UnSelectedImagePath = "Item/OnePort.png",
// SelectedImagePath = "Item/OnePortSelected.png",
// Gravity = Gravity.CenterVertical,
// };
// OnePortBusFrameLayout.AddChidren (button1);
// Button textButton1 = new Button () {
// X = Application.GetRealWidth (20) + button1.Right,
// Height = Application.GetRealHeight (41),
// Width = Application.GetRealWidth (400),
// Gravity = Gravity.CenterVertical,
// TextAlignment = TextAlignment.CenterLeft,
// TextID = R.MyInternationalizationString.OfflineDevice,
// TextColor = SkinStyle.Current.TextColor1
// };
// OnePortBusFrameLayout.AddChidren (textButton1);
// Button downSelectedButton1 = new Button () {
// X = Application.GetRealWidth (550),
// Height = Application.GetRealHeight (46),
// Width = Application.GetRealWidth (47),
// UnSelectedImagePath = "Item/Down.png",
// SelectedImagePath = "Item/DownSelected.png",
// Gravity = Gravity.CenterVertical,
// IsSelected = true,
// };
// OnePortBusFrameLayout.AddChidren (downSelectedButton1);
// EventHandler eHandler = (sender, e) => {
// downSelectedButton1.IsSelected = !downSelectedButton1.IsSelected;
// if (downSelectedButton1.IsSelected) {
// busEquipmentBody.Height = Convert.ToInt32 (busEquipmentBody.Tag);
// } else {
// busEquipmentBody.Height = 0;
// }
// };
// downSelectedButton1.MouseUpEventHandler += eHandler;
// button1.MouseUpEventHandler += eHandler;
// textButton1.MouseUpEventHandler += eHandler;
// #endregion
// int count = 0;
// int equipmentHeight = 0;
// foreach (var offlineDevice in offlineDeviceList) {
// string localFileType = offlineDevice.Split ('_') [1];
// byte [] equipmentUsefullBytes = IO.FileUtils.ReadFile (offlineDevice);
// string equipmentString;
// Common common = null;
// //设备界面要显示的设备,必须在这里添加显示
// equipmentString = CommonPage.MyEncodingUTF8.GetString (equipmentUsefullBytes);
// common = Newtonsoft.Json.JsonConvert.DeserializeObject (equipmentString);
// if (common == null) {
// continue;
// }
// if (common.isMixBox) {
// hideListCommon.Add (common);
// } else {
// RowLayout frameLayout = new RowLayout () {
// Height = Application.GetRealHeight (93),
// };
// frameLayout.Y = count++ * frameLayout.Height;
// busEquipmentBody.AddChidren (frameLayout);
// Button btnDelFile = new Button () {
// TextID = R.MyInternationalizationString.Del,
// BackgroundColor = SkinStyle.Current.DelColor
// };
// btnDelFile.MouseUpEventHandler += (sender, e) => {
// Alert alert = new Alert ("", Language.StringByID (R.MyInternationalizationString.TipDeleteEquipmentMessage)
// , Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim));
// alert.Show ();
// alert.ResultEventHandler += ( sender1, e1) => {
// if (e1) {
// IO.FileUtils.DeleteFile (offlineDevice);
// ShowEquipmentBase ();
// }
// };
// };
// frameLayout.AddRightView (btnDelFile);
// busEquipmentBody.Height += Application.GetRealHeight (93);
// equipmentHeight += Application.GetRealHeight (93);
// busEquipmentBody.Tag = equipmentHeight;
// Button pointButton = new Button () {
// Width = Application.GetRealHeight (13),
// Height = Application.GetRealHeight (13),
// X = Application.GetRealWidth (80),
// UnSelectedImagePath = "Item/Point.png",
// SelectedImagePath = "Item/PointSelected.png",
// Gravity = Gravity.CenterVertical,
// };
// frameLayout.AddChidren (pointButton);
// Button btnName = new Button () {
// Width = Application.GetRealWidth (642),
// Height = LayoutParams.MatchParent,
// Text = common.Name,
// TextAlignment = TextAlignment.CenterLeft,
// X = pointButton.Right + Application.GetRealWidth (20),
// TextColor = SkinStyle.Current.TextColor1
// };
// frameLayout.AddChidren (btnName);
// }
// }
// }
// }
//}
}