DataVariables.cs 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace MECF.Framework.Common.FAServices
  7. {
  8. public static class DataVariables
  9. {
  10. public const string AlarmsEnabled = "AlarmsEnabled";
  11. public const string AlarmsSet = "AlarmsSet";
  12. public const string Clock = "Clock";
  13. public const string ControlState = "ControlState";
  14. public const string EventsEnabled = "EventsEnabled";
  15. public const string PPExecName = "PPExecName";
  16. public const string PreviousProcessState = "PreviousProcessState";
  17. public const string ProcessState = "ProcessState";
  18. public const string RecipeEndDataSummary = "RecipeEndDataSummary";
  19. public const string RecipeStepEndDataSummary = "RecipeStepEndDataSummary";
  20. public const string EventLimit = "EventLimit";
  21. public const string LimitVariable = "LimitVariable";
  22. public const string PPChangeName = "PPChangeName";
  23. public const string PPChangeStatus = "PPChangeStatus";
  24. public const string TransitionType = "TransitionType";
  25. public const string AlarmID = "AlarmID";
  26. public const string ECChangedID = "ECChangedID";
  27. public const string DVID_NEW = "DVID_NEW";
  28. public const string EventName = "EventName";
  29. public const string LotID = "LotID";
  30. public const string RecipeID = "RecipeID";
  31. public const string JobID = "JobID";
  32. public const string CarrierID = "CarrierID";
  33. public const string SlotMap = "SlotMap";
  34. public const string SequenceID = "SequenceID";
  35. public const string StationName = "StationName";
  36. public const string RecipeStepNumber = "RecipeStepNumber";
  37. public const string SlotID = "SlotID";
  38. public const string AccessMode = "AccessMode";
  39. public const string PortAssociationState = "PortAssociationState";
  40. public const string PortID = "PortID";
  41. public const string CarrierAccessingStatus = "CarrierAccessingStatus";
  42. public const string PortTransferState = "PortTransferState";
  43. public const string Reason = "Reason";
  44. public const string LocationID = "LocationID";
  45. public const string SlotMapStatus = "SlotMapStatus";
  46. public const string WaferID = "WaferID";
  47. public const string PRJobID = "PRJobID";
  48. public const string PRJobState = "PRJobState";
  49. public const string PrvPRJobState = "PrvPRJobState";
  50. public const string PRMtlNameList = "PRMtlNameList";
  51. public const string RecVariableList = "RecVariableList";
  52. public const string CJID = "CJID";
  53. public const string CJState = "CJState";
  54. public const string PrvCJState = "PrvCJState";
  55. public const string SubstDestination = "SubstDestination";
  56. public const string SubstHistory = "SubstHistory";
  57. public const string SubstID = "SubstID";
  58. public const string SubstLocID = "SubstLocID";
  59. public const string SubstLocState = "SubstLocState";
  60. public const string SubstProcState = "SubstProcState";
  61. public const string PrvSubstProcState = "PrvSubstProcState";
  62. #region 自定义DVID,在此增加完后需更新DataNameEnum和DataVariablesDictionary
  63. public const string TotalStepTimePV = "TotalStepTimePV";
  64. public const string SingleStepTimeList = "SingleStepTimeList";
  65. public const string ChemicalUnitDataSummary = "ChemicalUnitDataSummary";
  66. public const string SlotMapList = "SlotMapList";
  67. public const string BoatSlotMapList = "BoatSlotMapList";
  68. public const string Usage = "Usage";
  69. public const string PPIDList = "PPIDList";
  70. public const string BatchLocID = "BatchLocID";
  71. public const string BoatID = "BoatID";
  72. public const string WaferIDList = "WaferIDList";
  73. public const string PrdVariableList = "PrdVariableList";
  74. public const string CarrierIDList = "CarrierIDList";
  75. public const string ProcessCarrierIDList = "ProcessCarrierIDList";
  76. public const string EPTState = "EPTState";
  77. public const string BufferCapacitiyList = "BufferCapacitiyList";
  78. public const string BufferMaterialInfo = "BufferMaterialInfo";
  79. //public const string SideDummyStateDetail = "SideDummyStateDetail";
  80. //public const string ExtraDummyStateDetail = "ExtraDummyStateDetail";
  81. public const string PPStepChange = "PPStepChange";
  82. public const string ProcessWaferIdList = "ProcessWaferIdList";
  83. public const string BoatCurrentFilmThickness = "BoatCurrentFilmThickness";
  84. public const string DryClearCount = "DryClearCount";
  85. public const string ProcessLotIdList = "ProcessLotIdList";
  86. public const string ProcessRecipeStepName = "ProcessRecipeStepName";
  87. public const string SubRecipeStepName = "SubRecipeStepName";
  88. public const string SubRecipeStepNumber = "SubRecipeStepNumber";
  89. #endregion
  90. public enum DataName
  91. {
  92. #region
  93. AlarmsEnabled = 1,
  94. AlarmsSet = 2,
  95. Clock = 3,
  96. ControlState = 4,
  97. EventsEnabled = 5,
  98. PPExecName = 6,
  99. PreviousProcessState = 7,
  100. ProcessState = 8,
  101. RecipeEndDataSummary = 501,
  102. RecipeStepEndDataSummary = 502,
  103. EventLimit = 3001,
  104. LimitVariable = 3002,
  105. PPChangeName = 3003,
  106. PPChangeStatus = 3004,
  107. TransitionType = 3005,
  108. AlarmID = 3006,
  109. ECChangedID = 3007,
  110. DVID_NEW = 3008,
  111. EventName = 3101,
  112. LotID = 3102,
  113. RecipeID = 3103,
  114. JobID = 3104,
  115. CarrierID = 3105,
  116. SlotMap = 3106,
  117. SequenceID = 3107,
  118. StationName = 3108,
  119. RecipeStepNumber = 3109,
  120. SlotID = 3110,
  121. AccessMode = 3111,
  122. PortAssociationState = 3112,
  123. PortID = 3113,
  124. CarrierAccessingStatus = 3114,
  125. PortTransferState = 3116,
  126. Reason = 3117,
  127. LocationID = 3118,
  128. SlotMapStatus = 3119,
  129. WaferID = 3120,
  130. WaferStatus = 3121,
  131. ContentMap = 3122,
  132. ChamberID = 3123,
  133. PRJobID = 3201,
  134. PRJobState = 3202,
  135. PrvPRJobState = 3203,
  136. PRMtlNameList = 3205,
  137. RecVariableList = 3210,
  138. CJID = 3301,
  139. CJState = 3302,
  140. PrvCJState = 3303,
  141. CarrierInputSpec = 3304,
  142. SubstDestination = 3402,
  143. SubstHistory = 3403,
  144. SubstID = 3404,
  145. SubstLocID = 3405,
  146. SubstLocState = 3406,
  147. SubstProcState = 3407,
  148. PrvSubstProcState = 3408,
  149. #endregion
  150. #region 自定义DVID,添加到 3500-4000 范围内
  151. ChemicalUnitDataSummary = 3500,
  152. TotalStepTimePV = 3501,
  153. SingleStepTimeList = 3502,
  154. PPIDList = 3505,
  155. SlotMapList = 3506,
  156. BoatSlotMapList = 3526,
  157. BatchLocID = 3507,
  158. BoatID = 3508,
  159. WaferIDList = 3509,
  160. PrdVariableList = 3510,
  161. CarrierIDList = 3511,
  162. Usage = 3512,
  163. EPTState = 3513,
  164. BufferCapacitiyList = 3514,
  165. BufferMaterialInfo = 3515,
  166. PPStepChange = 3518,
  167. ProcessCarrierIDList = 3519,
  168. //SideDummyStateDetail = 3516,
  169. //ExtraDummyStateDetail = 3517,
  170. ProcessWaferIdList = 3520,
  171. ProcessLotIdList = 3521,
  172. #endregion
  173. }
  174. public static Dictionary<string, VIDItem> DataVariablesDictionary = new Dictionary<string, VIDItem>()
  175. {
  176. {AlarmsEnabled, new VIDItem() {Name = AlarmsEnabled, Index = (int) DataName.AlarmsEnabled,DataType = "List",Description = "Effective Alarm ID list"}},
  177. {AlarmsSet, new VIDItem() {Name = AlarmsSet, Index = (int) DataName.AlarmsSet,DataType = "List",Description = "Raised Alarm ID List"}},
  178. {Clock, new VIDItem() {Name = Clock, Index = (int) DataName.Clock,DataType = "String",Description = "Present date time\r\nYYYYMMDDhhmmsscc"}},
  179. {ControlState, new VIDItem() {Name = ControlState, Index = (int) DataName.ControlState,DataType = "String",Description = "Current control state\r\n\"1\"= Not defined\r\n\"2\"= Offline-Equipment OffLine\r\n\"3\"= Offline-Attempt OnLine\r\n\"4\"= On-Line Local\r\n \"5\"= On-Line Remote"}},
  180. {EventsEnabled, new VIDItem() {Name = EventsEnabled, Index = (int) DataName.EventsEnabled,DataType = "List",Description = "Raised EventID list"}},
  181. {PPExecName, new VIDItem() {Name = PPExecName, Index = (int) DataName.PPExecName,DataType = "String",Description = "Process program ID for the current or recently started process=Recipe name"}},
  182. {PreviousProcessState, new VIDItem() {Name = PreviousProcessState, Index = (int) DataName.PreviousProcessState,DataType = "Int",Description = "Immediately before process status\r\nRef.: VID8 ProcessState"}},
  183. {ProcessState, new VIDItem() {Name = ProcessState, Index = (int) DataName.ProcessState,DataType = "Int",Description = "Current process state\r\n0= init\r\n1= idle\r\n2= ready\r\n3= run\r\n4= pause\r\n5 = abort\r\n6= down"}},
  184. {RecipeEndDataSummary, new VIDItem() {Name = RecipeEndDataSummary, Index = (int) DataName.RecipeEndDataSummary,DataType = "List",Description = "Process data summary thrown when recipe end"}},
  185. {RecipeStepEndDataSummary, new VIDItem() {Name = RecipeStepEndDataSummary, Index = (int) DataName.RecipeStepEndDataSummary,DataType = "List",Description = "Process data summary thrown when recipe step end"}},
  186. {EventLimit, new VIDItem() {Name = EventLimit, Index = (int) DataName.EventLimit,DataType = "Int"}},
  187. {LimitVariable, new VIDItem() {Name = LimitVariable, Index = (int) DataName.LimitVariable,DataType = "Int"}},
  188. {PPChangeName, new VIDItem() {Name = PPChangeName, Index = (int) DataName.PPChangeName,DataType = "String",Description = "Recipe change name(RCPID)"}},
  189. {PPChangeStatus, new VIDItem() {Name = PPChangeStatus, Index = (int) DataName.PPChangeStatus,DataType = "Int",Description = "The type of change that occurred for the recipe indicated in RcpChangeName \r\n 0=No change\r\n 1=Created\r\n 2=Updated (modified)\r\n 3=Stored (new)\r\n 4=Replaced\r\n 5=Deleted\r\n 6=Copied\r\n 7=Renamed"}},
  190. {TransitionType, new VIDItem() {Name = TransitionType, Index = (int) DataName.TransitionType,DataType = "Binary"}},
  191. {AlarmID, new VIDItem() {Name = AlarmID, Index = (int) DataName.AlarmID,DataType = "Int",Description = "This variable is valid only upon the setting or clearing of an alarm condition and contains the current alarm identification (ALID), regardless of whether that alarm is enabled for reporting."}},
  192. {ECChangedID, new VIDItem() {Name = ECChangedID, Index = (int) DataName.ECChangedID,DataType = "Int",Description = "Changed ECID list L,n<ECID>"}},
  193. {DVID_NEW, new VIDItem() {Name = DVID_NEW, Index = (int) DataName.DVID_NEW,DataType = "String"}},
  194. {EventName, new VIDItem() {Name = EventName, Index = (int) DataName.EventName,DataType = "String"}},
  195. {LotID, new VIDItem() {Name = LotID, Index = (int) DataName.LotID,DataType = "String"}},
  196. {RecipeID, new VIDItem() {Name = RecipeID, Index = (int) DataName.RecipeID,DataType = "String"}},
  197. {JobID, new VIDItem() {Name = JobID, Index = (int) DataName.JobID,DataType = "String"}},
  198. {CarrierID, new VIDItem() {Name = CarrierID, Index = (int) DataName.CarrierID,DataType = "String",Description = "The ID of the carrier."}},
  199. {SlotMap, new VIDItem() {Name = SlotMap, Index = (int) DataName.SlotMap,DataType = "String",Description = "Presence status of wafers in the carrier.\r\nL, n (n = Number of SLOTSTATEs)\r\n<SLOTSTATE>\r\n0=UNDEFINED\r\n1=EMPTY\r\n2=NOT EMPTY\r\n3=CORRECTLY OCCUPIED\r\n4=DOUBLE SLOTTED\r\n5=CROSS SLOTTED"}},
  200. {SequenceID, new VIDItem() {Name = SequenceID, Index = (int) DataName.SequenceID,DataType = "String"}},
  201. {StationName, new VIDItem() {Name = StationName, Index = (int) DataName.StationName,DataType = "String"}},
  202. {RecipeStepNumber, new VIDItem() {Name = RecipeStepNumber, Index = (int) DataName.RecipeStepNumber,DataType = "String"}},
  203. {SlotID, new VIDItem() {Name = SlotID, Index = (int) DataName.SlotID,DataType = "String"}},
  204. {AccessMode, new VIDItem() {Name = AccessMode, Index = (int) DataName.AccessMode,DataType = "Int",Description = "Load Port Access Mode.\r\n0=MANUAL\r\n1=AUTO"}},
  205. {PortAssociationState, new VIDItem() {Name = PortAssociationState, Index = (int) DataName.PortAssociationState,DataType = "Int",Description = "The association state of a load port.\r\n0=NOT ASSOCIATED\r\n1= ASSOCIATED"}},
  206. {PortID, new VIDItem() {Name = PortID, Index = (int) DataName.PortID,DataType = "Int",Description = "Load port ID"}},
  207. {CarrierAccessingStatus, new VIDItem() {Name = CarrierAccessingStatus, Index = (int) DataName.CarrierAccessingStatus,DataType = "Int",Description = "The current accessing state of the carrier by the equipment.\r\n0=NOT ACCESSED\r\n1=IN ACCESS\r\n2=CARRIER COMPLETE\r\n3=CARRIER STOPPED"}},
  208. {PortTransferState, new VIDItem() {Name = PortTransferState, Index = (int) DataName.PortTransferState,DataType = "Int",Description = "The current transfer state of a load port. \r\n0=OUT OF SERVICE\r\n1=TRANSFER BLOCKED\r\n2=READY TO LOAD\r\n3=READY TO UNLOAD"}},
  209. {Reason, new VIDItem() {Name = Reason, Index = (int) DataName.Reason,DataType = "Int",Description = "The reason for slot map status, SLOT MAP NOT READ to WAITING FOR HOST\r\n0=Verification Needed\r\n1=Verification By Equipment Unsuccessful\r\n2=Read Fail\r\n3=Improper Substrate Position"}},
  210. {LocationID, new VIDItem() {Name = LocationID, Index = (int) DataName.LocationID,DataType = "String",Description = "The ID of a carrier location."}},
  211. {SlotMapStatus, new VIDItem() {Name = SlotMapStatus, Index = (int) DataName.SlotMapStatus,DataType = "Int",Description = "State of the carrier slot map status. \r\n0=SLOT MAP NOT READ\r\n1=WAITING FOR HOST\r\n2=SLOT MAP VERIFICATION OK\r\n3=SLOT MAP VERIFICATION FAIL"}},
  212. {WaferID, new VIDItem() {Name = WaferID, Index = (int) DataName.WaferID,DataType = "String"}},
  213. {PRJobID, new VIDItem() {Name = PRJobID, Index = (int) DataName.PRJobID,DataType = "String",Description = "Process job ID"}},
  214. {PRJobState, new VIDItem() {Name = PRJobState, Index = (int) DataName.PRJobState,DataType = "Int",Description = "Indicates the current state of a Process Job.\r\n0=POOLED\r\n1=SETTING UP\r\n2=WAITINGFORHOST\r\n3=PROCESSING\r\n4=PROCESSING COMPLETE\r\n5=EXECUTING\r\n6=PAUSING\r\n7=PAUSED\r\n8=STOPPING\r\n9=ABORTING\r\n255=(no state)"}},
  215. {PrvPRJobState, new VIDItem() {Name = PrvPRJobState, Index = (int) DataName.PrvPRJobState,DataType = "Int",Description = "The last process job state\r\n (Values same as DVVAL: 3202)"}},
  216. {PRMtlNameList, new VIDItem() {Name = PRMtlNameList, Index = (int) DataName.PRMtlNameList,DataType = "List",Description = ""}},
  217. {RecVariableList, new VIDItem() {Name = RecVariableList, Index = (int) DataName.RecVariableList,DataType = "List",Description = ""}},
  218. {CJID, new VIDItem() {Name = CJID, Index = (int) DataName.CJID,DataType = "String",Description = "Control Job ID"}},
  219. {CJState, new VIDItem() {Name = CJState, Index = (int) DataName.CJState,DataType = "Int",Description = "Indicates the current state of a Control Job.\r\n0=QUEUED\r\n1=SELECTED\r\n2=WAITINGFORSTART\r\n3=EXECUTING\r\n4=PAUSED (*1)\r\n5=COMPLETED\r\n255=(no state)"}},
  220. {PrvCJState, new VIDItem() {Name = PrvCJState, Index = (int) DataName.PrvCJState,DataType = "Int",Description = "The last control job state\r\n(Values same as DVVAL: 3302)"}},
  221. {SubstDestination, new VIDItem() {Name = SubstDestination, Index = (int) DataName.SubstDestination,DataType = "String",Description = "Destination Carrier Substrate Location for the substrate associated with the last event."}},
  222. {SubstHistory, new VIDItem() {Name = SubstHistory, Index = (int) DataName.SubstHistory,DataType = "List",Description = "List of history of locations visited for the substrate associated with the last event.\r\nL, n\r\nL, 3\r\n<SubstLocID> \r\n<TimeIn>\r\n<TimeOut>"}},
  223. {SubstID, new VIDItem() {Name = SubstID, Index = (int) DataName.SubstID,DataType = "String",Description = "Identifier of substrate associated with last event."}},
  224. {SubstLocID, new VIDItem() {Name = SubstLocID, Index = (int) DataName.SubstLocID,DataType = "String",Description = "Identifier for equipment substrate location associated with the last event."}},
  225. {SubstLocState, new VIDItem() {Name = SubstLocState, Index = (int) DataName.SubstLocState,DataType = "Int",Description = "State of substrate location associated with the last event.\r\n0=UNOCCUPIED\r\n1=OCCUPIED"}},
  226. { SubstProcState, new VIDItem() {Name = SubstProcState, Index = (int) DataName.SubstProcState,DataType = "Int",Description = "Processing state of the substrate associated with the last event.\r\n0=NEEDS PROCESSING\r\n1=IN PROCESS\r\n2=PROCESSED\r\n3=ABORTED\r\n4=STOPPED\r\n5=REJECT\r\n6=LOST\r\n7=SKIPPED\r\n255=(no state)"}},
  227. {PrvSubstProcState, new VIDItem() {Name = PrvSubstProcState, Index = (int) DataName.PrvSubstProcState,DataType = "Int",Description = "The last board process state\r\n(Values same as DVVAL: 3407)"}},
  228. #region 自定义DVID
  229. {ChemicalUnitDataSummary, new VIDItem() {Name = ChemicalUnitDataSummary, Index = (int) DataName.ChemicalUnitDataSummary,DataType = "List",Description = "Chemical Unit Data Summary"}},
  230. {TotalStepTimePV, new VIDItem() {Name = TotalStepTimePV, Index = (int) DataName.TotalStepTimePV,DataType = "Int",Description = "Total Step Time PV"}},
  231. {SingleStepTimeList, new VIDItem() {Name = SingleStepTimeList, Index = (int) DataName.SingleStepTimeList,DataType = "List",Description = "Single Step Time List"}},
  232. {SlotMapList, new VIDItem() {Name = SlotMapList, Index = (int) DataName.SlotMapList,DataType = "List",Description = "List of map slot result.\r\nL, n\r\nL, 3\r\n<SlotMapInt> \r\n<TimeIn>\r\n<TimeOut>"}},
  233. {BoatSlotMapList, new VIDItem() {Name = BoatSlotMapList, Index = (int) DataName.BoatSlotMapList,DataType = "List",Description = "List of boat map slot result.\r\nL, n\r\nL, 3\r\n<SlotMapInt> \r\n<TimeIn>\r\n<TimeOut>"}},
  234. {PPIDList, new VIDItem() {Name = PPIDList, Index = (int) DataName.PPIDList,DataType = "List",Description = "List of PPID.\r\nL, n\r\nL, 3\r\n<PPID> \r\n<TimeIn>\r\n<TimeOut>"}},
  235. {BatchLocID, new VIDItem() {Name = BatchLocID, Index = (int) DataName.BatchLocID,DataType = "String",Description = "BatchLocID"}},
  236. {BoatID, new VIDItem() {Name = BoatID, Index = (int) DataName.BoatID,DataType = "String",Description = "BoatID"}},
  237. {WaferIDList, new VIDItem() {Name = WaferIDList, Index = (int) DataName.WaferIDList,DataType = "List",Description = "List of waferID.\r\nL, n\r\nL, 3\r\n<waferID> \r\n<TimeIn>\r\n<TimeOut>"}},
  238. {PrdVariableList, new VIDItem() {Name = PrdVariableList, Index = (int) DataName.PrdVariableList,DataType = "List",Description = "List of PrdVariable.\r\nL, n\r\nL, 3\r\n<PrdVariable> \r\n<TimeIn>\r\n<TimeOut>"}},
  239. {CarrierIDList, new VIDItem() {Name = CarrierIDList, Index = (int) DataName.CarrierIDList,DataType = "List",Description = "List of CarrierID.\r\nL, n\r\nL, 3\r\n<CarrierID> \r\n<TimeIn>\r\n<TimeOut>"}},
  240. {ProcessCarrierIDList, new VIDItem() {Name = ProcessCarrierIDList, Index = (int) DataName.ProcessCarrierIDList,DataType = "List",Description = "List of process CarrierID.\r\nL, n\r\nL, 3\r\n<CarrierID> \r\n<TimeIn>\r\n<TimeOut>"}},
  241. {Usage, new VIDItem() {Name = Usage, Index = (int) DataName.Usage,DataType = "String",Description = "Usage"}},
  242. {EPTState, new VIDItem() {Name = EPTState, Index = (int) DataName.EPTState,DataType = "String",Description = "EPTState"}},
  243. {BufferCapacitiyList, new VIDItem() {Name = BufferCapacitiyList, Index = (int) DataName.BufferCapacitiyList,DataType = "List",Description = "List of BufferCapacitiy .\r\nL, n\r\nL, 3\r\n<BufferCapacitiy> \r\n<TimeIn>\r\n<TimeOut>"}},
  244. {BufferMaterialInfo, new VIDItem() {Name = BufferMaterialInfo, Index = (int) DataName.BufferMaterialInfo,DataType = "List",Description = "List of BufferMaterial.\r\nL, n\r\nL, 3\r\n<BufferMaterial> \r\n<TimeIn>\r\n<TimeOut>"}},
  245. {PPStepChange, new VIDItem() {Name = PPStepChange, Index = (int) DataName.PPStepChange,DataType = "String",Description = "BoatThickness"}},
  246. {ProcessWaferIdList, new VIDItem() {Name = ProcessWaferIdList, Index = (int) DataName.ProcessWaferIdList,DataType = "List",Description = "List of process waferID.\r\nL, n\r\nL, 3\r\n<waferID> \r\n<TimeIn>\r\n<TimeOut>"}},
  247. {ProcessLotIdList, new VIDItem() {Name = ProcessLotIdList, Index = (int) DataName.ProcessLotIdList,DataType = "List",Description = "List of process LotId.\r\nL, n\r\nL, 3\r\n<ProcessLotIdList> \r\n<TimeIn>\r\n<TimeOut>"}},
  248. #endregion
  249. };
  250. }
  251. }