@magic-xpa/engine 4.1100.0-dev4110.25 → 4.1100.0-dev4110.252

Sign up to get free protection for your applications and to get access to all the features.
Files changed (521) hide show
  1. package/{esm2020 → esm2022}/index.mjs +188 -188
  2. package/{esm2020 → esm2022}/magic-xpa-engine.mjs +1 -1
  3. package/esm2022/src/AccessHelper.mjs +15 -0
  4. package/esm2022/src/ClientManager.mjs +416 -0
  5. package/esm2022/src/CommandsProcessorBase.mjs +56 -0
  6. package/esm2022/src/CommandsProcessorManager.mjs +26 -0
  7. package/esm2022/src/CommandsTable.mjs +162 -0
  8. package/esm2022/src/ConstInterface.mjs +517 -0
  9. package/{esm2020 → esm2022}/src/CurrentClientVersion.mjs +2 -2
  10. package/esm2022/src/FlowMonitorInterface.mjs +16 -0
  11. package/esm2022/src/GUIManager.mjs +62 -0
  12. package/esm2022/src/GlobalCommandsManager.mjs +34 -0
  13. package/esm2022/src/GuiEventsProcessor.mjs +156 -0
  14. package/{esm2020 → esm2022}/src/ICommandsTable.mjs +1 -1
  15. package/esm2022/src/ServerConfig.mjs +122 -0
  16. package/{esm2020 → esm2022}/src/bridge/IGuiEvent.mjs +19 -19
  17. package/esm2022/src/bridge/MagicBridge.mjs +41 -0
  18. package/esm2022/src/commands/ClientOriginatedCommandTaskTag.mjs +12 -0
  19. package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserLocateDataViewCommand.mjs +8 -8
  20. package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserRangeDataviewCommand.mjs +9 -9
  21. package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserSortDataViewCommand.mjs +9 -9
  22. package/esm2022/src/commands/ClientToServer/BrowserEscEventCommand.mjs +26 -0
  23. package/{esm2020 → esm2022}/src/commands/ClientToServer/ClientOriginatedCommand.mjs +14 -14
  24. package/esm2022/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +60 -0
  25. package/esm2022/src/commands/ClientToServer/ColumnSortEventCommand.mjs +29 -0
  26. package/esm2022/src/commands/ClientToServer/CommandFactory.mjs +261 -0
  27. package/esm2022/src/commands/ClientToServer/CommandSerializationHelper.mjs +67 -0
  28. package/esm2022/src/commands/ClientToServer/ComputeEventCommand.mjs +26 -0
  29. package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTerminationEventCommand.mjs +24 -21
  30. package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs +23 -20
  31. package/{esm2020 → esm2022}/src/commands/ClientToServer/ControlItemsRefreshCommand.mjs +8 -8
  32. package/esm2022/src/commands/ClientToServer/DataViewOutputCommand.mjs +13 -0
  33. package/{esm2020 → esm2022}/src/commands/ClientToServer/DataviewCommand.mjs +44 -44
  34. package/esm2022/src/commands/ClientToServer/EvaluateCommand.mjs +40 -0
  35. package/{esm2020 → esm2022}/src/commands/ClientToServer/EventCommand.mjs +43 -40
  36. package/esm2022/src/commands/ClientToServer/ExecOperCommand.mjs +70 -0
  37. package/esm2022/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +25 -0
  38. package/{esm2020 → esm2022}/src/commands/ClientToServer/GlobalParamsQueryCommand.mjs +10 -10
  39. package/{esm2020 → esm2022}/src/commands/ClientToServer/ICommandTaskTag.mjs +1 -1
  40. package/esm2022/src/commands/ClientToServer/IndexChangeEventCommand.mjs +24 -0
  41. package/esm2022/src/commands/ClientToServer/IniputForceWriteCommand.mjs +26 -0
  42. package/{esm2020 → esm2022}/src/commands/ClientToServer/NonReversibleExitEventCommand.mjs +26 -23
  43. package/{esm2020 → esm2022}/src/commands/ClientToServer/QueryCommand.mjs +20 -20
  44. package/esm2022/src/commands/ClientToServer/RecomputeCommand.mjs +30 -0
  45. package/esm2022/src/commands/ClientToServer/RefreshEventCommand.mjs +30 -0
  46. package/esm2022/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +27 -0
  47. package/esm2022/src/commands/ClientToServer/RollbackEventCommand.mjs +43 -0
  48. package/esm2022/src/commands/ClientToServer/SelectProgramCommand.mjs +19 -0
  49. package/{esm2020 → esm2022}/src/commands/ClientToServer/SetTransactionStateDataviewCommand.mjs +9 -9
  50. package/esm2022/src/commands/ClientToServer/SubformOpenEventCommand.mjs +24 -0
  51. package/esm2022/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +27 -0
  52. package/esm2022/src/commands/ClientToServer/TransactionCommand.mjs +34 -0
  53. package/{esm2020 → esm2022}/src/commands/ClientToServer/UnloadCommand.mjs +18 -15
  54. package/esm2022/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +18 -0
  55. package/esm2022/src/commands/DataViewCommandBase.mjs +8 -0
  56. package/{esm2020 → esm2022}/src/commands/IClientCommand.mjs +1 -1
  57. package/esm2022/src/commands/IClientTargetedCommand.mjs +13 -0
  58. package/{esm2020 → esm2022}/src/commands/IClientToServerCommandInfo.mjs +2 -2
  59. package/esm2022/src/commands/ServerToClient/AbortCommand.mjs +65 -0
  60. package/{esm2020 → esm2022}/src/commands/ServerToClient/AddLocateCommand.mjs +21 -21
  61. package/esm2022/src/commands/ServerToClient/AddRangeCommand.mjs +62 -0
  62. package/esm2022/src/commands/ServerToClient/AddSortCommand.mjs +33 -0
  63. package/esm2022/src/commands/ServerToClient/ClientRefreshCommand.mjs +25 -0
  64. package/esm2022/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +24 -0
  65. package/esm2022/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +45 -0
  66. package/esm2022/src/commands/ServerToClient/OpenURLCommand.mjs +221 -0
  67. package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetLocateCommand.mjs +14 -14
  68. package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetRangeCommand.mjs +14 -14
  69. package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetSortCommand.mjs +14 -14
  70. package/esm2022/src/commands/ServerToClient/ResultCommand.mjs +37 -0
  71. package/esm2022/src/commands/ServerToClient/VerifyCommand.mjs +83 -0
  72. package/esm2022/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +132 -0
  73. package/{esm2020 → esm2022}/src/communications/IConnectionStateManager.mjs +1 -1
  74. package/esm2022/src/communications/InteractiveCommunicationsFailureHandler.mjs +15 -0
  75. package/{esm2020 → esm2022}/src/data/DataSourceIdKey.mjs +2 -2
  76. package/esm2022/src/data/DataView.mjs +1613 -0
  77. package/{esm2020 → esm2022}/src/data/DataViewBase.mjs +3 -3
  78. package/esm2022/src/data/DataviewManager.mjs +28 -0
  79. package/esm2022/src/data/DataviewManagerBase.mjs +15 -0
  80. package/esm2022/src/data/DvCache.mjs +67 -0
  81. package/esm2022/src/data/Field.mjs +646 -0
  82. package/esm2022/src/data/FieldBase.mjs +15 -0
  83. package/esm2022/src/data/FieldsTable.mjs +103 -0
  84. package/{esm2020 → esm2022}/src/data/IRecordsTable.mjs +1 -1
  85. package/esm2022/src/data/Key.mjs +88 -0
  86. package/esm2022/src/data/Record.mjs +880 -0
  87. package/{esm2020 → esm2022}/src/data/RecordOutOfDataViewException.mjs +15 -15
  88. package/esm2022/src/data/RecordsTable.mjs +267 -0
  89. package/esm2022/src/data/TaskTransactionManager.mjs +107 -0
  90. package/esm2022/src/data/XMLBasedDcValuesBuilder.mjs +74 -0
  91. package/{esm2020 → esm2022}/src/enums.mjs +23 -23
  92. package/esm2022/src/env/EnvVariablesTable.mjs +340 -0
  93. package/esm2022/src/env/Environment.mjs +487 -0
  94. package/{esm2020 → esm2022}/src/env/ILanguageData.mjs +1 -1
  95. package/esm2022/src/env/LanguageData.mjs +227 -0
  96. package/esm2022/src/env/MirrorString.mjs +65 -0
  97. package/esm2022/src/event/ActionManager.mjs +91 -0
  98. package/esm2022/src/event/Event.mjs +1333 -0
  99. package/esm2022/src/event/EventHandler.mjs +766 -0
  100. package/esm2022/src/event/EventHandlerPosition.mjs +204 -0
  101. package/esm2022/src/event/EventsManager.mjs +2988 -0
  102. package/{esm2020 → esm2022}/src/event/IEventsManager.mjs +6 -6
  103. package/esm2022/src/event/RunTimeEvent.mjs +399 -0
  104. package/{esm2020 → esm2022}/src/event/RunTimeEventBase.mjs +3 -3
  105. package/esm2022/src/event/UserEventsTable.mjs +47 -0
  106. package/esm2022/src/exp/ExpTable.mjs +57 -0
  107. package/esm2022/src/exp/Expression.mjs +200 -0
  108. package/esm2022/src/exp/ExpressionDict.mjs +727 -0
  109. package/esm2022/src/exp/ExpressionEvaluator.mjs +4206 -0
  110. package/esm2022/src/exp/ExpressionLocalJpn.mjs +314 -0
  111. package/esm2022/src/exp/GlobalParamsTable.mjs +85 -0
  112. package/esm2022/src/exp/YesNoExp.mjs +36 -0
  113. package/esm2022/src/gui/CreatedFormVector.mjs +23 -0
  114. package/esm2022/src/gui/FormsTable.mjs +66 -0
  115. package/esm2022/src/gui/MgControl.mjs +363 -0
  116. package/esm2022/src/gui/MgForm.mjs +1224 -0
  117. package/esm2022/src/http/HttpManager.mjs +97 -0
  118. package/esm2022/src/http/client/HttpClientAsync.mjs +68 -0
  119. package/esm2022/src/http/client/HttpClientBase.mjs +132 -0
  120. package/esm2022/src/http/client/HttpClientEvents.mjs +39 -0
  121. package/esm2022/src/http/client/HttpClientSync.mjs +42 -0
  122. package/esm2022/src/http/client/HttpUtility.mjs +84 -0
  123. package/{esm2020 → esm2022}/src/http/client/ICommunicationsFailureHandler.mjs +1 -1
  124. package/esm2022/src/remote/AddUserLocateRemoteDataViewCommand.mjs +18 -0
  125. package/esm2022/src/remote/AddUserRangeRemoteDataViewCommand.mjs +18 -0
  126. package/esm2022/src/remote/AddUserSortRemoteDataViewCommand.mjs +18 -0
  127. package/esm2022/src/remote/RemoteCommandsProcessor.mjs +883 -0
  128. package/esm2022/src/remote/RemoteControlItemsRefreshCommand.mjs +25 -0
  129. package/esm2022/src/remote/RemoteDataViewCommandBase.mjs +24 -0
  130. package/esm2022/src/remote/RemoteDataViewCommandFactory.mjs +61 -0
  131. package/{esm2020 → esm2022}/src/remote/RemoteDataViewCommandUpdateNonModifiable.mjs +15 -15
  132. package/{esm2020 → esm2022}/src/remote/RemoteDataviewManager.mjs +17 -17
  133. package/{esm2020 → esm2022}/src/remote/RemoteInitDataViewCommand.mjs +10 -10
  134. package/esm2022/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +17 -0
  135. package/{esm2020 → esm2022}/src/remote/ResetUserRangeRemoteDataviewCommand.mjs +12 -12
  136. package/esm2022/src/remote/ResetUserSortRemoteDataviewCommand.mjs +16 -0
  137. package/esm2022/src/remote/ServerError.mjs +40 -0
  138. package/esm2022/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +20 -0
  139. package/esm2022/src/rt/Argument.mjs +265 -0
  140. package/esm2022/src/rt/ArgumentsList.mjs +103 -0
  141. package/esm2022/src/rt/Boundary.mjs +152 -0
  142. package/esm2022/src/rt/CompMainPrgTable.mjs +63 -0
  143. package/{esm2020 → esm2022}/src/rt/DataviewHeaderBase.mjs +98 -96
  144. package/{esm2020 → esm2022}/src/rt/DataviewHeaderFactory.mjs +6 -6
  145. package/esm2022/src/rt/DataviewHeaders.mjs +53 -0
  146. package/esm2022/src/rt/DataviewHeadersSaxHandler.mjs +38 -0
  147. package/esm2022/src/rt/ExecutionStack.mjs +94 -0
  148. package/{esm2020 → esm2022}/src/rt/ExecutionStackEntry.mjs +17 -17
  149. package/esm2022/src/rt/HandlersTable.mjs +96 -0
  150. package/{esm2020 → esm2022}/src/rt/IDataSourceViewDefinition.mjs +1 -1
  151. package/{esm2020 → esm2022}/src/rt/IDataviewHeader.mjs +1 -1
  152. package/{esm2020 → esm2022}/src/rt/IResultValue.mjs +1 -1
  153. package/esm2022/src/rt/LastFocusedManager.mjs +65 -0
  154. package/esm2022/src/rt/Operation.mjs +735 -0
  155. package/esm2022/src/rt/OperationTable.mjs +67 -0
  156. package/esm2022/src/rt/Recompute.mjs +355 -0
  157. package/esm2022/src/rt/RecomputeTable.mjs +63 -0
  158. package/esm2022/src/rt/RemoteDataviewHeader.mjs +108 -0
  159. package/esm2022/src/rt/ResultValue.mjs +10 -0
  160. package/esm2022/src/rt/TableCache.mjs +177 -0
  161. package/esm2022/src/rt/TableCacheManager.mjs +67 -0
  162. package/esm2022/src/rt/Transaction.mjs +53 -0
  163. package/esm2022/src/security/UserDetails.mjs +71 -0
  164. package/{esm2020 → esm2022}/src/tasks/IMGDataCollection.mjs +1 -1
  165. package/esm2022/src/tasks/MGData.mjs +552 -0
  166. package/esm2022/src/tasks/MGDataCollection.mjs +252 -0
  167. package/esm2022/src/tasks/RCTimer.mjs +63 -0
  168. package/esm2022/src/tasks/RemoteTaskService.mjs +45 -0
  169. package/esm2022/src/tasks/Task.mjs +2499 -0
  170. package/esm2022/src/tasks/TaskBase.mjs +83 -0
  171. package/esm2022/src/tasks/TaskServiceBase.mjs +25 -0
  172. package/esm2022/src/tasks/TasksTable.mjs +80 -0
  173. package/esm2022/src/tasks/sort/Sort.mjs +5 -0
  174. package/esm2022/src/tasks/sort/SortCollection.mjs +67 -0
  175. package/esm2022/src/util/ConstUtils.mjs +14 -0
  176. package/esm2022/src/util/FlowMonitorQueue.mjs +451 -0
  177. package/esm2022/src/util/HeapSort.mjs +70 -0
  178. package/{esm2020 → esm2022}/src/util/IMirrorXML.mjs +1 -1
  179. package/{esm2020 → esm2022}/src/util/IServerConfig.mjs +1 -1
  180. package/{esm2020 → esm2022}/src/util/MgBlockingQueue.mjs +1 -1
  181. package/esm2022/src/util/MgPriorityBlockingQueue.mjs +74 -0
  182. package/esm2022/src/util/MgPriorityQueue.mjs +66 -0
  183. package/{esm2020 → esm2022}/src/util/ParamParseResult.mjs +7 -7
  184. package/esm2022/src/util/PrmMap.mjs +152 -0
  185. package/esm2022/src/util/ReturnResult.mjs +46 -0
  186. package/esm2022/src/util/ReturnResultBase.mjs +18 -0
  187. package/esm2022/src/util/Scrambler.mjs +89 -0
  188. package/esm2022/src/util/UniqueIDUtils.mjs +13 -0
  189. package/esm2022/src/util/cookie.service.mjs +92 -0
  190. package/{fesm2020 → fesm2022}/magic-xpa-engine.mjs +29883 -29693
  191. package/fesm2022/magic-xpa-engine.mjs.map +1 -0
  192. package/index.d.ts +187 -187
  193. package/package.json +8 -14
  194. package/src/AccessHelper.d.ts +20 -20
  195. package/src/ClientManager.d.ts +35 -32
  196. package/src/CommandsProcessorBase.d.ts +23 -23
  197. package/src/CommandsProcessorManager.d.ts +6 -6
  198. package/src/CommandsTable.d.ts +22 -22
  199. package/src/ConstInterface.d.ts +516 -515
  200. package/src/CurrentClientVersion.d.ts +1 -1
  201. package/src/FlowMonitorInterface.d.ts +15 -15
  202. package/src/GUIManager.d.ts +17 -17
  203. package/src/GlobalCommandsManager.d.ts +17 -17
  204. package/src/GuiEventsProcessor.d.ts +24 -24
  205. package/src/ICommandsTable.d.ts +9 -9
  206. package/src/ServerConfig.d.ts +35 -34
  207. package/src/bridge/IGuiEvent.d.ts +19 -19
  208. package/src/bridge/MagicBridge.d.ts +16 -16
  209. package/src/commands/ClientOriginatedCommandTaskTag.d.ts +8 -8
  210. package/src/commands/ClientToServer/AddUserLocateDataViewCommand.d.ts +4 -4
  211. package/src/commands/ClientToServer/AddUserRangeDataviewCommand.d.ts +6 -6
  212. package/src/commands/ClientToServer/AddUserSortDataViewCommand.d.ts +6 -6
  213. package/src/commands/ClientToServer/BrowserEscEventCommand.d.ts +9 -8
  214. package/src/commands/ClientToServer/ClientOriginatedCommand.d.ts +8 -8
  215. package/src/commands/ClientToServer/ClientOriginatedCommandSerializer.d.ts +6 -6
  216. package/src/commands/ClientToServer/ColumnSortEventCommand.d.ts +11 -10
  217. package/src/commands/ClientToServer/CommandFactory.d.ts +64 -64
  218. package/src/commands/ClientToServer/CommandSerializationHelper.d.ts +20 -20
  219. package/src/commands/ClientToServer/ComputeEventCommand.d.ts +9 -8
  220. package/src/commands/ClientToServer/ContextTerminationEventCommand.d.ts +8 -7
  221. package/src/commands/ClientToServer/ContextTimeoutResetCommand.d.ts +8 -7
  222. package/src/commands/ClientToServer/ControlItemsRefreshCommand.d.ts +6 -6
  223. package/src/commands/ClientToServer/DataViewOutputCommand.d.ts +9 -9
  224. package/src/commands/ClientToServer/DataviewCommand.d.ts +32 -32
  225. package/src/commands/ClientToServer/EvaluateCommand.d.ts +16 -15
  226. package/src/commands/ClientToServer/EventCommand.d.ts +16 -15
  227. package/src/commands/ClientToServer/ExecOperCommand.d.ts +24 -23
  228. package/src/commands/ClientToServer/FetchDataControlValuesEventCommand.d.ts +9 -8
  229. package/src/commands/ClientToServer/GlobalParamsQueryCommand.d.ts +5 -5
  230. package/src/commands/ClientToServer/ICommandTaskTag.d.ts +3 -3
  231. package/src/commands/ClientToServer/IndexChangeEventCommand.d.ts +9 -8
  232. package/src/commands/ClientToServer/IniputForceWriteCommand.d.ts +11 -10
  233. package/src/commands/ClientToServer/NonReversibleExitEventCommand.d.ts +9 -8
  234. package/src/commands/ClientToServer/QueryCommand.d.ts +8 -8
  235. package/src/commands/ClientToServer/RecomputeCommand.d.ts +12 -11
  236. package/src/commands/ClientToServer/RefreshEventCommand.d.ts +13 -12
  237. package/src/commands/ClientToServer/RefreshScreenEventCommand.d.ts +11 -10
  238. package/src/commands/ClientToServer/RollbackEventCommand.d.ts +15 -14
  239. package/src/commands/ClientToServer/SelectProgramCommand.d.ts +7 -6
  240. package/src/commands/ClientToServer/SetTransactionStateDataviewCommand.d.ts +5 -5
  241. package/src/commands/ClientToServer/SubformOpenEventCommand.d.ts +9 -8
  242. package/src/commands/ClientToServer/SubformRefreshEventCommand.d.ts +10 -9
  243. package/src/commands/ClientToServer/TransactionCommand.d.ts +14 -12
  244. package/src/commands/ClientToServer/UnloadCommand.d.ts +8 -7
  245. package/src/commands/ClientToServer/WriteMessageToServerLogCommand.d.ts +6 -6
  246. package/src/commands/DataViewCommandBase.d.ts +6 -6
  247. package/src/commands/IClientCommand.d.ts +2 -2
  248. package/src/commands/IClientTargetedCommand.d.ts +12 -12
  249. package/src/commands/IClientToServerCommandInfo.d.ts +4 -3
  250. package/src/commands/ServerToClient/AbortCommand.d.ts +11 -11
  251. package/src/commands/ServerToClient/AddLocateCommand.d.ts +6 -6
  252. package/src/commands/ServerToClient/AddRangeCommand.d.ts +10 -10
  253. package/src/commands/ServerToClient/AddSortCommand.d.ts +9 -9
  254. package/src/commands/ServerToClient/ClientRefreshCommand.d.ts +7 -7
  255. package/src/commands/ServerToClient/ClientTargetedCommandBase.d.ts +12 -12
  256. package/src/commands/ServerToClient/EnhancedVerifyCommand.d.ts +13 -13
  257. package/src/commands/ServerToClient/OpenURLCommand.d.ts +21 -21
  258. package/src/commands/ServerToClient/ResetLocateCommand.d.ts +6 -6
  259. package/src/commands/ServerToClient/ResetRangeCommand.d.ts +6 -6
  260. package/src/commands/ServerToClient/ResetSortCommand.d.ts +6 -6
  261. package/src/commands/ServerToClient/ResultCommand.d.ts +10 -10
  262. package/src/commands/ServerToClient/VerifyCommand.d.ts +17 -17
  263. package/src/commands/ServerToClient/XMLBasedCommandBuilder.d.ts +11 -11
  264. package/src/communications/IConnectionStateManager.d.ts +4 -4
  265. package/src/communications/InteractiveCommunicationsFailureHandler.d.ts +6 -6
  266. package/src/data/DataSourceIdKey.d.ts +2 -2
  267. package/src/data/DataView.d.ts +162 -162
  268. package/src/data/DataViewBase.d.ts +12 -12
  269. package/src/data/DataviewManager.d.ts +14 -14
  270. package/src/data/DataviewManagerBase.d.ts +11 -11
  271. package/src/data/DvCache.d.ts +15 -15
  272. package/src/data/Field.d.ts +103 -103
  273. package/src/data/FieldBase.d.ts +23 -23
  274. package/src/data/FieldsTable.d.ts +27 -27
  275. package/src/data/IRecordsTable.d.ts +7 -7
  276. package/src/data/Key.d.ts +15 -15
  277. package/src/data/Record.d.ts +157 -156
  278. package/src/data/RecordOutOfDataViewException.d.ts +10 -10
  279. package/src/data/RecordsTable.d.ts +38 -38
  280. package/src/data/TaskTransactionManager.d.ts +17 -17
  281. package/src/data/XMLBasedDcValuesBuilder.d.ts +11 -11
  282. package/src/enums.d.ts +21 -21
  283. package/src/env/EnvVariablesTable.d.ts +17 -17
  284. package/src/env/Environment.d.ts +118 -118
  285. package/src/env/ILanguageData.d.ts +3 -3
  286. package/src/env/LanguageData.d.ts +20 -20
  287. package/src/env/MirrorString.d.ts +15 -15
  288. package/src/event/ActionManager.d.ts +14 -14
  289. package/src/event/Event.d.ts +79 -79
  290. package/src/event/EventHandler.d.ts +66 -66
  291. package/src/event/EventHandlerPosition.d.ts +25 -25
  292. package/src/event/EventsManager.d.ts +205 -204
  293. package/src/event/IEventsManager.d.ts +77 -77
  294. package/src/event/RunTimeEvent.d.ts +126 -123
  295. package/src/event/RunTimeEventBase.d.ts +5 -5
  296. package/src/event/UserEventsTable.d.ts +11 -11
  297. package/src/exp/ExpTable.d.ts +11 -11
  298. package/src/exp/Expression.d.ts +37 -37
  299. package/src/exp/ExpressionDict.d.ts +12 -12
  300. package/src/exp/ExpressionEvaluator.d.ts +198 -198
  301. package/src/exp/ExpressionLocalJpn.d.ts +18 -18
  302. package/src/exp/GlobalParamsTable.d.ts +19 -19
  303. package/src/exp/YesNoExp.d.ts +9 -9
  304. package/src/gui/CreatedFormVector.d.ts +10 -10
  305. package/src/gui/FormsTable.d.ts +15 -15
  306. package/src/gui/MgControl.d.ts +60 -60
  307. package/src/gui/MgForm.d.ts +96 -93
  308. package/src/http/HttpManager.d.ts +25 -25
  309. package/src/http/client/HttpClientAsync.d.ts +16 -16
  310. package/src/http/client/HttpClientBase.d.ts +30 -30
  311. package/src/http/client/HttpClientEvents.d.ts +18 -18
  312. package/src/http/client/HttpClientSync.d.ts +17 -17
  313. package/src/http/client/HttpUtility.d.ts +10 -10
  314. package/src/http/client/ICommunicationsFailureHandler.d.ts +5 -5
  315. package/src/remote/AddUserLocateRemoteDataViewCommand.d.ts +8 -8
  316. package/src/remote/AddUserRangeRemoteDataViewCommand.d.ts +8 -8
  317. package/src/remote/AddUserSortRemoteDataViewCommand.d.ts +8 -8
  318. package/src/remote/RemoteCommandsProcessor.d.ts +51 -51
  319. package/src/remote/RemoteControlItemsRefreshCommand.d.ts +8 -8
  320. package/src/remote/RemoteDataViewCommandBase.d.ts +10 -10
  321. package/src/remote/RemoteDataViewCommandFactory.d.ts +6 -6
  322. package/src/remote/RemoteDataViewCommandUpdateNonModifiable.d.ts +8 -8
  323. package/src/remote/RemoteDataviewManager.d.ts +9 -9
  324. package/src/remote/RemoteInitDataViewCommand.d.ts +7 -7
  325. package/src/remote/ResetUserLocateRemoteDataviewCommand.d.ts +7 -7
  326. package/src/remote/ResetUserRangeRemoteDataviewCommand.d.ts +7 -7
  327. package/src/remote/ResetUserSortRemoteDataviewCommand.d.ts +7 -7
  328. package/src/remote/ServerError.d.ts +16 -16
  329. package/src/remote/SetTransactionStateRemoteDataViewCommand.d.ts +8 -8
  330. package/src/rt/Argument.d.ts +36 -36
  331. package/src/rt/ArgumentsList.d.ts +24 -24
  332. package/src/rt/Boundary.d.ts +27 -27
  333. package/src/rt/CompMainPrgTable.d.ts +10 -10
  334. package/src/rt/DataviewHeaderBase.d.ts +34 -34
  335. package/src/rt/DataviewHeaderFactory.d.ts +5 -5
  336. package/src/rt/DataviewHeaders.d.ts +12 -12
  337. package/src/rt/DataviewHeadersSaxHandler.d.ts +10 -10
  338. package/src/rt/ExecutionStack.d.ts +22 -22
  339. package/src/rt/ExecutionStackEntry.d.ts +7 -7
  340. package/src/rt/HandlersTable.d.ts +19 -19
  341. package/src/rt/IDataSourceViewDefinition.d.ts +6 -6
  342. package/src/rt/IDataviewHeader.d.ts +10 -10
  343. package/src/rt/IResultValue.d.ts +4 -4
  344. package/src/rt/LastFocusedManager.d.ts +23 -23
  345. package/src/rt/Operation.d.ts +97 -97
  346. package/src/rt/OperationTable.d.ts +15 -15
  347. package/src/rt/Recompute.d.ts +41 -41
  348. package/src/rt/RecomputeTable.d.ts +9 -9
  349. package/src/rt/RemoteDataviewHeader.d.ts +14 -14
  350. package/src/rt/ResultValue.d.ts +7 -7
  351. package/src/rt/TableCache.d.ts +29 -29
  352. package/src/rt/TableCacheManager.d.ts +10 -10
  353. package/src/rt/Transaction.d.ts +23 -23
  354. package/src/security/UserDetails.d.ts +16 -16
  355. package/src/tasks/IMGDataCollection.d.ts +26 -26
  356. package/src/tasks/MGData.d.ts +63 -63
  357. package/src/tasks/MGDataCollection.d.ts +42 -42
  358. package/src/tasks/RCTimer.d.ts +13 -13
  359. package/src/tasks/RemoteTaskService.d.ts +16 -16
  360. package/src/tasks/Task.d.ts +312 -312
  361. package/src/tasks/TaskBase.d.ts +123 -123
  362. package/src/tasks/TaskServiceBase.d.ts +16 -16
  363. package/src/tasks/TasksTable.d.ts +21 -21
  364. package/src/tasks/sort/Sort.d.ts +4 -4
  365. package/src/tasks/sort/SortCollection.d.ts +11 -11
  366. package/src/util/ConstUtils.d.ts +3 -3
  367. package/src/util/FlowMonitorQueue.d.ts +70 -70
  368. package/src/util/HeapSort.d.ts +6 -6
  369. package/src/util/IMirrorXML.d.ts +6 -6
  370. package/src/util/IServerConfig.d.ts +11 -11
  371. package/src/util/MgBlockingQueue.d.ts +5 -5
  372. package/src/util/MgPriorityBlockingQueue.d.ts +17 -17
  373. package/src/util/MgPriorityQueue.d.ts +13 -13
  374. package/src/util/ParamParseResult.d.ts +6 -6
  375. package/src/util/PrmMap.d.ts +28 -28
  376. package/src/util/ReturnResult.d.ts +18 -18
  377. package/src/util/ReturnResultBase.d.ts +11 -11
  378. package/src/util/Scrambler.d.ts +10 -10
  379. package/src/util/UniqueIDUtils.d.ts +4 -4
  380. package/src/util/cookie.service.d.ts +8 -8
  381. package/esm2020/src/AccessHelper.mjs +0 -9
  382. package/esm2020/src/ClientManager.mjs +0 -399
  383. package/esm2020/src/CommandsProcessorBase.mjs +0 -58
  384. package/esm2020/src/CommandsProcessorManager.mjs +0 -26
  385. package/esm2020/src/CommandsTable.mjs +0 -162
  386. package/esm2020/src/ConstInterface.mjs +0 -516
  387. package/esm2020/src/FlowMonitorInterface.mjs +0 -16
  388. package/esm2020/src/GUIManager.mjs +0 -62
  389. package/esm2020/src/GlobalCommandsManager.mjs +0 -34
  390. package/esm2020/src/GuiEventsProcessor.mjs +0 -154
  391. package/esm2020/src/ServerConfig.mjs +0 -117
  392. package/esm2020/src/bridge/MagicBridge.mjs +0 -41
  393. package/esm2020/src/commands/ClientOriginatedCommandTaskTag.mjs +0 -11
  394. package/esm2020/src/commands/ClientToServer/BrowserEscEventCommand.mjs +0 -23
  395. package/esm2020/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +0 -60
  396. package/esm2020/src/commands/ClientToServer/ColumnSortEventCommand.mjs +0 -26
  397. package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +0 -260
  398. package/esm2020/src/commands/ClientToServer/CommandSerializationHelper.mjs +0 -69
  399. package/esm2020/src/commands/ClientToServer/ComputeEventCommand.mjs +0 -23
  400. package/esm2020/src/commands/ClientToServer/DataViewOutputCommand.mjs +0 -13
  401. package/esm2020/src/commands/ClientToServer/EvaluateCommand.mjs +0 -36
  402. package/esm2020/src/commands/ClientToServer/ExecOperCommand.mjs +0 -67
  403. package/esm2020/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +0 -22
  404. package/esm2020/src/commands/ClientToServer/IndexChangeEventCommand.mjs +0 -21
  405. package/esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs +0 -23
  406. package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +0 -27
  407. package/esm2020/src/commands/ClientToServer/RefreshEventCommand.mjs +0 -27
  408. package/esm2020/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +0 -24
  409. package/esm2020/src/commands/ClientToServer/RollbackEventCommand.mjs +0 -39
  410. package/esm2020/src/commands/ClientToServer/SelectProgramCommand.mjs +0 -15
  411. package/esm2020/src/commands/ClientToServer/SubformOpenEventCommand.mjs +0 -21
  412. package/esm2020/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +0 -24
  413. package/esm2020/src/commands/ClientToServer/TransactionCommand.mjs +0 -28
  414. package/esm2020/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +0 -18
  415. package/esm2020/src/commands/DataViewCommandBase.mjs +0 -10
  416. package/esm2020/src/commands/IClientTargetedCommand.mjs +0 -9
  417. package/esm2020/src/commands/ServerToClient/AbortCommand.mjs +0 -65
  418. package/esm2020/src/commands/ServerToClient/AddRangeCommand.mjs +0 -62
  419. package/esm2020/src/commands/ServerToClient/AddSortCommand.mjs +0 -33
  420. package/esm2020/src/commands/ServerToClient/ClientRefreshCommand.mjs +0 -25
  421. package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +0 -27
  422. package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +0 -45
  423. package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +0 -221
  424. package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +0 -37
  425. package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +0 -83
  426. package/esm2020/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +0 -132
  427. package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +0 -17
  428. package/esm2020/src/data/DataView.mjs +0 -1610
  429. package/esm2020/src/data/DataviewManager.mjs +0 -28
  430. package/esm2020/src/data/DataviewManagerBase.mjs +0 -15
  431. package/esm2020/src/data/DvCache.mjs +0 -67
  432. package/esm2020/src/data/Field.mjs +0 -646
  433. package/esm2020/src/data/FieldBase.mjs +0 -18
  434. package/esm2020/src/data/FieldsTable.mjs +0 -103
  435. package/esm2020/src/data/Key.mjs +0 -88
  436. package/esm2020/src/data/Record.mjs +0 -846
  437. package/esm2020/src/data/RecordsTable.mjs +0 -267
  438. package/esm2020/src/data/TaskTransactionManager.mjs +0 -103
  439. package/esm2020/src/data/XMLBasedDcValuesBuilder.mjs +0 -74
  440. package/esm2020/src/env/EnvVariablesTable.mjs +0 -340
  441. package/esm2020/src/env/Environment.mjs +0 -489
  442. package/esm2020/src/env/LanguageData.mjs +0 -226
  443. package/esm2020/src/env/MirrorString.mjs +0 -65
  444. package/esm2020/src/event/ActionManager.mjs +0 -91
  445. package/esm2020/src/event/Event.mjs +0 -1333
  446. package/esm2020/src/event/EventHandler.mjs +0 -766
  447. package/esm2020/src/event/EventHandlerPosition.mjs +0 -204
  448. package/esm2020/src/event/EventsManager.mjs +0 -2975
  449. package/esm2020/src/event/RunTimeEvent.mjs +0 -392
  450. package/esm2020/src/event/UserEventsTable.mjs +0 -47
  451. package/esm2020/src/exp/ExpTable.mjs +0 -59
  452. package/esm2020/src/exp/Expression.mjs +0 -200
  453. package/esm2020/src/exp/ExpressionDict.mjs +0 -727
  454. package/esm2020/src/exp/ExpressionEvaluator.mjs +0 -4212
  455. package/esm2020/src/exp/ExpressionLocalJpn.mjs +0 -314
  456. package/esm2020/src/exp/GlobalParamsTable.mjs +0 -85
  457. package/esm2020/src/exp/YesNoExp.mjs +0 -36
  458. package/esm2020/src/gui/CreatedFormVector.mjs +0 -23
  459. package/esm2020/src/gui/FormsTable.mjs +0 -66
  460. package/esm2020/src/gui/MgControl.mjs +0 -353
  461. package/esm2020/src/gui/MgForm.mjs +0 -1181
  462. package/esm2020/src/http/HttpManager.mjs +0 -97
  463. package/esm2020/src/http/client/HttpClientAsync.mjs +0 -67
  464. package/esm2020/src/http/client/HttpClientBase.mjs +0 -132
  465. package/esm2020/src/http/client/HttpClientEvents.mjs +0 -39
  466. package/esm2020/src/http/client/HttpClientSync.mjs +0 -42
  467. package/esm2020/src/http/client/HttpUtility.mjs +0 -84
  468. package/esm2020/src/remote/AddUserLocateRemoteDataViewCommand.mjs +0 -18
  469. package/esm2020/src/remote/AddUserRangeRemoteDataViewCommand.mjs +0 -18
  470. package/esm2020/src/remote/AddUserSortRemoteDataViewCommand.mjs +0 -18
  471. package/esm2020/src/remote/RemoteCommandsProcessor.mjs +0 -880
  472. package/esm2020/src/remote/RemoteControlItemsRefreshCommand.mjs +0 -25
  473. package/esm2020/src/remote/RemoteDataViewCommandBase.mjs +0 -24
  474. package/esm2020/src/remote/RemoteDataViewCommandFactory.mjs +0 -61
  475. package/esm2020/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +0 -17
  476. package/esm2020/src/remote/ResetUserSortRemoteDataviewCommand.mjs +0 -16
  477. package/esm2020/src/remote/ServerError.mjs +0 -40
  478. package/esm2020/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +0 -20
  479. package/esm2020/src/rt/Argument.mjs +0 -265
  480. package/esm2020/src/rt/ArgumentsList.mjs +0 -103
  481. package/esm2020/src/rt/Boundary.mjs +0 -152
  482. package/esm2020/src/rt/CompMainPrgTable.mjs +0 -65
  483. package/esm2020/src/rt/DataviewHeaders.mjs +0 -53
  484. package/esm2020/src/rt/DataviewHeadersSaxHandler.mjs +0 -38
  485. package/esm2020/src/rt/ExecutionStack.mjs +0 -94
  486. package/esm2020/src/rt/HandlersTable.mjs +0 -96
  487. package/esm2020/src/rt/LastFocusedManager.mjs +0 -67
  488. package/esm2020/src/rt/Operation.mjs +0 -735
  489. package/esm2020/src/rt/OperationTable.mjs +0 -67
  490. package/esm2020/src/rt/Recompute.mjs +0 -355
  491. package/esm2020/src/rt/RecomputeTable.mjs +0 -63
  492. package/esm2020/src/rt/RemoteDataviewHeader.mjs +0 -108
  493. package/esm2020/src/rt/ResultValue.mjs +0 -12
  494. package/esm2020/src/rt/TableCache.mjs +0 -177
  495. package/esm2020/src/rt/TableCacheManager.mjs +0 -67
  496. package/esm2020/src/rt/Transaction.mjs +0 -53
  497. package/esm2020/src/security/UserDetails.mjs +0 -71
  498. package/esm2020/src/tasks/MGData.mjs +0 -552
  499. package/esm2020/src/tasks/MGDataCollection.mjs +0 -252
  500. package/esm2020/src/tasks/RCTimer.mjs +0 -63
  501. package/esm2020/src/tasks/RemoteTaskService.mjs +0 -45
  502. package/esm2020/src/tasks/Task.mjs +0 -2495
  503. package/esm2020/src/tasks/TaskBase.mjs +0 -87
  504. package/esm2020/src/tasks/TaskServiceBase.mjs +0 -25
  505. package/esm2020/src/tasks/TasksTable.mjs +0 -80
  506. package/esm2020/src/tasks/sort/Sort.mjs +0 -7
  507. package/esm2020/src/tasks/sort/SortCollection.mjs +0 -67
  508. package/esm2020/src/util/ConstUtils.mjs +0 -14
  509. package/esm2020/src/util/FlowMonitorQueue.mjs +0 -453
  510. package/esm2020/src/util/HeapSort.mjs +0 -70
  511. package/esm2020/src/util/MgPriorityBlockingQueue.mjs +0 -74
  512. package/esm2020/src/util/MgPriorityQueue.mjs +0 -66
  513. package/esm2020/src/util/PrmMap.mjs +0 -151
  514. package/esm2020/src/util/ReturnResult.mjs +0 -46
  515. package/esm2020/src/util/ReturnResultBase.mjs +0 -18
  516. package/esm2020/src/util/Scrambler.mjs +0 -89
  517. package/esm2020/src/util/UniqueIDUtils.mjs +0 -12
  518. package/esm2020/src/util/cookie.service.mjs +0 -92
  519. package/fesm2015/magic-xpa-engine.mjs +0 -30835
  520. package/fesm2015/magic-xpa-engine.mjs.map +0 -1
  521. package/fesm2020/magic-xpa-engine.mjs.map +0 -1
@@ -0,0 +1,108 @@
1
+ import { List } from "@magic-xpa/mscorelib";
2
+ import { StorageAttribute } from "@magic-xpa/utils";
3
+ import { DisplayConvertor, PIC } from "@magic-xpa/gui";
4
+ import { DataviewHeaderBase } from "./DataviewHeaderBase";
5
+ import { TableCache } from "./TableCache";
6
+ import { Record } from "../data/Record";
7
+ import { ConstInterface } from "../ConstInterface";
8
+ import { TableCacheManager } from "./TableCacheManager";
9
+ import { AccessHelper } from "../AccessHelper";
10
+ export class RemoteDataviewHeader extends DataviewHeaderBase {
11
+ _table = null;
12
+ _lastFetchRecPos = null;
13
+ constructor(task) {
14
+ super(task);
15
+ }
16
+ setAttribute(attribute, valueStr) {
17
+ switch (attribute) {
18
+ case ConstInterface.MG_ATTR_CACHED_TABLE:
19
+ if (valueStr != "") {
20
+ if (TableCacheManager.Instance.TableExists(valueStr))
21
+ this._table = TableCacheManager.Instance.GetTableById(valueStr);
22
+ else {
23
+ this._table = new TableCache(valueStr);
24
+ TableCacheManager.Instance.InsertTable(this._table);
25
+ }
26
+ }
27
+ break;
28
+ case ConstInterface.MG_ATTR_IDENT:
29
+ if (valueStr != "")
30
+ this._table.SetTableIdent(valueStr);
31
+ break;
32
+ default:
33
+ super.setAttribute(attribute, valueStr);
34
+ break;
35
+ }
36
+ }
37
+ async getLinkedRecord(curRec) {
38
+ let lnkFlds = this._task.DataView.GetFieldsTab().getLinkFields(this._id);
39
+ let ret = false;
40
+ if (this._cond.getVal()) {
41
+ if (this.Loc == null) {
42
+ this.Loc = new List();
43
+ for (let i = 0; i < lnkFlds.length; i++) {
44
+ let currLoc = lnkFlds.get_Item(i).Locate;
45
+ if (currLoc != null) {
46
+ this.Loc.push(currLoc);
47
+ await currLoc.compute(false);
48
+ }
49
+ }
50
+ }
51
+ else {
52
+ for (let i = 0; i < this.Loc.length; i++)
53
+ await this.Loc.get_Item(i).compute(false);
54
+ }
55
+ await this._table.SortTable(this._keyIdx, this._dir);
56
+ let res = this._table.Fetch(this.Loc);
57
+ if (res == null)
58
+ await this.initRec(curRec, false);
59
+ else {
60
+ ret = true;
61
+ await this.copyLinkFldToRec(curRec, lnkFlds, res, true);
62
+ }
63
+ }
64
+ else
65
+ await this.initRec(curRec, false);
66
+ return ret;
67
+ }
68
+ async copyLinkFldToRec(curRec, linkFlds, tableRec, ret) {
69
+ this._lastFetchRecPos = tableRec.getDbPosVal();
70
+ for (let i = 0; i < linkFlds.length; i++) {
71
+ let curFld = linkFlds.get_Item(i);
72
+ curRec.setFieldValue(curFld.getId(), tableRec.GetFieldValue(curFld.CacheTableFldIdx), false);
73
+ curRec.clearFlag(curFld.getId(), Record.FLAG_INVALID);
74
+ curFld.invalidate(true, false);
75
+ }
76
+ await this.SetReturnValue(ret, true);
77
+ }
78
+ async initRec(currRec, ret) {
79
+ this._lastFetchRecPos = "#";
80
+ await this.InitLinkFields(currRec);
81
+ let retFld = this.ReturnField;
82
+ if (retFld != null) {
83
+ currRec.setFieldValue(retFld.getId(), (ret ? "1" : "0"), false);
84
+ retFld.invalidate(true, false);
85
+ }
86
+ }
87
+ getLastFetchedDbPos() {
88
+ return this._lastFetchRecPos;
89
+ }
90
+ async SetReturnValue(ret, recompute) {
91
+ let returnField = this.ReturnField;
92
+ if (returnField !== null) {
93
+ let enforceVariableChange = returnField.getTask() !== this.Task;
94
+ AccessHelper.eventsManager.pushNewExecStacks();
95
+ let result = ret ? "1" : "0";
96
+ if (returnField.getType() === StorageAttribute.NUMERIC)
97
+ result = DisplayConvertor.Instance.toNum(result, new PIC(returnField.getPicture(), StorageAttribute.NUMERIC, 0), 0);
98
+ await returnField.setValueAndStartRecompute(result, false, recompute, false, false, enforceVariableChange);
99
+ AccessHelper.eventsManager.popNewExecStacks();
100
+ if (!recompute)
101
+ returnField.setModified();
102
+ returnField.invalidate(true, false);
103
+ if (returnField.getTask() !== this.Task)
104
+ await returnField.updateDisplay();
105
+ }
106
+ }
107
+ }
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVtb3RlRGF0YXZpZXdIZWFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1JlbW90ZURhdGF2aWV3SGVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFJdEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUs3QyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsa0JBQWtCO0lBQ2xELE1BQU0sR0FBZSxJQUFJLENBQUM7SUFDMUIsZ0JBQWdCLEdBQVcsSUFBSSxDQUFDO0lBRXhDLFlBQVksSUFBVTtRQUNwQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRVMsWUFBWSxDQUFDLFNBQWlCLEVBQUUsUUFBZ0I7UUFDeEQsUUFBUSxTQUFTLEVBQUUsQ0FBQztZQUVsQixLQUFLLGNBQWMsQ0FBQyxvQkFBb0I7Z0JBQ3RDLElBQUksUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNuQixJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO3dCQUNsRCxJQUFJ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SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xpc3R9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge1N0b3JhZ2VBdHRyaWJ1dGV9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7RGlzcGxheUNvbnZlcnRvciwgUElDfSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHtEYXRhdmlld0hlYWRlckJhc2V9IGZyb20gXCIuL0RhdGF2aWV3SGVhZGVyQmFzZVwiO1xyXG5pbXBvcnQge1RhYmxlQ2FjaGV9IGZyb20gXCIuL1RhYmxlQ2FjaGVcIjtcclxuaW1wb3J0IHtUYXNrfSBmcm9tIFwiLi4vdGFza3MvVGFza1wiO1xyXG5pbXBvcnQge1JlY29yZH0gZnJvbSBcIi4uL2RhdGEvUmVjb3JkXCI7XHJcbmltcG9ydCB7RmllbGR9IGZyb20gXCIuLi9kYXRhL0ZpZWxkXCI7XHJcbmltcG9ydCB7RmllbGRzVGFibGVFeHQgYXMgRmllbGRzVGFibGV9IGZyb20gXCIuLi9kYXRhL0ZpZWxkc1RhYmxlXCI7XHJcbmltcG9ydCB7Qm91bmRhcnl9IGZyb20gXCIuL0JvdW5kYXJ5XCI7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gXCIuLi9Db25zdEludGVyZmFjZVwiO1xyXG5pbXBvcnQge1RhYmxlQ2FjaGVNYW5hZ2VyfSBmcm9tIFwiLi9UYWJsZUNhY2hlTWFuYWdlclwiO1xyXG5pbXBvcnQge0FjY2Vzc0hlbHBlcn0gZnJvbSBcIi4uL0FjY2Vzc0hlbHBlclwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gbGluayB0byBSZW1vdGUgdGFibGVcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFJlbW90ZURhdGF2aWV3SGVhZGVyIGV4dGVuZHMgRGF0YXZpZXdIZWFkZXJCYXNlIHtcclxuICBwcml2YXRlIF90YWJsZTogVGFibGVDYWNoZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfbGFzdEZldGNoUmVjUG9zOiBzdHJpbmcgPSBudWxsOyAvLyB0aGUgZGIgcG9zIG9mIHRoZSBsYXN0IGZldGNoZWQgcmVjb3JkIGZyb20gdGhlIHRhYmxlIGNhY2hlXHJcblxyXG4gIGNvbnN0cnVjdG9yKHRhc2s6IFRhc2spIHtcclxuICAgIHN1cGVyKHRhc2spO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWVTdHI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DQUNIRURfVEFCTEU6XHJcbiAgICAgICAgaWYgKHZhbHVlU3RyICE9IFwiXCIpIHtcclxuICAgICAgICAgIGlmIChUYWJsZUNhY2hlTWFuYWdlci5JbnN0YW5jZS5UYWJsZUV4aXN0cyh2YWx1ZVN0cikpXHJcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlID0gVGFibGVDYWNoZU1hbmFnZXIuSW5zdGFuY2UuR2V0VGFibGVCeUlkKHZhbHVlU3RyKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl90YWJsZSA9IG5ldyBUYWJsZUNhY2hlKHZhbHVlU3RyKTtcclxuICAgICAgICAgICAgVGFibGVDYWNoZU1hbmFnZXIuSW5zdGFuY2UuSW5zZXJ0VGFibGUodGhpcy5fdGFibGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9JREVOVDpcclxuICAgICAgICBpZiAodmFsdWVTdHIgIT0gXCJcIilcclxuICAgICAgICAgIHRoaXMuX3RhYmxlLlNldFRhYmxlSWRlbnQodmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBzdXBlci5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgd2lsbCByZXR1cm4gdGhlIGxpbmtlZCByZWNvcmQgYWNjb3JkaW5nIHRvIHRoZSBsaW5rIHByb3BlcnRpZXMgYW5kIHRoZSBjdXJyZW50IHJlY29yZFxyXG4gIC8vLyAgIHRoaXMgbWV0aG9kIHdpbGwgY2hhbmdlIHRoZSBjdXJyZW50IHJlY29yZCBmaWVsZHMgdmFsdWVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGlua2VkUmVjb3JkKGN1clJlYzogUmVjb3JkKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBsZXQgbG5rRmxkcyA9ICg8RmllbGRzVGFibGU+IHRoaXMuX3Rhc2suRGF0YVZpZXcuR2V0RmllbGRzVGFiKCkpLmdldExpbmtGaWVsZHModGhpcy5faWQpO1xyXG4gICAgbGV0IHJldDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLl9jb25kLmdldFZhbCgpKSB7XHJcblxyXG4gICAgICAvLyBidWlsZCBsb2NhdGUgYW5kIHJhbmdlIHZlY3RvcnNcclxuICAgICAgaWYgKHRoaXMuTG9jID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLkxvYyA9IG5ldyBMaXN0PEJvdW5kYXJ5PigpO1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBsbmtGbGRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgY3VyckxvYzogQm91bmRhcnkgPSBsbmtGbGRzLmdldF9JdGVtKGkpLkxvY2F0ZTtcclxuICAgICAgICAgIGlmIChjdXJyTG9jICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5Mb2MucHVzaChjdXJyTG9jKTtcclxuICAgICAgICAgICAgYXdhaXQgY3VyckxvYy5jb21wdXRlKGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gY29tcHV0ZSB0aGUgcmFuZ2UgYW5kIGxvY2F0ZSBleHByZXNzaW9ucyBhbmV3XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuTG9jLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5Mb2MuZ2V0X0l0ZW0oaSkuY29tcHV0ZShmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gc29ydCB0aGUgdGFibGUgKGlmIHRoZSB0YWJsZSB3YXMgbm90IGxvYWRlZCB5ZXQgaXQgd2lsbCBhbHNvIGxvYWQgaXRcclxuICAgICAgYXdhaXQgdGhpcy5fdGFibGUuU29ydFRhYmxlKHRoaXMuX2tleUlkeCwgdGhpcy5fZGlyKTtcclxuICAgICAgLy8gcGVyZm9ybSB0aGUgbGlua1xyXG4gICAgICBsZXQgcmVzOiBSZWNvcmQgPSB0aGlzLl90YWJsZS5GZXRjaCh0aGlzLkxvYyk7XHJcbiAgICAgIGlmIChyZXMgPT0gbnVsbClcclxuICAgICAgLy8gbGluayBmYWlsZFxyXG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdFJlYyhjdXJSZWMsIGZhbHNlKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0ID0gdHJ1ZTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNvcHlMaW5rRmxkVG9SZWMoY3VyUmVjLCBsbmtGbGRzLCByZXMsIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBjYWxjdWxhdGUgaW5pdCBleHByZXNzaW9ucyBpZiB0aGVyZSBhcmUgYW55IG9yIGRlZmF1bHQgdmFsdWVzXHJcbiAgICBlbHNlXHJcbiAgICAgIGF3YWl0IHRoaXMuaW5pdFJlYyhjdXJSZWMsICBmYWxzZSk7IC8vIGV2ZXJ5IHNjZW5hcmlvIHdoZXJlIHRoZSBsaW5rZWQgZGlkIG5vdFxyXG4gICAgLy8gcmV0dXJuZWQgYW55IHJlY29yZCBmcm8gZXhhbXBsZSBoZXJlIHdoZW5cclxuICAgIC8vIHRoZSBsaW5rIGNvbmRpdGlvbiBpcyBmYWxzZSB0aGVuIHRoZSBsaW5rIGlzXHJcbiAgICAvLyBjb25zaWRlcmVkIHRvIGhhcyBmYWlsZWQgYW5kIHNob3VsZCByZXR1cm5cclxuICAgIC8vIGZhbHNlIGFzIHJldHVybiB2YWx1ZVxyXG5cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgaWYgdGhlIGxpbmsgc3VjY2VlZGVkIGNvcGllcyB0aGUgdmFsdWVzIHJldHVybiBmcm9tIHRoZSBsaW5rZWQgdGFibGUgcmVjb3JkXHJcbiAgLy8vICAgdG8gdGhlIGN1cnJlbnQgZGF0YSB2aWV3IHJlY29yZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhc3luYyBjb3B5TGlua0ZsZFRvUmVjKGN1clJlYzogUmVjb3JkLCBsaW5rRmxkczogTGlzdDxGaWVsZD4sIHRhYmxlUmVjOiBSZWNvcmQsIHJldDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gaWYgd2UgZ290IGhlcmUgaXQgbWVhbnMgdGhhdCB3ZSBoYXZlIHN1Y2Nlc3NmdWxseSBmZXRjaCBhIHJlY29yZCBmcm9tIHRoZSBsaW5rXHJcbiAgICAvLyBzZXQgdGhlIGxhc3RGZXRjaFJlY1BvcyB0byBiZSB0aGUgcG9zIG9mIHRoZSBmZXRjaGVkIHJlY29yZFxyXG4gICAgdGhpcy5fbGFzdEZldGNoUmVjUG9zID0gdGFibGVSZWMuZ2V0RGJQb3NWYWwoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbGlua0ZsZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGN1ckZsZDogRmllbGQgPSBsaW5rRmxkcy5nZXRfSXRlbShpKTtcclxuICAgICAgY3VyUmVjLnNldEZpZWxkVmFsdWUoY3VyRmxkLmdldElkKCksIHRhYmxlUmVjLkdldEZpZWxkVmFsdWUoY3VyRmxkLkNhY2hlVGFibGVGbGRJZHgpLCBmYWxzZSk7XHJcblxyXG4gICAgICAvLyBjbGVhciB0aGUgaW52YWxpZCBmbGFnIGluIGNhc2UgaXQgd2FzIHNldFxyXG4gICAgICBjdXJSZWMuY2xlYXJGbGFnKGN1ckZsZC5nZXRJZCgpLCBSZWNvcmQuRkxBR19JTlZBTElEKTtcclxuICAgICAgY3VyRmxkLmludmFsaWRhdGUodHJ1ZSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgLy8gc2V0IHRoZSByZXQgdmFsdWVcclxuICAgIGF3YWl0IHRoaXMuU2V0UmV0dXJuVmFsdWUocmV0LCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBpbiBjYXNlIHRoZSBsaW5rIGZhaWxzIHNldCB0aGUgdmFsdWUgdG8gZGVmYXVsdCBvciB0byB0aGUgdmFsdWUgb2YgdGhlIGluaXQgZXhwcmVzc2lvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhc3luYyBpbml0UmVjKGN1cnJSZWM6IFJlY29yZCwgcmV0OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBpZiB3ZSBhcmUgaGVyZSBpdCBtZWFucyB0aGF0IHdlIHRyaWVkIHRvIGZldGNoIGEgcmVjb3JkIGJ1dCBmYWlsZWQgdG8gZmluZCBvbmUgdGhlcmVmb3JcclxuICAgIC8vIHRoZSBsYXN0RmV0Y2hSZWNQb3Mgc2hvdWxkIGJlIG1hcmtlZCBhY2NvcmRpbmdseVxyXG4gICAgdGhpcy5fbGFzdEZldGNoUmVjUG9zID0gXCIjXCI7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5Jbml0TGlua0ZpZWxkcyhjdXJyUmVjKTtcclxuXHJcbiAgICAvLyBzZXQgdGhlIHJldCB2YWx1ZVxyXG4gICAgbGV0IHJldEZsZCA9IHRoaXMuUmV0dXJuRmllbGQ7XHJcbiAgICBpZiAocmV0RmxkICE9IG51bGwpIHtcclxuICAgICAgY3VyclJlYy5zZXRGaWVsZFZhbHVlKHJldEZsZC5nZXRJZCgpLCAocmV0ID8gXCIxXCIgOiBcIjBcIiksIGZhbHNlKTtcclxuICAgICAgcmV0RmxkLmludmFsaWRhdGUodHJ1ZSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIGxhc3QgZmV0Y2ggcmVjb3JkIGRiIHBvcyB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIGdldExhc3RGZXRjaGVkRGJQb3MoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sYXN0RmV0Y2hSZWNQb3M7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHVwZGF0ZSBsaW5rIHJlc3VsdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3VyUmVjXCI+Y3VycmVudCByZWNvcmQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJldFwiPmxpbmsgc3VjY2VzczwvcGFyYW0+XHJcbiAgYXN5bmMgU2V0UmV0dXJuVmFsdWUoIHJldDogYm9vbGVhbiwgcmVjb21wdXRlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgcmV0dXJuRmllbGQ6IEZpZWxkID0gdGhpcy5SZXR1cm5GaWVsZDtcclxuXHJcbiAgICBpZiAocmV0dXJuRmllbGQgIT09IG51bGwpIHtcclxuICAgICAgbGV0IGVuZm9yY2VWYXJpYWJsZUNoYW5nZTogYm9vbGVhbiA9IHJldHVybkZpZWxkLmdldFRhc2soKSAhPT0gdGhpcy5UYXNrO1xyXG5cclxuICAgICAgLy8gaWYgd2UgYXJlIGZldGNoaW5nIGZpcnN0IGNodW5rIHdlIGRpZG4ndCB1cGRhdGVkIHRoZSBleGVjdXR1aW9uIHN0YWNrIHlldFxyXG4gICAgICBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5wdXNoTmV3RXhlY1N0YWNrcygpO1xyXG4gICAgICAvLyBzYW1lIGFzIE5vblJlY29tcHV0ZVZhckNoYW5nZUV2ZW50IG9uIHNlcnZlciBmZXRjaC5jcHBcclxuXHJcbiAgICAgIC8vIGlmIHRoZSByZXR1cm4gZmllbGQgaXMgbnVtZXJpYywgdGhlbiBjb252ZXJ0IHJlc3VsdCB2YWx1ZSB0b051bSgpIGJlZm9yZSBwYXNzaW5nIHRvIHNldFZhbHVlQW5kU3RhcnRSZWNvbXB1dGUoKS5cclxuICAgICAgbGV0IHJlc3VsdDogc3RyaW5nID0gcmV0ID8gXCIxXCIgOiBcIjBcIjtcclxuICAgICAgaWYgKHJldHVybkZpZWxkLmdldFR5cGUoKSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDKVxyXG4gICAgICAgIHJlc3VsdCA9IERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UudG9OdW0ocmVzdWx0LCBuZXcgUElDKHJldHVybkZpZWxkLmdldFBpY3R1cmUoKSwgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDLCAwKSwgMCk7XHJcblxyXG4gICAgICBhd2FpdCByZXR1cm5GaWVsZC5zZXRWYWx1ZUFuZFN0YXJ0UmVjb21wdXRlKHJlc3VsdCwgZmFsc2UsIHJlY29tcHV0ZSwgZmFsc2UsIGZhbHNlLCBlbmZvcmNlVmFyaWFibGVDaGFuZ2UpO1xyXG5cclxuICAgICAgQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIucG9wTmV3RXhlY1N0YWNrcygpO1xyXG5cclxuICAgICAgaWYgKCFyZWNvbXB1dGUpXHJcbiAgICAgICAgcmV0dXJuRmllbGQuc2V0TW9kaWZpZWQoKTtcclxuXHJcbiAgICAgIHJldHVybkZpZWxkLmludmFsaWRhdGUodHJ1ZSwgZmFsc2UpO1xyXG5cclxuICAgICAgLy8gSWYgZmllbGQgaXMgZnJvbSBhbm90aGVyIHRhc2ssIG5lZWQgdG8gdXBkYXRlIHRoZSBkaXNwbGF5IGFzIHdlbGxcclxuICAgICAgaWYgKHJldHVybkZpZWxkLmdldFRhc2soKSAhPT0gdGhpcy5UYXNrKVxyXG4gICAgICAgIGF3YWl0IHJldHVybkZpZWxkLnVwZGF0ZURpc3BsYXkoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,10 @@
1
+ import { StorageAttribute } from "@magic-xpa/utils";
2
+ export class ResultValue {
3
+ Value = null;
4
+ Type = StorageAttribute.NONE;
5
+ SetResultValue(result, type) {
6
+ this.Value = result;
7
+ this.Type = type;
8
+ }
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzdWx0VmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1Jlc3VsdFZhbHVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBS2xELE1BQU0sT0FBTyxXQUFXO0lBQ3RCLEtBQUssR0FBVyxJQUFJLENBQUM7SUFDckIsSUFBSSxHQUFxQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7SUFPL0MsY0FBYyxDQUFDLE1BQWMsRUFBRSxJQUFzQjtRQUNuRCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lSZXN1bHRWYWx1ZX0gZnJvbSBcIi4vSVJlc3VsdFZhbHVlXCI7XHJcbmltcG9ydCB7U3RvcmFnZUF0dHJpYnV0ZX0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vIFRoaXMgY2xhc3MgaXMgaW50cm9kdWNlZCB0byByZWFkIHRoZSByZXN1bHQgZnJvbSBzZXJ2ZXIgZm9yIGFueSBvcGVyYXRpb24uXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBSZXN1bHRWYWx1ZSBpbXBsZW1lbnRzIElSZXN1bHRWYWx1ZSB7XHJcbiAgVmFsdWU6IHN0cmluZyA9IG51bGw7IC8vIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIHNlcnZlclxyXG4gIFR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUgPSBTdG9yYWdlQXR0cmlidXRlLk5PTkU7IC8vIHRoZSB0eXBlIG9mIHRoZSByZXN1bHQgd2hpY2ggaXMgcmV0dXJuZWQgYnkgdGhlIHNlcnZlclxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHJlc3VsdCB2YWx1ZSBieSB0aGUgUmVzdWx0IGNvbW1hbmRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicmVzdWx0XCI+dGhlIHJlc3VsdCBjb21wdXRlZCBieSB0aGUgc2VydmVyIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0eXBlXCI+dGhlIHR5cGUgb2YgdGhlIHJlc3VsdCB3aGljaCB3YXMgY29tcHV0ZWQgYnkgdGhlIHNlcnZlciA8L3BhcmFtPlxyXG4gIFNldFJlc3VsdFZhbHVlKHJlc3VsdDogc3RyaW5nLCB0eXBlOiBTdG9yYWdlQXR0cmlidXRlKTogdm9pZCB7XHJcbiAgICB0aGlzLlZhbHVlID0gcmVzdWx0O1xyXG4gICAgdGhpcy5UeXBlID0gdHlwZTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,177 @@
1
+ import { List, NString } from "@magic-xpa/mscorelib";
2
+ import { Key } from "../data/Key";
3
+ import { FieldsTableExt as FieldsTable } from "../data/FieldsTable";
4
+ import { Logger, XMLConstants, XmlParser } from "@magic-xpa/utils";
5
+ import { RuntimeContextBase } from "@magic-xpa/gui";
6
+ import { Record } from "../data/Record";
7
+ import { HeapSort } from "../util/HeapSort";
8
+ import { ConstInterface } from "../ConstInterface";
9
+ import { TableCacheManager } from "./TableCacheManager";
10
+ export class TableCache {
11
+ _keys = null;
12
+ _records = null;
13
+ _currSortDir = '\0';
14
+ _currSortKey = 0;
15
+ FldsTab = null;
16
+ _isLoaded = false;
17
+ _tableIdent = null;
18
+ _tableUId = null;
19
+ constructor(tableId) {
20
+ this._tableUId = tableId;
21
+ this._keys = new List();
22
+ this._records = new List();
23
+ this._isLoaded = false;
24
+ }
25
+ SetTableIdent(ident) {
26
+ if (this._tableIdent === null)
27
+ this._tableIdent = ident;
28
+ else if (this._tableIdent !== ident) {
29
+ Logger.Instance.WriteExceptionToLogWithMsg("in TableCache.setTableIdent() already set and table identifier does not match");
30
+ }
31
+ }
32
+ FillData() {
33
+ let parser = RuntimeContextBase.Instance.Parser;
34
+ this.FillAttributes(parser);
35
+ while (this.InitInnerObjects(parser, parser.getNextTag())) {
36
+ }
37
+ }
38
+ FillAttributes(parser) {
39
+ let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_CLOSE, parser.getCurrIndex());
40
+ if (endContext !== -1 && endContext < parser.getXMLdata().length) {
41
+ let tag = parser.getXMLsubstring(endContext);
42
+ parser.add2CurrIndex(tag.indexOf(ConstInterface.MG_TAG_CACHED_TABLE) + ConstInterface.MG_TAG_CACHED_TABLE.length);
43
+ let tokensVector = XmlParser.getTokens(parser.getXMLsubstring(endContext), XMLConstants.XML_ATTR_DELIM);
44
+ for (let j = 0; j < tokensVector.length; j += 2) {
45
+ let attribute = (tokensVector.get_Item(j));
46
+ let valueStr = (tokensVector.get_Item(j + 1));
47
+ switch (attribute) {
48
+ case XMLConstants.MG_ATTR_ID:
49
+ if (this._tableUId.indexOf(valueStr) === -1) {
50
+ this._tableUId = valueStr;
51
+ Logger.Instance.WriteExceptionToLogWithMsg("in TableCache.fillAttributes() table unique id does not match");
52
+ }
53
+ break;
54
+ case XMLConstants.MG_ATTR_NAME:
55
+ break;
56
+ case ConstInterface.MG_ATTR_IDENT:
57
+ if (this._tableIdent !== valueStr) {
58
+ this._tableIdent = valueStr;
59
+ Logger.Instance.WriteExceptionToLogWithMsg("in TableCache.fillAttributes() table identifier id does not match");
60
+ }
61
+ break;
62
+ default:
63
+ Logger.Instance.WriteExceptionToLogWithMsg(NString.Format("Unrecognized attribute: '{0}'", attribute));
64
+ break;
65
+ }
66
+ }
67
+ parser.setCurrIndex(++endContext);
68
+ return;
69
+ }
70
+ Logger.Instance.WriteExceptionToLogWithMsg("in TableCache.fillAttributes() out of string bounds");
71
+ }
72
+ InitInnerObjects(parser, foundTagName) {
73
+ if (foundTagName == null)
74
+ return false;
75
+ switch (foundTagName) {
76
+ case XMLConstants.MG_TAG_FLDH:
77
+ this.FldsTab = new FieldsTable();
78
+ this.FldsTab.fillData(parser);
79
+ break;
80
+ case ConstInterface.MG_ATTR_KEY: {
81
+ let current = new Key(this);
82
+ current.FillData(parser);
83
+ this._keys.push(current);
84
+ break;
85
+ }
86
+ case ConstInterface.MG_TAG_RECORDS:
87
+ parser.setCurrIndex(parser.getXMLdata().indexOf(XMLConstants.TAG_CLOSE, parser.getCurrIndex()) + 1);
88
+ break;
89
+ case ConstInterface.MG_TAG_RECORDS_END:
90
+ parser.setCurrIndex2EndOfTag();
91
+ break;
92
+ case ConstInterface.MG_TAG_CACHED_TABLE_END:
93
+ parser.setCurrIndex2EndOfTag();
94
+ return false;
95
+ case ConstInterface.MG_TAG_REC: {
96
+ let current = new Record(this);
97
+ current.Initialize();
98
+ current.fillData(parser);
99
+ this._records.push(current);
100
+ break;
101
+ }
102
+ }
103
+ return true;
104
+ }
105
+ GetTableUniqueId() {
106
+ return this._tableUId;
107
+ }
108
+ GetTableCommonIdentifier() {
109
+ return this._tableIdent;
110
+ }
111
+ GetCurrSortKey() {
112
+ return this._currSortKey;
113
+ }
114
+ GetKeyById(keyId) {
115
+ for (let i = 0; i < this._keys.length; i = i + 1) {
116
+ if (this._keys.get_Item(i).GetKeyId() === keyId)
117
+ return this._keys.get_Item(i);
118
+ }
119
+ return null;
120
+ }
121
+ async Load() {
122
+ if (!this._isLoaded) {
123
+ await TableCacheManager.Instance.LoadTable(this._tableUId);
124
+ this._isLoaded = true;
125
+ }
126
+ }
127
+ async SortTable(sortKeyId, sortDir) {
128
+ if (!this._isLoaded)
129
+ await this.Load();
130
+ if (sortKeyId !== this._currSortKey || sortDir !== this._currSortDir) {
131
+ this._currSortDir = sortDir;
132
+ this._currSortKey = sortKeyId;
133
+ let recordsArr = this._records.ToArray();
134
+ HeapSort.sort(recordsArr);
135
+ if (this._currSortDir === 'D')
136
+ this.ReverseVector(recordsArr);
137
+ for (let i = 0; i < this._records.length; i = i + 1) {
138
+ this._records.set_Item(i, recordsArr[i]);
139
+ }
140
+ }
141
+ }
142
+ Fetch(loc) {
143
+ let checkLoc = loc.length > 0;
144
+ if (this._isLoaded) {
145
+ if (!checkLoc) {
146
+ return ((this._records.length !== 0) ? this._records.get_Item(0) : null);
147
+ }
148
+ for (let i = 0; i < this._records.length; i = i + 1) {
149
+ let currRec = this._records.get_Item(i);
150
+ if (TableCache.validateRec(currRec, loc)) {
151
+ return currRec;
152
+ }
153
+ }
154
+ }
155
+ return null;
156
+ }
157
+ static validateRec(currRec, rangeCond) {
158
+ let result = true;
159
+ for (let i = 0; i < rangeCond.length; i = i + 1) {
160
+ let currCnd = rangeCond.get_Item(i);
161
+ if (!currCnd.checkRange(currRec.GetFieldValue(currCnd.getCacheTableFldId()), currRec.IsNull(currCnd.getCacheTableFldId()))) {
162
+ result = false;
163
+ break;
164
+ }
165
+ }
166
+ return result;
167
+ }
168
+ ReverseVector(array) {
169
+ let right = array.length - 1;
170
+ for (let left = 0; left < Math.floor((array.length - 1) / 2); left++, right--) {
171
+ let tmp = array[left];
172
+ array[left] = array[right];
173
+ array[right] = tmp;
174
+ }
175
+ }
176
+ }
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVDYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvcnQvVGFibGVDYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEMsT0FBTyxFQUFDLGNBQWMsSUFBSSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRTFDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt4RCxNQUFNLE9BQU8sVUFBVTtJQUNiLEtBQUssR0FBYyxJQUFJLENBQUM7SUFDeEIsUUFBUSxHQUFpQixJQUFJLENBQUM7SUFDOUIsWUFBWSxHQUFXLElBQUksQ0FBQztJQUM1QixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBRWpDLE9BQU8sR0FBZ0IsSUFBSSxDQUFDO0lBRXBCLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsV0FBVyxHQUFXLElBQUksQ0FBQztJQUMzQixTQUFTLEdBQVcsSUFBSSxDQUFDO0lBTWpDLFlBQVksT0FBZTtRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFPLENBQUM7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LGFBQWEsQ0FBQyxLQUFlO1FBQ3JDLElBQUksS0FBSyxHQUFXLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLEtBQUssSUFBSSxJQUFJLEdBQVcsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3ZGLElBQUksR0FBRyxHQUFXLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlzdCwgTlN0cmluZ30gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7S2V5fSBmcm9tIFwiLi4vZGF0YS9LZXlcIjtcclxuaW1wb3J0IHtGaWVsZHNUYWJsZUV4dCBhcyBGaWVsZHNUYWJsZSB9IGZyb20gXCIuLi9kYXRhL0ZpZWxkc1RhYmxlXCI7XHJcbmltcG9ydCB7TG9nZ2VyLCBYTUxDb25zdGFudHMsIFhtbFBhcnNlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtSdW50aW1lQ29udGV4dEJhc2V9IGZyb20gXCJAbWFnaWMteHBhL2d1aVwiO1xyXG5pbXBvcnQge1JlY29yZH0gZnJvbSBcIi4uL2RhdGEvUmVjb3JkXCI7XHJcbmltcG9ydCB7SGVhcFNvcnR9IGZyb20gXCIuLi91dGlsL0hlYXBTb3J0XCI7XHJcbmltcG9ydCB7Qm91bmRhcnl9IGZyb20gXCIuL0JvdW5kYXJ5XCI7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gXCIuLi9Db25zdEludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBUYWJsZUNhY2hlTWFuYWdlciB9IGZyb20gXCIuL1RhYmxlQ2FjaGVNYW5hZ2VyXCI7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyAgIHJlc2lkZW50IHRhYmxlIG9uIGNsaWVudFxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgVGFibGVDYWNoZSB7XHJcbiAgcHJpdmF0ZSBfa2V5czogTGlzdDxLZXk+ID0gbnVsbDtcclxuICBwcml2YXRlIF9yZWNvcmRzOiBMaXN0PFJlY29yZD4gPSBudWxsO1xyXG4gIHByaXZhdGUgX2N1cnJTb3J0RGlyOiBzdHJpbmcgPSAnXFwwJztcclxuICBwcml2YXRlIF9jdXJyU29ydEtleTogbnVtYmVyID0gMDtcclxuXHJcbiAgRmxkc1RhYjogRmllbGRzVGFibGUgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIF9pc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3RhYmxlSWRlbnQ6IHN0cmluZyA9IG51bGw7IC8vIGEgdGFibGUgaWRlbnRpZmllciB0aGlzIGlkIGlmIHNoYXJlIGJldHdlZW4gYWxsIGluc3RhbmNlcyBvZiBhIHJlc2lkZW50IHRhYmxlIHVzZWQgdG8gZGVsZXRlIG9sZCBpbnN0bmNlcyBvZiBhIHJlbG9hZGVkIHRhYmxlO1xyXG4gIHByaXZhdGUgX3RhYmxlVUlkOiBzdHJpbmcgPSBudWxsOyAvLyB0aGUgdGFibGUgdW5pcXVlIGlkIHVzZWQgdG8gbG9hZCB0aGUgdGFibGUgLSBpdCBpcyBhbHNvIHRoZSBpZCBvZiB0aGUgZGF0YS1pc2xhbmQgY29udGFpbmluZyB0aGUgdGFibGUgeG1sXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY29uc3RydWN0cyBhbiBlbXB0eSB0YWJsZSBjYWNoZSB3aXRob3V0IGxvYWRpbmcgdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3Rvcih0YWJsZUlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3RhYmxlVUlkID0gdGFibGVJZDtcclxuICAgIHRoaXMuX2tleXMgPSBuZXcgTGlzdDxLZXk+KCk7XHJcbiAgICB0aGlzLl9yZWNvcmRzID0gbmV3IExpc3Q8UmVjb3JkPigpO1xyXG4gICAgdGhpcy5faXNMb2FkZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIHRhYmxlIHNoYXJlZCBpZGVudGlmaWVyIHdpbGwgYmUgY2FsbGVkIGRpcmVjdGx5IGJlZm9yZSB0aGUgY29uc3RydWN0b3IgYW5kIGJlZm9yZSBwYXJzaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBTZXRUYWJsZUlkZW50KGlkZW50OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl90YWJsZUlkZW50ID09PSBudWxsKVxyXG4gICAgICB0aGlzLl90YWJsZUlkZW50ID0gaWRlbnQ7XHJcbiAgICBlbHNlIGlmICh0aGlzLl90YWJsZUlkZW50ICE9PSBpZGVudCkge1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBUYWJsZUNhY2hlLnNldFRhYmxlSWRlbnQoKSBhbHJlYWR5IHNldCBhbmQgdGFibGUgaWRlbnRpZmllciAgZG9lcyBub3QgbWF0Y2hcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcGFyc2VzIHRoZSB4bWwgZGF0YSBvZiB0aGUgdGFibGUgY2FjaGUgYXMgcGFydCBvZiB0aGUgbG9hZCBwcm9jZXNzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBGaWxsRGF0YSgpOiB2b2lkIHtcclxuICAgIGxldCBwYXJzZXI6IFhtbFBhcnNlciA9IFJ1bnRpbWVDb250ZXh0QmFzZS5JbnN0YW5jZS5QYXJzZXI7XHJcbiAgICB0aGlzLkZpbGxBdHRyaWJ1dGVzKHBhcnNlcik7XHJcbiAgICB3aGlsZSAodGhpcy5Jbml0SW5uZXJPYmplY3RzKHBhcnNlciwgcGFyc2VyLmdldE5leHRUYWcoKSkpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBwYXJzZXMgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGNhY2hlZFRhYmxlIHRhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBGaWxsQXR0cmlidXRlcyhwYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgbGV0IGVuZENvbnRleHQ6IG51bWJlciA9IHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX0NMT1NFLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpO1xyXG5cclxuICAgIGlmIChlbmRDb250ZXh0ICE9PSAtMSAmJiBlbmRDb250ZXh0IDwgcGFyc2VyLmdldFhNTGRhdGEoKS5sZW5ndGgpIHtcclxuICAgICAgLy8gbGFzdCBwb3NpdGlvbiBvZiBpdHMgdGFnXHJcbiAgICAgIGxldCB0YWc6IHN0cmluZyA9IHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCk7XHJcbiAgICAgIHBhcnNlci5hZGQyQ3VyckluZGV4KHRhZy5pbmRleE9mKENvbnN0SW50ZXJmYWNlLk1HX1RBR19DQUNIRURfVEFCTEUpICsgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0NBQ0hFRF9UQUJMRS5sZW5ndGgpO1xyXG5cclxuICAgICAgbGV0IHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+ID0gWG1sUGFyc2VyLmdldFRva2VucyhwYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpLCBYTUxDb25zdGFudHMuWE1MX0FUVFJfREVMSU0pO1xyXG5cclxuICAgICAgLy8gcGFyc2UgdGhlIGNhY2hlZFRhYmxlIGF0dHJpYnV0ZXNcclxuICAgICAgZm9yIChsZXQgajogbnVtYmVyID0gMDsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogKz0gMikge1xyXG4gICAgICAgIGxldCBhdHRyaWJ1dGU6IHN0cmluZyA9ICh0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaikpO1xyXG4gICAgICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSkpO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkge1xyXG4gICAgICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9JRDpcclxuXHJcbiAgICAgICAgICAgIC8vIHRoZSBpZCBvZiB0aGUgdGFibGUgaXMgcmVjaXZlZCBhdCB0aGUgY29uc3RydWN0b3IgYW5kIGRvZXMgbm90IG5lZWQgdG8gYmUgcGFyc2VkXHJcbiAgICAgICAgICAgIC8vIGhvd2V2ZXIgaXNzdWUgYSB3YXJubmluZyBpZiB0aGUgcGFyc2VkIHZhbHVlIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBjdXJyZW50IHZhbHVlXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl90YWJsZVVJZC5pbmRleE9mKHZhbHVlU3RyKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICB0aGlzLl90YWJsZVVJZCA9IHZhbHVlU3RyO1xyXG4gICAgICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcImluIFRhYmxlQ2FjaGUuZmlsbEF0dHJpYnV0ZXMoKSB0YWJsZSB1bmlxdWUgaWQgZG9lcyBub3QgbWF0Y2hcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9OQU1FOlxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSURFTlQ6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl90YWJsZUlkZW50ICE9PSB2YWx1ZVN0cikge1xyXG4gICAgICAgICAgICAgIHRoaXMuX3RhYmxlSWRlbnQgPSB2YWx1ZVN0cjtcclxuICAgICAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBUYWJsZUNhY2hlLmZpbGxBdHRyaWJ1dGVzKCkgdGFibGUgaWRlbnRpZmllciBpZCBkb2VzIG5vdCBtYXRjaFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhOU3RyaW5nLkZvcm1hdChcIlVucmVjb2duaXplZCBhdHRyaWJ1dGU6ICd7MH0nXCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcGFyc2VyLnNldEN1cnJJbmRleCgrK2VuZENvbnRleHQpOyAgLy8gdG8gZGVsZXRlIFwiPlwiIHRvb1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBUYWJsZUNhY2hlLmZpbGxBdHRyaWJ1dGVzKCkgb3V0IG9mIHN0cmluZyBib3VuZHNcIik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYWxsb2NhdGVzIGFuZCBpbml0aWFsaXplIGlubmVyIG9iamVjdCBhY2NvcmRpbmcgdG8gdGhlIGZvdW5kIHhtbCBkYXRhXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIEluaXRJbm5lck9iamVjdHMocGFyc2VyOiBYbWxQYXJzZXIsIGZvdW5kVGFnTmFtZTogU3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZm91bmRUYWdOYW1lID09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBzd2l0Y2ggKGZvdW5kVGFnTmFtZSkge1xyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19UQUdfRkxESDpcclxuICAgICAgICB0aGlzLkZsZHNUYWIgPSBuZXcgRmllbGRzVGFibGUoKTtcclxuICAgICAgICB0aGlzLkZsZHNUYWIuZmlsbERhdGEocGFyc2VyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9LRVk6IHtcclxuICAgICAgICBsZXQgY3VycmVudCA9IG5ldyBLZXkodGhpcyk7XHJcbiAgICAgICAgY3VycmVudC5GaWxsRGF0YShwYXJzZXIpO1xyXG4gICAgICAgIHRoaXMuX2tleXMucHVzaChjdXJyZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19UQUdfUkVDT1JEUzpcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX0NMT1NFLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpICsgMSk7XHJcbiAgICAgICAgLy8gZW5kIG9mIG91dGVyIHRhZCBhbmQgaXRzIFwiPlwiXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1JFQ09SRFNfRU5EOlxyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgyRW5kT2ZUYWcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19UQUdfQ0FDSEVEX1RBQkxFX0VORDpcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4MkVuZE9mVGFnKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19SRUM6IHtcclxuICAgICAgICBsZXQgY3VycmVudCA9IG5ldyBSZWNvcmQodGhpcyk7XHJcbiAgICAgICAgY3VycmVudC5Jbml0aWFsaXplKCk7XHJcbiAgICAgICAgY3VycmVudC5maWxsRGF0YShwYXJzZXIpO1xyXG4gICAgICAgIHRoaXMuX3JlY29yZHMucHVzaChjdXJyZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdW5pcXVlIGlkIG9mIHRoZSBjdXJyZW50IGNhY2hlZCB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0VGFibGVVbmlxdWVJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlVUlkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgdGFibGUgY29tbW9uIGlkZW50aWZpZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEdldFRhYmxlQ29tbW9uSWRlbnRpZmllcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlSWRlbnQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUga2V5IGJ5IHdoaWMgd2UgYXJlIGN1cnJlbnRseSBzb3J0aW5nIChvciBjdXJyZW50bHkgc29ydGVkKSB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEdldEN1cnJTb3J0S2V5KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VyclNvcnRLZXk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUga2V5IGJ5IGlkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBHZXRLZXlCeUlkKGtleUlkOiBudW1iZXIpOiBLZXkge1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuX2tleXMubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgaWYgKHRoaXMuX2tleXMuZ2V0X0l0ZW0oaSkuR2V0S2V5SWQoKSA9PT0ga2V5SWQpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2tleXMuZ2V0X0l0ZW0oaSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBsb2FkcyBhIHRhYmxlIGZyb20gdGhlIGRhdGFJc2xhbmQgYWNjb3JkaW5nIHRvIGlzIHVuaXF1ZSBpZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhc3luYyBMb2FkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLl9pc0xvYWRlZCkge1xyXG4gICAgICBhd2FpdCBUYWJsZUNhY2hlTWFuYWdlci5JbnN0YW5jZS5Mb2FkVGFibGUodGhpcy5fdGFibGVVSWQpO1xyXG4gICAgICB0aGlzLl9pc0xvYWRlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc29ydCB0aGUgY3VycmVudCB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic29ydEtleUlkXCI+dGhlIGlkIG9mIHRoZSBrZXkgdG8gc29ydCBieSA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNvcnREaXJcIj48L3BhcmFtPlxyXG4gIGFzeW5jIFNvcnRUYWJsZShzb3J0S2V5SWQ6IG51bWJlciwgc29ydERpcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuX2lzTG9hZGVkKVxyXG4gICAgICBhd2FpdCB0aGlzLkxvYWQoKTtcclxuXHJcbiAgICAvLyBpZiB0aGUgdGFibGUgaXMgYWxyZWFkeSBzb3J0ZWQgdGhlIHdheSB3ZSB3YW50IGl0XHJcbiAgICBpZiAoc29ydEtleUlkICE9PSB0aGlzLl9jdXJyU29ydEtleSB8fCBzb3J0RGlyICE9PSB0aGlzLl9jdXJyU29ydERpcikge1xyXG4gICAgICB0aGlzLl9jdXJyU29ydERpciA9IHNvcnREaXI7XHJcbiAgICAgIHRoaXMuX2N1cnJTb3J0S2V5ID0gc29ydEtleUlkO1xyXG5cclxuICAgICAgbGV0IHJlY29yZHNBcnI6IFJlY29yZFtdID0gdGhpcy5fcmVjb3Jkcy5Ub0FycmF5KCk7XHJcbiAgICAgIEhlYXBTb3J0LnNvcnQocmVjb3Jkc0Fycik7XHJcblxyXG4gICAgICBpZiAodGhpcy5fY3VyclNvcnREaXIgPT09ICdEJylcclxuICAgICAgICB0aGlzLlJldmVyc2VWZWN0b3IocmVjb3Jkc0Fycik7XHJcblxyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fcmVjb3Jkcy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIHRoaXMuX3JlY29yZHMuc2V0X0l0ZW0oaSwgcmVjb3Jkc0FycltpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBleGVjdXRlcyB0aGUgdGhlIGxpbmsgb3BlcmF0aW9uIHdlIGFzc3VtZSB0aGUgdGFibGUgaXMgYWxyZWFkeSBzb3J0ZWQgYnkgdGhlIGNvcnJlY3Qga2V5IGFuZCBkaXJlY3Rpb25cclxuICAvLy8gICB0aGUgbWV0aG9kIHJldHVybnMgdGhlIHJlcXVlc3RlZCByZWNvcmQgYWNjb3JkaW5nIHRoZSBsb2NhdGVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBGZXRjaChsb2M6IExpc3Q8Qm91bmRhcnk+KTogUmVjb3JkIHtcclxuXHJcbiAgICAvLyBpZiB0aGVyZSBhcmUgbm90IGFueSBsb2NhdGUgZXhwcmVzc2lvbiB0aGVuIGVpdGhlciB3ZSByZXR1cm4gdGhlIGZmaXJzdCByZWNvcmQgdGhhdCBhY2NlcHRzXHJcbiAgICAvLyBhbCB0aGUgcmFuZ2UgY29uZGl0aW9uIG9yIHdlIHJldHVybiB0aGUgZmlyc3QgcmVjb3JkIGluIHRoZSB0YWJsZSBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgc29ydFxyXG4gICAgbGV0IGNoZWNrTG9jOiBib29sZWFuID0gbG9jLmxlbmd0aCA+IDA7XHJcblxyXG4gICAgaWYgKHRoaXMuX2lzTG9hZGVkKSB7XHJcbiAgICAgIC8vIHNob3VsZCBiZSBsb2FkZWQgYXQgc29ydCB0aW1lIHRoZSB0aW1lIG11c3QgYmUgYWxyZWFkeSBzb3J0ZWQgYXQgdGhpcyBzdGFnZVxyXG4gICAgICBpZiAoIWNoZWNrTG9jKSB7XHJcbiAgICAgICAgLy8gaWYgdGhlcmUgYXJlIG5vIGxvY2F0ZXMgcmV0dXJuIHRoZSBmaXJzdCByZWNvcmRcclxuICAgICAgICByZXR1cm4gKCh0aGlzLl9yZWNvcmRzLmxlbmd0aCAhPT0gMCkgPyB0aGlzLl9yZWNvcmRzLmdldF9JdGVtKDApIDogbnVsbCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGZpbmQgdGhlIGZpcnN0IHJlY29yZCB0aGF0IGFncmVlcyB3aXRoIHRoZSBsb2NhdGVzIGFudCByZXR1cm4gaXRcclxuICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuX3JlY29yZHMubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgICBsZXQgY3VyclJlYzogUmVjb3JkID0gdGhpcy5fcmVjb3Jkcy5nZXRfSXRlbShpKTtcclxuXHJcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyByZWNvcmQgYWdyZWVzIHdpdGggYWxsIHRoZSBsb2NhdGUgY29uZGl0aW9uc1xyXG4gICAgICAgIGlmIChUYWJsZUNhY2hlLnZhbGlkYXRlUmVjKGN1cnJSZWMsIGxvYykpIHtcclxuICAgICAgICAgIHJldHVybiBjdXJyUmVjO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gaWYgd2UgZ290IGhlcmUgdGhlbiBlaXRoZXIgdGhlIHRhYmxlIHdhcyBub3QgbG9hZGVkIGFuZCBzb3J0ZWQgb3Igd2UgZGlkIG5vdCBmaW5kIGFueSByZWNvcmRcclxuICAgIC8vIHRoYXQgYWdyZWVzIHdpdGggdGhlIGxvY2F0ZSBleHByZXNzaW9ucyAtIGluIGVpdGhlciBjYXNlIHJldHVybiBudWxsXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB2YWxpZGF0ZSBhIHJlY29yZCBkYXRhIGFnYWluc3QgYSBzZXJpZXMgb2YgbG9jYXRlIGV4cHJlc3Npb25zXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZVJlYyhjdXJyUmVjOiBSZWNvcmQsIHJhbmdlQ29uZDogTGlzdDxCb3VuZGFyeT4pOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8vIGdvIG92ZXIgYWxsIHRoZSBjb25kaXRpb25zXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgcmFuZ2VDb25kLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGxldCBjdXJyQ25kOiBCb3VuZGFyeSA9IHJhbmdlQ29uZC5nZXRfSXRlbShpKTtcclxuICAgICAgLy8gaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGZpbGVkIHRoYXQgZG9lcyBub3QgYWdyZWUgYWxsIHRoZSByZWNvcmQgZGllcyBub3QgYWdyZWVcclxuICAgICAgaWYgKCFjdXJyQ25kLmNoZWNrUmFuZ2UoY3VyclJlYy5HZXRGaWVsZFZhbHVlKGN1cnJDbmQuZ2V0Q2FjaGVUYWJsZUZsZElkKCkpLCBjdXJyUmVjLklzTnVsbChjdXJyQ25kLmdldENhY2hlVGFibGVGbGRJZCgpKSkpIHtcclxuICAgICAgICByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImFycmF5XCI+PC9wYXJhbT5cclxuICBwcm90ZWN0ZWQgUmV2ZXJzZVZlY3RvcihhcnJheTogT2JqZWN0W10pOiB2b2lkIHtcclxuICAgIGxldCByaWdodDogbnVtYmVyID0gYXJyYXkubGVuZ3RoIC0gMTtcclxuICAgIGZvciAobGV0IGxlZnQ6IG51bWJlciA9IDA7IGxlZnQgPCBNYXRoLmZsb29yKChhcnJheS5sZW5ndGggLSAxKSAvIDIpOyBsZWZ0KysgLCByaWdodC0tKSB7XHJcbiAgICAgIGxldCB0bXA6IE9iamVjdCA9IGFycmF5W2xlZnRdO1xyXG4gICAgICBhcnJheVtsZWZ0XSA9IGFycmF5W3JpZ2h0XTtcclxuICAgICAgYXJyYXlbcmlnaHRdID0gdG1wO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,67 @@
1
+ import { Misc } from '@magic-xpa/utils';
2
+ import { ApplicationException, Exception, Hashtable, List } from '@magic-xpa/mscorelib';
3
+ import { RuntimeContextBase } from '@magic-xpa/gui';
4
+ import { RemoteCommandsProcessor } from '../remote/RemoteCommandsProcessor';
5
+ export class TableCacheManager {
6
+ _tables = null;
7
+ static Instance = new TableCacheManager();
8
+ constructor() {
9
+ this._tables = new Hashtable();
10
+ }
11
+ GetTableById(tableUId) {
12
+ return this._tables.get_Item(tableUId);
13
+ }
14
+ TableExists(tableUId) {
15
+ let result = true;
16
+ if (this.GetTableById(tableUId) === null)
17
+ result = false;
18
+ return result;
19
+ }
20
+ InsertTable(table) {
21
+ let result = false;
22
+ if (!this.TableExists(table.GetTableUniqueId())) {
23
+ this._tables.set_Item(table.GetTableUniqueId(), table);
24
+ result = true;
25
+ }
26
+ return result;
27
+ }
28
+ async LoadTable(tableUId) {
29
+ let server = RemoteCommandsProcessor.GetInstance();
30
+ if (this.TableExists(tableUId)) {
31
+ let current = this._tables.get_Item(tableUId);
32
+ try {
33
+ let residentTableContentStr = await server.GetContent(tableUId, true);
34
+ try {
35
+ RuntimeContextBase.Instance.Parser.loadTableCacheData(residentTableContentStr);
36
+ }
37
+ catch (innerException) {
38
+ if (innerException instanceof Exception) {
39
+ throw new ApplicationException("Unable to parse resident table " + tableUId + ", due to unsupported encoding.", innerException);
40
+ }
41
+ else
42
+ throw innerException;
43
+ }
44
+ }
45
+ catch (throwable) {
46
+ if (throwable instanceof Exception) {
47
+ Misc.WriteStackTrace(throwable);
48
+ }
49
+ else
50
+ throw throwable;
51
+ }
52
+ current.FillData();
53
+ let deletedUids = new List();
54
+ let enumerator = this._tables.Values;
55
+ while (enumerator.MoveNext()) {
56
+ let tbl = enumerator.Current;
57
+ let currIdent = tbl.GetTableCommonIdentifier();
58
+ if (currIdent === current.GetTableCommonIdentifier() && tbl.GetTableUniqueId() !== tableUId)
59
+ deletedUids.push(tbl.GetTableUniqueId());
60
+ }
61
+ for (let i = 0; i < deletedUids.length; i = i + 1) {
62
+ this._tables.Remove(deletedUids.get_Item(i));
63
+ }
64
+ }
65
+ }
66
+ }
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVDYWNoZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1RhYmxlQ2FjaGVNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsb0JBQW9CLEVBQW9CLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFLNUUsTUFBTSxPQUFPLGlCQUFpQjtJQUNwQixPQUFPLEdBQWtDLElBQUksQ0FBQztJQUV0RCxNQUFNLENBQUMsUUFBUSxHQUFzQixJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFFN0Q7UUFDRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksU0FBUyxFQUFzQixDQUFDO0lBQ3JELENBQUM7SUFLRCxZQUFZLENBQUMsUUFBZ0I7UUFDM0IsT0FBbUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUtELFdBQVcsQ0FBQyxRQUFnQjtRQUMxQixJQUFJLE1BQU0sR0FBWSxJQUFJLENBQUM7UUFFM0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUk7WUFDdEMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVqQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBTUQsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksTUFBTSxHQUFZLEtBQUssQ0FBQztRQUU1QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdkQsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQU1ELEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBZ0I7UUFDOUIsSUFBSSxNQUFNLEdBQTBCLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRzFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBRS9CLElBQUksT0FBTyxHQUEyQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUM7Z0JBQ0gsSUFBSSx1QkFBdUIsR0FBVyxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM5RSxJQUFJLENBQUM7b0JBQ0gsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUNqRixDQUFDO2dCQUNELE9BQU8sY0FBYyxFQUFFLENBQUM7b0JBQ3RCLElBQUksY0FBYyxZQUFZLFNBQVMsRUFBRSxDQUFDO3dCQUN4QyxNQUFNLElBQUksb0JBQW9CLENBQUMsaUNBQWlDLEdBQUcsUUFBUSxHQUFHLGdDQUFnQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO29CQUNsSSxDQUFDOzt3QkFFQyxNQUFNLGNBQWMsQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixJQUFJLFNBQVMsWUFBWSxTQUFTLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbEMsQ0FBQzs7b0JBRUMsTUFBTSxTQUFTLENBQUM7WUFDcEIsQ0FBQztZQUdELE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUduQixJQUFJLFdBQVcsR0FBaUIsSUFBSSxJQUFJLEVBQVUsQ0FBQztZQUNuRCxJQUFJLFVBQVUsR0FBaUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDbkUsT0FBTyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxHQUFHLEdBQTJCLFVBQVUsQ0FBQyxPQUFPLENBQUM7Z0JBQ3JELElBQUksU0FBUyxHQUFXLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLFNBQVMsS0FBSyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxRQUFRO29CQUN6RixXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUVELEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNaXNjIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uRXhjZXB0aW9uLCBBcnJheV9FbnVtZXJhdG9yLCBFeGNlcHRpb24sIEhhc2h0YWJsZSwgTGlzdCB9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHsgUnVudGltZUNvbnRleHRCYXNlIH0gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQgeyBUYWJsZUNhY2hlIH0gZnJvbSAnLi9UYWJsZUNhY2hlJztcclxuaW1wb3J0IHsgQ29tbWFuZHNQcm9jZXNzb3JCYXNlIH0gZnJvbSAnLi4vQ29tbWFuZHNQcm9jZXNzb3JCYXNlJztcclxuaW1wb3J0IHsgUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IgfSBmcm9tICcuLi9yZW1vdGUvUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3InO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBoYW5kbGVzIHRoZSBsb2FkaW5nIGFuZCBtYW5hZ2luZyBvZiBhbGwgY2FjaGUgdGFibGVzIGluIHRoZSBjb250ZXh0XHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNhY2hlTWFuYWdlciB7XHJcbiAgcHJpdmF0ZSBfdGFibGVzOiBIYXNodGFibGU8c3RyaW5nLCBUYWJsZUNhY2hlPiA9IG51bGw7XHJcblxyXG4gIHN0YXRpYyBJbnN0YW5jZTogVGFibGVDYWNoZU1hbmFnZXIgPSBuZXcgVGFibGVDYWNoZU1hbmFnZXIoKTtcclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuX3RhYmxlcyA9IG5ldyBIYXNodGFibGU8c3RyaW5nLCBUYWJsZUNhY2hlPigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgdGFibGVDYWNoZSBvYmplY3QgIGFjY29yZGluZyB0byBpdHMgdW5pcXVlIGlkIG9yIG51bGwgaWYgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1hbmFnZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEdldFRhYmxlQnlJZCh0YWJsZVVJZDogc3RyaW5nKTogVGFibGVDYWNoZSB7XHJcbiAgICByZXR1cm4gPFRhYmxlQ2FjaGU+dGhpcy5fdGFibGVzLmdldF9JdGVtKHRhYmxlVUlkKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjaGVja3MgaWYgYSBnaXZlbiB0YWJsZSBleGlzdHMgaW4gdGhlIG1hbmFnZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIFRhYmxlRXhpc3RzKHRhYmxlVUlkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIGlmICh0aGlzLkdldFRhYmxlQnlJZCh0YWJsZVVJZCkgPT09IG51bGwpXHJcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgaW5zZXJ0cyBhIHRhYmxlIGludG8gdGhlIG1hbmFnZXIgaXMgbm90IGFscmVhZHkgZXhpc3RzXHJcbiAgLy8vICAgcmV0dXJucyB0cnVlIGlzIGluc2VydCBzdWNjZWVkZWQgZmFsc2Ugb3RoZXJ3aXNlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBJbnNlcnRUYWJsZSh0YWJsZTogVGFibGVDYWNoZSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmICghdGhpcy5UYWJsZUV4aXN0cyh0YWJsZS5HZXRUYWJsZVVuaXF1ZUlkKCkpKSB7XHJcbiAgICAgIHRoaXMuX3RhYmxlcy5zZXRfSXRlbSh0YWJsZS5HZXRUYWJsZVVuaXF1ZUlkKCksIHRhYmxlKTtcclxuICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGxvYWRzIGEgbmV3IHRhYmxlIHN0YXJ0IHRoZSB0YWJsZSBwYXJzaW5nIHByb2Nlc3NcclxuICAvLy8gICBkZWxldGUgYW55IG9sZCBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgdGFibGUgKGV2ZW4gaWYgdGhleSBvdGhlciB1bmlxdWUgaWRzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhc3luYyBMb2FkVGFibGUodGFibGVVSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHNlcnZlcjogQ29tbWFuZHNQcm9jZXNzb3JCYXNlID0gUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuR2V0SW5zdGFuY2UoKTtcclxuXHJcbiAgICAvLyB0aGUgdGFibGUgbXVzdCBleGlzdCBpbiB0aGUgaGFzaFRhYmxlIGF0IHRoaXMgc3RhZ2UgZWxzZSBpdCBpcyBhbiBlcnJvclxyXG4gICAgaWYgKHRoaXMuVGFibGVFeGlzdHModGFibGVVSWQpKSB7XHJcbiAgICAgIC8vIGdldCB0aGUgdGFibGVcclxuICAgICAgbGV0IGN1cnJlbnQ6IFRhYmxlQ2FjaGUgPSA8VGFibGVDYWNoZT50aGlzLl90YWJsZXMuZ2V0X0l0ZW0odGFibGVVSWQpO1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCByZXNpZGVudFRhYmxlQ29udGVudFN0cjogc3RyaW5nID0gYXdhaXQgc2VydmVyLkdldENvbnRlbnQodGFibGVVSWQsIHRydWUpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBSdW50aW1lQ29udGV4dEJhc2UuSW5zdGFuY2UuUGFyc2VyLmxvYWRUYWJsZUNhY2hlRGF0YShyZXNpZGVudFRhYmxlQ29udGVudFN0cik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChpbm5lckV4Y2VwdGlvbikge1xyXG4gICAgICAgICAgaWYgKGlubmVyRXhjZXB0aW9uIGluc3RhbmNlb2YgRXhjZXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihcIlVuYWJsZSB0byBwYXJzZSByZXNpZGVudCB0YWJsZSBcIiArIHRhYmxlVUlkICsgXCIsIGR1ZSB0byB1bnN1cHBvcnRlZCBlbmNvZGluZy5cIiwgaW5uZXJFeGNlcHRpb24pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aHJvdyBpbm5lckV4Y2VwdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKHRocm93YWJsZSkge1xyXG4gICAgICAgIGlmICh0aHJvd2FibGUgaW5zdGFuY2VvZiBFeGNlcHRpb24pIHtcclxuICAgICAgICAgIE1pc2MuV3JpdGVTdGFja1RyYWNlKHRocm93YWJsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRocm93IHRocm93YWJsZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gc3RhcnQgcGFyc2luZ1xyXG4gICAgICBjdXJyZW50LkZpbGxEYXRhKCk7XHJcblxyXG4gICAgICAvLyBkZWxldGUgb2xkIHRhYmxlc1xyXG4gICAgICBsZXQgZGVsZXRlZFVpZHM6IExpc3Q8c3RyaW5nPiA9IG5ldyBMaXN0PHN0cmluZz4oKTtcclxuICAgICAgbGV0IGVudW1lcmF0b3I6IEFycmF5X0VudW1lcmF0b3I8VGFibGVDYWNoZT4gPSB0aGlzLl90YWJsZXMuVmFsdWVzO1xyXG4gICAgICB3aGlsZSAoZW51bWVyYXRvci5Nb3ZlTmV4dCgpKSB7XHJcbiAgICAgICAgbGV0IHRibDogVGFibGVDYWNoZSA9IDxUYWJsZUNhY2hlPmVudW1lcmF0b3IuQ3VycmVudDtcclxuICAgICAgICBsZXQgY3VycklkZW50OiBzdHJpbmcgPSB0YmwuR2V0VGFibGVDb21tb25JZGVudGlmaWVyKCk7XHJcbiAgICAgICAgaWYgKGN1cnJJZGVudCA9PT0gY3VycmVudC5HZXRUYWJsZUNvbW1vbklkZW50aWZpZXIoKSAmJiB0YmwuR2V0VGFibGVVbmlxdWVJZCgpICE9PSB0YWJsZVVJZClcclxuICAgICAgICAgIGRlbGV0ZWRVaWRzLnB1c2godGJsLkdldFRhYmxlVW5pcXVlSWQoKSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gZGVsZXRlXHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBkZWxldGVkVWlkcy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIHRoaXMuX3RhYmxlcy5SZW1vdmUoZGVsZXRlZFVpZHMuZ2V0X0l0ZW0oaSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,53 @@
1
+ import { ConstInterface } from "../ConstInterface";
2
+ export class Transaction {
3
+ _transId = null;
4
+ _afterTransRetry = ConstInterface.RECOVERY_NONE;
5
+ _transBegin = '\0';
6
+ Opened = false;
7
+ OwnerTask = null;
8
+ constructor(task, setTransId) {
9
+ this.OwnerTask = task;
10
+ this._transId = setTransId;
11
+ this._transBegin = ConstInterface.TRANS_TASK_PREFIX;
12
+ }
13
+ isOwner(task) {
14
+ return task === this.OwnerTask;
15
+ }
16
+ close() {
17
+ this.Opened = false;
18
+ }
19
+ open() {
20
+ this.Opened = true;
21
+ }
22
+ isOpened() {
23
+ return this.Opened;
24
+ }
25
+ setAfterRetry(val) {
26
+ this._afterTransRetry = val;
27
+ }
28
+ getAfterRetry(recovery) {
29
+ if (arguments.length === 0) {
30
+ return this.getAfterRetry_0();
31
+ }
32
+ return this.getAfterRetry_1(recovery);
33
+ }
34
+ getAfterRetry_0() {
35
+ return this._afterTransRetry !== ConstInterface.RECOVERY_NONE;
36
+ }
37
+ getAfterRetry_1(recovery) {
38
+ return this._afterTransRetry === recovery;
39
+ }
40
+ getLevel() {
41
+ return this._transBegin;
42
+ }
43
+ setTransBegin(val) {
44
+ this._transBegin = val;
45
+ }
46
+ getTransId() {
47
+ return this._transId;
48
+ }
49
+ setOwnerTask(task) {
50
+ this.OwnerTask = task;
51
+ }
52
+ }
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRCxNQUFNLE9BQU8sV0FBVztJQUNkLFFBQVEsR0FBVyxJQUFJLENBQUM7SUFHeEIsZ0JBQWdCLEdBQVcsY0FBYyxDQUFDLGFBQWEsQ0FBQztJQUV4RCxXQUFXLEdBQVcsSUFBSSxDQUFDO0lBQ25DLE1BQU0sR0FBWSxLQUFLLENBQUM7SUFDeEIsU0FBUyxHQUFTLElBQUksQ0FBQztJQVF2QixZQUFZLElBQWMsRUFBRSxVQUFrQjtRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFTLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBUztJQUM5RCxDQUFDO0lBTUQsT0FBTyxDQUFDLElBQVU7UUFDaEIsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBS0QsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFLRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUtELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUtELGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7SUFDOUIsQ0FBQztJQUlELGFBQWEsQ0FBQyxRQUFpQjtRQUM3QixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBS08sZUFBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxjQUFjLENBQUMsYUFBYSxDQUFTO0lBQ3hFLENBQUM7SUFLTyxlQUFlLENBQUMsUUFBZ0I7UUFDdEMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssUUFBUSxDQUFDO0lBQzVDLENBQUM7SUFLRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFLRCxhQUFhLENBQUMsR0FBVztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBS0QsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBS0QsWUFBWSxDQUFDLElBQVU7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUYXNrfSBmcm9tIFwiLi4vdGFza3MvVGFza1wiO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tIFwiLi4vQ29uc3RJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtUYXNrQmFzZX0gZnJvbSBcIi4uL3Rhc2tzL1Rhc2tCYXNlXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24ge1xyXG4gIHByaXZhdGUgX3RyYW5zSWQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIC8vIGhvbGRzIHRoZSByZWNvdmVyeSB0eXBlIG9mIGEgZmFpbGVkIHRyYW5zYWN0aW9uIHNvIHdlIGNhbiBhc2sgaWYgd2UgYXJlIGFmdGVyIHJldHJ5LlxyXG4gIHByaXZhdGUgX2FmdGVyVHJhbnNSZXRyeTogc3RyaW5nID0gQ29uc3RJbnRlcmZhY2UuUkVDT1ZFUllfTk9ORTtcclxuXHJcbiAgcHJpdmF0ZSBfdHJhbnNCZWdpbjogc3RyaW5nID0gJ1xcMCc7XHJcbiAgT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgT3duZXJUYXNrOiBUYXNrID0gbnVsbDtcclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tcIj50aGUgdGFzayB3aG8gb3ducyB0aGlzIHRyYW5zYWN0aW9uIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic2V0VHJhbnNJZFwiPjwvcGFyYW0+XHJcbiAgY29uc3RydWN0b3IodGFzazogVGFza0Jhc2UsIHNldFRyYW5zSWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5Pd25lclRhc2sgPSA8VGFzaz50YXNrO1xyXG4gICAgdGhpcy5fdHJhbnNJZCA9IHNldFRyYW5zSWQ7XHJcbiAgICB0aGlzLl90cmFuc0JlZ2luID0gQ29uc3RJbnRlcmZhY2UuVFJBTlNfVEFTS19QUkVGSVggLyonVCcqLztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHRhc2sgaXMgdGhlIG93bmVyIG9mIHRoaXMgdHJhbnNhY3Rpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1wiPnRoZSB0YXNrIHRvIGNoZWNrIDwvcGFyYW0+XHJcbiAgaXNPd25lcih0YXNrOiBUYXNrKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGFzayA9PT0gdGhpcy5Pd25lclRhc2s7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY2xvc2UgdGhlIHRyYW5zYWN0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuT3BlbmVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgb3BlbnMgdGhlIHRyYW5zYWN0aW9uIC0gc2hvdWxkIGJlIGNhbGxlZCB3aGVuIGFuIHVwZGF0ZSBvY2N1cmVkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBvcGVuKCk6IHZvaWQge1xyXG4gICAgdGhpcy5PcGVuZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBpZiB0aGUgdHJhbnNhY3Rpb24gd2FzIG9wZW5lZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgaXNPcGVuZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5PcGVuZWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2lnbmFsbHMgd2hlYXRoZXIgd2UgYXJlIG5vdyBpbiB0aGUgcHJvY2VzcyBvZiByZXRyeWluZyBhIGZhaWxlZCB0cmFuc2FjdGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0QWZ0ZXJSZXRyeSh2YWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fYWZ0ZXJUcmFuc1JldHJ5ID0gdmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWZ0ZXJSZXRyeSgpOiBib29sZWFuO1xyXG4gIGdldEFmdGVyUmV0cnkocmVjb3Zlcnk6IHN0cmluZyk6IGJvb2xlYW47XHJcbiAgZ2V0QWZ0ZXJSZXRyeShyZWNvdmVyeT86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0QWZ0ZXJSZXRyeV8wKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBZnRlclJldHJ5XzEocmVjb3ZlcnkpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0cnVlIGlmIHdlIGFyZSBhZnRlciBhIHRyYW5zYWN0aW9uIHJldHJ5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGdldEFmdGVyUmV0cnlfMCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9hZnRlclRyYW5zUmV0cnkgIT09IENvbnN0SW50ZXJmYWNlLlJFQ09WRVJZX05PTkUgLyonXHUwMDAwJyovO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0cnVlIGlmIHdlIGFyZSBhZnRlciBhIHRyYW5zYWN0aW9uIHdpdGggcmVjb3ZlcnkgUkVDT1ZFUllfUkVUUllcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgZ2V0QWZ0ZXJSZXRyeV8xKHJlY292ZXJ5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9hZnRlclRyYW5zUmV0cnkgPT09IHJlY292ZXJ5O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHRyYW5zYWN0aW9uIGxldmVsIChUYXNrL1JlY29yZClcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldExldmVsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNCZWdpbjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXRzIHRoZSBsZXZlbCBvZiB0aGUgVHJhbnNhY3Rpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldFRyYW5zQmVnaW4odmFsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3RyYW5zQmVnaW4gPSB2YWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0cyB0cmFuc0lkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRUcmFuc0lkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNJZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXRzIE93bmVyIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldE93bmVyVGFzayh0YXNrOiBUYXNrKTogdm9pZCB7XHJcbiAgICB0aGlzLk93bmVyVGFzayA9IHRhc2s7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,71 @@
1
+ import { NString } from '@magic-xpa/mscorelib';
2
+ import { Logger, XMLConstants, XmlParser } from '@magic-xpa/utils';
3
+ import { ConstInterface } from '../ConstInterface';
4
+ import { Commands } from '@magic-xpa/gui';
5
+ export class UserDetails {
6
+ static _instance = null;
7
+ UserName = null;
8
+ UserID = null;
9
+ UserInfo = null;
10
+ Password = null;
11
+ IsLoggedIn = false;
12
+ setIsLoggedIn(value) {
13
+ this.IsLoggedIn = value;
14
+ }
15
+ getIsLoggedIn() {
16
+ return this.IsLoggedIn;
17
+ }
18
+ setUserID(userId) {
19
+ this.UserID = userId;
20
+ if (this.UserID.length == 0 || this.UserID === NString.Empty) {
21
+ this.setIsLoggedIn(false);
22
+ }
23
+ else
24
+ this.setIsLoggedIn(true);
25
+ }
26
+ static get Instance() {
27
+ if (UserDetails._instance === null)
28
+ UserDetails._instance = new UserDetails();
29
+ return UserDetails._instance;
30
+ }
31
+ constructor() {
32
+ this.UserName = NString.Empty;
33
+ this.UserInfo = NString.Empty;
34
+ this.IsLoggedIn = false;
35
+ this.setUserID(NString.Empty);
36
+ }
37
+ fillData(parser) {
38
+ let tokensVector;
39
+ let endContext = parser.getXMLdata().indexOf(XMLConstants.TAG_TERM, parser.getCurrIndex());
40
+ if (endContext !== -1 && endContext < parser.getXMLdata().length) {
41
+ let tag = parser.getXMLsubstring(endContext);
42
+ parser.add2CurrIndex(tag.indexOf(ConstInterface.MG_TAG_USER_DETAILS) + ConstInterface.MG_TAG_USER_DETAILS.length);
43
+ tokensVector = XmlParser.getTokens(parser.getXMLsubstring(endContext), XMLConstants.XML_ATTR_DELIM);
44
+ this.initElements(tokensVector);
45
+ parser.setCurrIndex(endContext + XMLConstants.TAG_TERM.length);
46
+ }
47
+ else
48
+ Logger.Instance.WriteExceptionToLogWithMsg("in UserDetails.fillData(): out of bounds");
49
+ }
50
+ initElements(tokensVector) {
51
+ let attribute, valueStr;
52
+ let isSuccess = true;
53
+ let j;
54
+ for (j = 0; j < tokensVector.length; j += 2) {
55
+ attribute = tokensVector.get_Item(j);
56
+ valueStr = tokensVector.get_Item(j + 1);
57
+ switch (attribute) {
58
+ case ConstInterface.MG_TAG_IS_LOGGED_IN:
59
+ this.setIsLoggedIn(valueStr[0] === '1');
60
+ Commands.addIsLoggedIn(this.getIsLoggedIn());
61
+ break;
62
+ default:
63
+ Logger.Instance.WriteExceptionToLogWithMsg("in UserDetails.initElements(): unknown attribute: " + attribute);
64
+ isSuccess = false;
65
+ break;
66
+ }
67
+ }
68
+ return isSuccess;
69
+ }
70
+ }
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlckRldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3NlY3VyaXR5L1VzZXJEZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBUSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzFDLE1BQU0sT0FBTyxXQUFXO0lBQ2QsTUFBTSxDQUFDLFNBQVMsR0FBaUIsSUFBSSxDQUFDO0lBQzlDLFFBQVEsR0FBVyxJQUFJLENBQUM7SUFDeEIsTUFBTSxHQUFXLElBQUksQ0FBQztJQUN0QixRQUFRLEdBQVcsSUFBSSxDQUFDO0lBQ3hCLFFBQVEsR0FBVyxJQUFJLENBQUM7SUFDeEIsVUFBVSxHQUFXLEtBQUssQ0FBQztJQUVuQixhQUFhLENBQUMsS0FBYztRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRU8sU0FBUyxDQUFDLE1BQWU7UUFFL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsS0FBSyxFQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixDQUFDOztZQUVDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELE1BQU0sS0FBSyxRQUFRO1FBQ2pCLElBQUksV0FBVyxDQUFDLFNBQVMsS0FBSyxJQUFJO1lBQ2hDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM1QyxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDL0IsQ0FBQztJQUdEO1FBQ0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBS00sUUFBUSxDQUFDLE1BQWlCO1FBRS9CLElBQUksWUFBMEIsQ0FBQztRQUUvQixJQUFJLFVBQVUsR0FBVyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDbkcsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUVqRSxJQUFJLEdBQUcsR0FBVyxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxjQUFjLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEgsWUFBWSxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDcEcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNoQyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLENBQUM7O1lBRUMsTUFBTSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFPTyxZQUFZLENBQUMsWUFBMEI7UUFDN0MsSUFBSSxTQUFpQixFQUFFLFFBQVEsQ0FBQztRQUNoQyxJQUFJLFNBQVMsR0FBWSxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFTLENBQUM7UUFFZCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzVDLFNBQVMsR0FBWSxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBRSxDQUFDO1lBQy9DLFFBQVEsR0FBWSxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUUsQ0FBQztZQUVsRCxRQUFRLFNBQVMsRUFBRSxDQUFDO2dCQUNsQixLQUFLLGNBQWMsQ0FBQyxtQkFBbUI7b0JBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUN4QyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO29CQUU3QyxNQUFNO2dCQTBCUjtvQkFDRSxNQUFNLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLG9EQUFvRCxHQUFHLFNBQVMsQ0FBQyxDQUFDO29CQUM3RyxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUNsQixNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGlzdCwgTlN0cmluZyB9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHsgTG9nZ2VyLCBYTUxDb25zdGFudHMsIFhtbFBhcnNlciB9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQgeyBDb25zdEludGVyZmFjZSB9IGZyb20gJy4uL0NvbnN0SW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQ29tbWFuZHMgfSBmcm9tICdAbWFnaWMteHBhL2d1aSc7XHJcblxyXG4vLyBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gbWFuYWdlIHRoZSB1c2VyIGRldGFpbHMgb24gdGhlIGNsaWVudCBzaWRlLlxyXG4vLyBUaGUgdXNlciBkZXRhaWxzIGFyZSBzZW50IGZyb20gdGhlIHNlcnZlci5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIFVzZXJEZXRhaWxzIHtcclxuICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IFVzZXJEZXRhaWxzICA9IG51bGw7XHJcbiAgVXNlck5hbWU6IHN0cmluZyA9IG51bGw7ICAvLyB1c2VyIG5hbWUgb2J0YWluZWQgZnJvbSB0aGUgc2VydmVyLlxyXG4gIFVzZXJJRDogc3RyaW5nID0gbnVsbDsgLy8gdXNlcklEIG9idGFpbmVkIGZyb20gdGhlIHNlcnZlclxyXG4gIFVzZXJJbmZvOiBzdHJpbmcgPSBudWxsOyAvLyB1c2VyIGluZm8gb2J0YWluZWQgZnJvbSB0aGUgc2VydmVyXHJcbiAgUGFzc3dvcmQ6IHN0cmluZyA9IG51bGw7IC8vIFBhc3N3b3JkIG9idGFpbmVkIGZyb20gc2VydmVyLlxyXG4gIElzTG9nZ2VkSW46IGJvb2xlYW49IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIHNldElzTG9nZ2VkSW4odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuSXNMb2dnZWRJbiA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0SXNMb2dnZWRJbigpIHtcclxuICAgIHJldHVybiB0aGlzLklzTG9nZ2VkSW47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVzZXJJRCh1c2VySWQgOiBzdHJpbmcpXHJcbiAge1xyXG4gICAgdGhpcy5Vc2VySUQgPSB1c2VySWQ7XHJcbiAgICBpZiAoIHRoaXMuVXNlcklELmxlbmd0aCA9PSAwIHx8IHRoaXMuVXNlcklEID09PSBOU3RyaW5nLkVtcHR5KXtcclxuICAgICAgdGhpcy5zZXRJc0xvZ2dlZEluKGZhbHNlKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5zZXRJc0xvZ2dlZEluKHRydWUpO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0IEluc3RhbmNlKCk6IFVzZXJEZXRhaWxzIHtcclxuICAgIGlmIChVc2VyRGV0YWlscy5faW5zdGFuY2UgPT09IG51bGwpXHJcbiAgICAgIFVzZXJEZXRhaWxzLl9pbnN0YW5jZSA9IG5ldyBVc2VyRGV0YWlscygpO1xyXG4gICAgcmV0dXJuIFVzZXJEZXRhaWxzLl9pbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5Qcml2YXRlIENUT1IgYXMgcGFydCBvZiBtYWtpbmcgdGhpcyBjbGFzcyBhIHNpbmdsZXRvbi8vLyA8L3N1bW1hcnk+XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLlVzZXJOYW1lID0gTlN0cmluZy5FbXB0eTtcclxuICAgIHRoaXMuVXNlckluZm8gPSBOU3RyaW5nLkVtcHR5O1xyXG4gICAgdGhpcy5Jc0xvZ2dlZEluID0gZmFsc2U7XHJcbiAgICB0aGlzLnNldFVzZXJJRChOU3RyaW5nLkVtcHR5KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gVGhpcyBmdW5jdGlvbiBnZXRzIHRoZSB4bWwgdGFnIGNvbnRhaW5pbmcgdXNlciBpbmZvLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIGZpbGxEYXRhKHBhcnNlcjogWG1sUGFyc2VyKTogdm9pZCB7XHJcbiAgICAvL2xldCBwYXJzZXI6IFhtbFBhcnNlciA9IENsaWVudE1hbmFnZXIuSW5zdGFuY2UuUnVudGltZUN0eC5QYXJzZXI7XHJcbiAgICBsZXQgdG9rZW5zVmVjdG9yOiBMaXN0PHN0cmluZz47XHJcblxyXG4gICAgbGV0IGVuZENvbnRleHQ6IG51bWJlciA9IHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX1RFUk0sIHBhcnNlci5nZXRDdXJySW5kZXgoKSk7XHJcbiAgICBpZiAoZW5kQ29udGV4dCAhPT0gLTEgJiYgZW5kQ29udGV4dCA8IHBhcnNlci5nZXRYTUxkYXRhKCkubGVuZ3RoKSB7XHJcbiAgICAgIC8vIGxhc3QgcG9zaXRpb24gb2YgaXRzIHRhZ1xyXG4gICAgICBsZXQgdGFnOiBTdHJpbmcgPSBwYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpO1xyXG4gICAgICBwYXJzZXIuYWRkMkN1cnJJbmRleCh0YWcuaW5kZXhPZihDb25zdEludGVyZmFjZS5NR19UQUdfVVNFUl9ERVRBSUxTKSArIENvbnN0SW50ZXJmYWNlLk1HX1RBR19VU0VSX0RFVEFJTFMubGVuZ3RoKTtcclxuICAgICAgdG9rZW5zVmVjdG9yID0gWG1sUGFyc2VyLmdldFRva2VucyhwYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpLCBYTUxDb25zdGFudHMuWE1MX0FUVFJfREVMSU0pO1xyXG4gICAgICB0aGlzLmluaXRFbGVtZW50cyh0b2tlbnNWZWN0b3IpO1xyXG4gICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KGVuZENvbnRleHQgKyBYTUxDb25zdGFudHMuVEFHX1RFUk0ubGVuZ3RoKTsgLy8gdG8gZGVsZXRlIFwiPlwiIHRvb1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBVc2VyRGV0YWlscy5maWxsRGF0YSgpOiBvdXQgb2YgYm91bmRzXCIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidG9rZW5zVmVjdG9yXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgaW5pdEVsZW1lbnRzKHRva2Vuc1ZlY3RvcjogTGlzdDxTdHJpbmc+KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgYXR0cmlidXRlOiBTdHJpbmcsIHZhbHVlU3RyO1xyXG4gICAgbGV0IGlzU3VjY2VzczogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBsZXQgajogbnVtYmVyO1xyXG5cclxuICAgIGZvciAoaiA9IDA7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqICs9IDIpIHtcclxuICAgICAgYXR0cmlidXRlID0gKDxTdHJpbmc+dG9rZW5zVmVjdG9yLmdldF9JdGVtKGopKTtcclxuICAgICAgdmFsdWVTdHIgPSAoPFN0cmluZz50b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpKTtcclxuXHJcbiAgICAgIHN3aXRjaCAoYXR0cmlidXRlKSB7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19UQUdfSVNfTE9HR0VEX0lOOlxyXG4gICAgICAgICAgdGhpcy5zZXRJc0xvZ2dlZEluKHZhbHVlU3RyWzBdID09PSAnMScpO1xyXG4gICAgICAgICAgQ29tbWFuZHMuYWRkSXNMb2dnZWRJbih0aGlzLmdldElzTG9nZ2VkSW4oKSk7XHJcbiAgICAgICAgICAvL3RoaXMuc2V0SXNMb2dnZWRJbihYbWxQYXJzZXIuZ2V0Qm9vbGVhbih2YWx1ZVN0cikpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgLy8gY2FzZSBDb25zdEludGVyZmFjZS5NR19UQUdfVVNFUk5BTUU6XHJcbiAgICAgICAgLy8gICB0aGlzLlVzZXJOYW1lID0gdmFsdWVTdHI7XHJcbiAgICAgICAgLy8gICBicmVhaztcclxuICAgICAgICAvLyBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVVNFUklEOlxyXG4gICAgICAgIC8vICAgdmFsdWVTdHIgPSBTdHJVdGlsLnJ0cmltKHZhbHVlU3RyKTtcclxuICAgICAgICAvLyAgIHRoaXMuc2V0VXNlcklEKHZhbHVlU3RyKTtcclxuICAgICAgICAvLyAgIC8vQ2xpZW50TWFuYWdlci5JbnN0YW5jZS5zZXRVc2VybmFtZSh0aGlzLlVzZXJJRCk7XHJcbiAgICAgICAgLy8gICBicmVhaztcclxuICAgICAgICAvLyBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVVNFUklORk86XHJcbiAgICAgICAgLy8gICB0aGlzLlVzZXJJbmZvID0gdmFsdWVTdHI7XHJcbiAgICAgICAgLy8gICBicmVhaztcclxuICAgICAgICAvLyBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19QQVNTV09SRDpcclxuICAgICAgICAvLyAgIHRoaXMuUGFzc3dvcmQgPSB2YWx1ZVN0cjtcclxuICAgICAgICAvLyAgIGxldCBwYXNzd29yZERlY29kZWQ6IFVpbnQ4QXJyYXkgPSBCYXNlNjQuZGVjb2RlVG9CeXRlKHRoaXMuUGFzc3dvcmQpO1xyXG4gICAgICAgIC8vICAgbGV0IGVuY3J5cHRlZFBhc3N3b3JkOiBzdHJpbmcgPSBFbmNvZGluZy5VVEY4LkdldFN0cmluZyhwYXNzd29yZERlY29kZWQsIDAsIHBhc3N3b3JkRGVjb2RlZC5sZW5ndGgpO1xyXG4gICAgICAgIC8vICAgbGV0IGRlY3J5cHRlZFBhc3N3b3JkOiBzdHJpbmcgPSBTY3JhbWJsZXIuVW5TY3JhbWJsZShlbmNyeXB0ZWRQYXNzd29yZCwgMCwgZW5jcnlwdGVkUGFzc3dvcmQubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgLy8gICAvLyBBdCBzZXJ2ZXIgc2lkZSBzcGFjZXMgYXJlIGFkZGVkIGF0IHRoZSBlbmQgaWYgdGhlIGxlbmd0aCBvZiBwYXNzd29yZCBpcyBsZXNzIHRoYW4gNCBjaGFyYWN0ZXJzLlxyXG4gICAgICAgIC8vICAgLy8gUmVtb3ZlIHRoZXNlIGV4dHJhIHNwYWNlcyBiZWZvcmUgc2V0dGluZyB0aGUgcGFzc3dvcmQuXHJcbiAgICAgICAgLy8gICBkZWNyeXB0ZWRQYXNzd29yZCA9IFN0clV0aWwucnRyaW0oZGVjcnlwdGVkUGFzc3dvcmQpO1xyXG4gICAgICAgIC8vICAgLy8gaWYgdGhlIHBhc3N3b3JkIGlzIGVtcHR5IHNldCBhIHBhc3N3b3JkIGNvbnRhaW5pbmcgb25lIFwiIFwiLCBhcyBmb3IgdXNlcklkLCB3aGVyZSBpZiBubyB1c2VySWRcclxuICAgICAgICAvLyAgIC8vIHRoZW4gYSBcIiBcIiBzZXQgdG8gdXNlcklkLlxyXG4gICAgICAgIC8vICAgaWYgKE5TdHJpbmcuSXNOdWxsT3JFbXB0eShkZWNyeXB0ZWRQYXNzd29yZCkpXHJcbiAgICAgICAgLy8gICAgIGRlY3J5cHRlZFBhc3N3b3JkID0gXCIgXCI7XHJcbiAgICAgICAgLy8gICAvL0NsaWVudE1hbmFnZXIuSW5zdGFuY2Uuc2V0UGFzc3dvcmQoZGVjcnlwdGVkUGFzc3dvcmQpO1xyXG4gICAgICAgIC8vICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcImluIFVzZXJEZXRhaWxzLmluaXRFbGVtZW50cygpOiB1bmtub3duIGF0dHJpYnV0ZTogXCIgKyBhdHRyaWJ1dGUpO1xyXG4gICAgICAgICAgaXNTdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzU3VjY2VzcztcclxuICB9XHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSU1HRGF0YUNvbGxlY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3Rhc2tzL0lNR0RhdGFDb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaXN0LCBTdHJpbmdCdWlsZGVyIH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7IElNR0RhdGFUYWJsZSwgSVRhc2ssIE1nRm9ybUJhc2UgfSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHsgTUdEYXRhIH0gZnJvbSBcIi4vTUdEYXRhXCI7XHJcbmltcG9ydCB7IFRhc2tCYXNlIH0gZnJvbSBcIi4vVGFza0Jhc2VcIjtcclxuaW1wb3J0IHsgSUNsaWVudENvbW1hbmQgfSBmcm9tIFwiLi4vY29tbWFuZHMvSUNsaWVudENvbW1hbmRcIjtcclxuaW1wb3J0IHsgQ29tbWFuZHNUYWJsZSB9IGZyb20gXCIuLi9Db21tYW5kc1RhYmxlXCI7XHJcbmltcG9ydCB7IEV4cHJlc3Npb24gfSBmcm9tIFwiLi4vZXhwL0V4cHJlc3Npb25cIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSU1HRGF0YUNvbGxlY3Rpb24gZXh0ZW5kcyBJTUdEYXRhVGFibGUge1xyXG4gIGN1cnJNZ2RJRDogbnVtYmVyO1xyXG4gIFN0YXJ0dXBNZ0RhdGE6IE1HRGF0YTtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgTUdEYXRhIG9iamVjdCBieSBpdHMgaW5kZXhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldE1HRGF0YShpZHg6IG51bWJlcik6IE1HRGF0YTtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGN1cnJlbnQgaWQgb2YgYSB0YXNrIGFjY29yZGluZyB0byBpdHMgb3JpZ2luYWwgaWRcclxuICAvLy8gICBpdCB3aWxsIHVzdWFsbHkgcmV0dXJuIHRoZSBzYW1lIGlkIGFzIHNlbnQgdG8gaXQsIGJ1dCBmb3Igc3ViZm9ybSBhZnRlciBlcnJvciBhbmQgcmV0cnkgaXQgd2lsbFxyXG4gIC8vLyAgIGNvbnZlcnQgdGhlIG9yaWdpbmFsIGlkIHRvIHRoZSBjdXJyZW50LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrSWRcIj4tIG9yaWdpbmFsIHRhc2sgaWQ8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGN1cnJlbnQgdGFza2lkIGZvciB0aGlzIHRhc2s8L3JldHVybnM+XHJcbiAgZ2V0VGFza0lkQnlJZCh0YXNrSWQ6IHN0cmluZyk6IHN0cmluZztcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBzaXplIG9mIE1HRGF0YSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBzaXplIG9mIHRhYmxlPC9yZXR1cm5zPlxyXG4gIGdldFNpemUoKTogbnVtYmVyO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyBNR0RhdGEgb2JqZWN0IGJ5IGl0cyBpbmRleFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TUdEYXRhKGlkeDogbnVtYmVyKTogTUdEYXRhO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc3RhcnQgdGhlIHRhc2tzIGl0ZXJhdG9yXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGFydFRhc2tzSXRlcmF0aW9uKCk6IHZvaWQ7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIG5leHQgdGFzayB1c2luZyB0aGUgdGFza3MgaXRlcmF0b3JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldE5leHRUYXNrKCk6IElUYXNrO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIGFsbCB0b3AgbGV2ZWwgZm9ybXMgdGhhdCBleGlzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0VG9wTW9zdEZvcm1zKCk6IExpc3Q8TWdGb3JtQmFzZT47XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGN1cnJlbnQgTUdEYXRhXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IE1HRGF0YSBvYmplY3Q8L3JldHVybnM+XHJcbiAgZ2V0Q3Vyck1HRGF0YSgpOiBNR0RhdGE7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0cyB0aGUgTUdEYXRhIHRoYXQgaG9sZHMvc2hvdWxkIGhvbGQgdGhlIHN0YXJ0dXAgcHJvZ3JhbS5cclxuICAvLy8gVGhlIG1ldGhvZCB0YWtlcyBpbnRvIGNvbnNpZGVyYXRpb24gd2hldGhlciB0aGUgYXBwbGljYXRpb24gdXNlcyBNREkgb3Igbm90LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRNR0RhdGFGb3JTdGFydHVwUHJvZ3JhbSgpOiBNR0RhdGE7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBmaW5kIGFsbCB0YXNrcyB3aGljaCB3ZXJlIHRyaWdnZXJlZCBieSBhIHNwZWNpZmljIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidHJpZ2dlcmluZ1Rhc2tcIj50aGUgdGFzayB3aG8gdHJpZ2dlcmVkIGFsbCBvdGhlciB0YXNrcy48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdmVjdG9yIGNvbnRhaW5pbmcgYWxsIHRhc2tzIHdoaWNoIHdlcmUgdHJpZ2dlcmVkIGJ5IHRoZSBwYXJhbWV0ZXIgdGFzazwvcmV0dXJucz5cclxuICBnZXRUcmlnZ2VyZWRUYXNrcyh0cmlnZ2VyaW5nVGFzazogVGFza0Jhc2UpOiBMaXN0PFRhc2tCYXNlPjtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgYXZhaWxhYmxlIGluZGV4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRBdmFpbGFibGVJZHgoKTogbnVtYmVyO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYWRkIE1HRGF0YSBvYmplY3QgdG8gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1nZFwiPnRoZSBNR0RhdGEgb2JqZWN0IHRvIGFkZDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpZHhcIj50aGUgaW5kZXggd2l0aGluIHRoZSB0YWJsZSBmb3IgdGhlIG5ldyBNR0RhdGE8L3BhcmFtPlxyXG4gIGFkZE1HRGF0YShtZ2Q6IE1HRGF0YSwgaWR4OiBudW1iZXIsIGlzU3RhcnR1cDogYm9vbGVhbik6IHZvaWQ7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBidWlsZCBYTUwgc3RyaW5nIG9mIHRoZSBNR0RhdGFUQUJMRSBvYmplY3QsXHJcbiAgLy8vICAgQUxMIE1HRGF0YSBpbiB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1lc3NhZ2VcIj5hIG1lc3NhZ2UgYmVpbmcgcHJlcGFyZWQuPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzZXJpYWxpemVUYXNrc1wiPmlmIHRydWUsIHRhc2tzIGluIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiB3aWxsIGFsc28gYmUgc2VyaWFsaXplZC48L3BhcmFtPlxyXG4gIGJ1aWxkWE1MKG1lc3NhZ2U6IFN0cmluZ0J1aWxkZXIsIHNlcmlhbGl6ZVRhc2tzOiBib29sZWFuKTogdm9pZDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHBlcmZvcm0gYW55IGRhdGEgZXJyb3IgcmVjb3ZlcnkgYWN0aW9uIG9uIGFsbCBkYXRhdmlld3NcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByb2Nlc3NSZWNvdmVyeSgpOiB2b2lkO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEFkZCBjb21tYW5kLCBleGVjdXRlIHJlcXVlc3QgYW5kIGRvIHJlY29yZCBjeWNsZSBmb3Igc3ViZm9ybXMgdGhhdCB0aGUgc2VydmVyIHNlbnQgdGhlaXIgbmV3IGRhdGF2aWV3XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjbWRzVG9TZXJ2ZXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNtZFRvU2VydmVyXCI+YWRkaXRpb25hbCBjb21tYW5kIHRvIHRoZSBTZXJ2ZXI8L3BhcmFtPlxyXG4gIGV4ZWNSZXF1ZXN0V2l0aFN1YmZvcm1SZWNvcmRDeWNsZShjbWRzVG9TZXJ2ZXI6IENvbW1hbmRzVGFibGUsIGNtZFRvU2VydmVyOiBJQ2xpZW50Q29tbWFuZCwgZXhwOiBFeHByZXNzaW9uKTogUHJvbWlzZTx2b2lkPjtcclxufVxyXG4iXX0=