@magic-xpa/engine 4.1100.0-dev4110.106 → 4.1100.0-dev4110.109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/esm2020/index.mjs +188 -2
  2. package/esm2020/src/AccessHelper.mjs +9 -0
  3. package/esm2020/src/ClientManager.mjs +399 -0
  4. package/esm2020/src/CommandsProcessorBase.mjs +58 -0
  5. package/esm2020/src/CommandsProcessorManager.mjs +26 -0
  6. package/esm2020/src/CommandsTable.mjs +162 -0
  7. package/esm2020/src/ConstInterface.mjs +516 -0
  8. package/esm2020/src/CurrentClientVersion.mjs +2 -0
  9. package/esm2020/src/FlowMonitorInterface.mjs +16 -0
  10. package/esm2020/src/GUIManager.mjs +62 -0
  11. package/esm2020/src/GlobalCommandsManager.mjs +34 -0
  12. package/esm2020/src/GuiEventsProcessor.mjs +154 -0
  13. package/esm2020/src/ICommandsTable.mjs +2 -0
  14. package/esm2020/src/ServerConfig.mjs +117 -0
  15. package/esm2020/src/bridge/IGuiEvent.mjs +20 -0
  16. package/esm2020/src/bridge/MagicBridge.mjs +41 -0
  17. package/esm2020/src/commands/ClientOriginatedCommandTaskTag.mjs +11 -0
  18. package/esm2020/src/commands/ClientToServer/AddUserLocateDataViewCommand.mjs +9 -0
  19. package/esm2020/src/commands/ClientToServer/AddUserRangeDataviewCommand.mjs +9 -0
  20. package/esm2020/src/commands/ClientToServer/AddUserSortDataViewCommand.mjs +9 -0
  21. package/esm2020/src/commands/ClientToServer/BrowserEscEventCommand.mjs +23 -0
  22. package/esm2020/src/commands/ClientToServer/ClientOriginatedCommand.mjs +15 -0
  23. package/esm2020/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +60 -0
  24. package/esm2020/src/commands/ClientToServer/ColumnSortEventCommand.mjs +26 -0
  25. package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +260 -0
  26. package/esm2020/src/commands/ClientToServer/CommandSerializationHelper.mjs +69 -0
  27. package/esm2020/src/commands/ClientToServer/ComputeEventCommand.mjs +23 -0
  28. package/esm2020/src/commands/ClientToServer/ContextTerminationEventCommand.mjs +21 -0
  29. package/esm2020/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs +20 -0
  30. package/esm2020/src/commands/ClientToServer/ControlItemsRefreshCommand.mjs +8 -0
  31. package/esm2020/src/commands/ClientToServer/DataViewOutputCommand.mjs +13 -0
  32. package/esm2020/src/commands/ClientToServer/DataviewCommand.mjs +44 -0
  33. package/esm2020/src/commands/ClientToServer/EvaluateCommand.mjs +36 -0
  34. package/esm2020/src/commands/ClientToServer/EventCommand.mjs +40 -0
  35. package/esm2020/src/commands/ClientToServer/ExecOperCommand.mjs +67 -0
  36. package/esm2020/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +22 -0
  37. package/esm2020/src/commands/ClientToServer/GlobalParamsQueryCommand.mjs +11 -0
  38. package/esm2020/src/commands/ClientToServer/ICommandTaskTag.mjs +2 -0
  39. package/esm2020/src/commands/ClientToServer/IndexChangeEventCommand.mjs +21 -0
  40. package/esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs +23 -0
  41. package/esm2020/src/commands/ClientToServer/NonReversibleExitEventCommand.mjs +23 -0
  42. package/esm2020/src/commands/ClientToServer/QueryCommand.mjs +21 -0
  43. package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +27 -0
  44. package/esm2020/src/commands/ClientToServer/RefreshEventCommand.mjs +27 -0
  45. package/esm2020/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +24 -0
  46. package/esm2020/src/commands/ClientToServer/RollbackEventCommand.mjs +39 -0
  47. package/esm2020/src/commands/ClientToServer/SelectProgramCommand.mjs +15 -0
  48. package/esm2020/src/commands/ClientToServer/SetTransactionStateDataviewCommand.mjs +9 -0
  49. package/esm2020/src/commands/ClientToServer/SubformOpenEventCommand.mjs +21 -0
  50. package/esm2020/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +24 -0
  51. package/esm2020/src/commands/ClientToServer/TransactionCommand.mjs +28 -0
  52. package/esm2020/src/commands/ClientToServer/UnloadCommand.mjs +15 -0
  53. package/esm2020/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +18 -0
  54. package/esm2020/src/commands/DataViewCommandBase.mjs +10 -0
  55. package/esm2020/src/commands/IClientCommand.mjs +2 -0
  56. package/esm2020/src/commands/IClientTargetedCommand.mjs +9 -0
  57. package/esm2020/src/commands/IClientToServerCommandInfo.mjs +2 -0
  58. package/esm2020/src/commands/ServerToClient/AbortCommand.mjs +65 -0
  59. package/esm2020/src/commands/ServerToClient/AddLocateCommand.mjs +22 -0
  60. package/esm2020/src/commands/ServerToClient/AddRangeCommand.mjs +62 -0
  61. package/esm2020/src/commands/ServerToClient/AddSortCommand.mjs +33 -0
  62. package/esm2020/src/commands/ServerToClient/ClientRefreshCommand.mjs +25 -0
  63. package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +27 -0
  64. package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +45 -0
  65. package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +221 -0
  66. package/esm2020/src/commands/ServerToClient/ResetLocateCommand.mjs +15 -0
  67. package/esm2020/src/commands/ServerToClient/ResetRangeCommand.mjs +15 -0
  68. package/esm2020/src/commands/ServerToClient/ResetSortCommand.mjs +15 -0
  69. package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +37 -0
  70. package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +83 -0
  71. package/esm2020/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +132 -0
  72. package/esm2020/src/communications/IConnectionStateManager.mjs +2 -0
  73. package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +17 -0
  74. package/esm2020/src/data/DataSourceIdKey.mjs +3 -0
  75. package/esm2020/src/data/DataView.mjs +1610 -0
  76. package/esm2020/src/data/DataViewBase.mjs +4 -0
  77. package/esm2020/src/data/DataviewManager.mjs +28 -0
  78. package/esm2020/src/data/DataviewManagerBase.mjs +15 -0
  79. package/esm2020/src/data/DvCache.mjs +67 -0
  80. package/esm2020/src/data/Field.mjs +646 -0
  81. package/esm2020/src/data/FieldBase.mjs +18 -0
  82. package/esm2020/src/data/FieldsTable.mjs +103 -0
  83. package/esm2020/src/data/IRecordsTable.mjs +2 -0
  84. package/esm2020/src/data/Key.mjs +88 -0
  85. package/esm2020/src/data/Record.mjs +846 -0
  86. package/esm2020/src/data/RecordOutOfDataViewException.mjs +16 -0
  87. package/esm2020/src/data/RecordsTable.mjs +267 -0
  88. package/esm2020/src/data/TaskTransactionManager.mjs +103 -0
  89. package/esm2020/src/data/XMLBasedDcValuesBuilder.mjs +74 -0
  90. package/esm2020/src/enums.mjs +24 -0
  91. package/esm2020/src/env/EnvVariablesTable.mjs +340 -0
  92. package/esm2020/src/env/Environment.mjs +489 -0
  93. package/esm2020/src/env/ILanguageData.mjs +2 -0
  94. package/esm2020/src/env/LanguageData.mjs +226 -0
  95. package/esm2020/src/env/MirrorString.mjs +65 -0
  96. package/esm2020/src/event/ActionManager.mjs +91 -0
  97. package/esm2020/src/event/Event.mjs +1333 -0
  98. package/esm2020/src/event/EventHandler.mjs +766 -0
  99. package/esm2020/src/event/EventHandlerPosition.mjs +204 -0
  100. package/esm2020/src/event/EventsManager.mjs +2975 -0
  101. package/esm2020/src/event/IEventsManager.mjs +7 -0
  102. package/esm2020/src/event/RunTimeEvent.mjs +392 -0
  103. package/esm2020/src/event/RunTimeEventBase.mjs +4 -0
  104. package/esm2020/src/event/UserEventsTable.mjs +47 -0
  105. package/esm2020/src/exp/ExpTable.mjs +59 -0
  106. package/esm2020/src/exp/Expression.mjs +200 -0
  107. package/esm2020/src/exp/ExpressionDict.mjs +727 -0
  108. package/esm2020/src/exp/ExpressionEvaluator.mjs +4208 -0
  109. package/esm2020/src/exp/ExpressionLocalJpn.mjs +314 -0
  110. package/esm2020/src/exp/GlobalParamsTable.mjs +85 -0
  111. package/esm2020/src/exp/YesNoExp.mjs +36 -0
  112. package/esm2020/src/gui/CreatedFormVector.mjs +23 -0
  113. package/esm2020/src/gui/FormsTable.mjs +66 -0
  114. package/esm2020/src/gui/MgControl.mjs +353 -0
  115. package/esm2020/src/gui/MgForm.mjs +1181 -0
  116. package/esm2020/src/http/HttpManager.mjs +97 -0
  117. package/esm2020/src/http/client/HttpClientAsync.mjs +67 -0
  118. package/esm2020/src/http/client/HttpClientBase.mjs +132 -0
  119. package/esm2020/src/http/client/HttpClientEvents.mjs +39 -0
  120. package/esm2020/src/http/client/HttpClientSync.mjs +42 -0
  121. package/esm2020/src/http/client/HttpUtility.mjs +84 -0
  122. package/esm2020/src/http/client/ICommunicationsFailureHandler.mjs +2 -0
  123. package/esm2020/src/remote/AddUserLocateRemoteDataViewCommand.mjs +18 -0
  124. package/esm2020/src/remote/AddUserRangeRemoteDataViewCommand.mjs +18 -0
  125. package/esm2020/src/remote/AddUserSortRemoteDataViewCommand.mjs +18 -0
  126. package/esm2020/src/remote/RemoteCommandsProcessor.mjs +880 -0
  127. package/esm2020/src/remote/RemoteControlItemsRefreshCommand.mjs +25 -0
  128. package/esm2020/src/remote/RemoteDataViewCommandBase.mjs +24 -0
  129. package/esm2020/src/remote/RemoteDataViewCommandFactory.mjs +61 -0
  130. package/esm2020/src/remote/RemoteDataViewCommandUpdateNonModifiable.mjs +16 -0
  131. package/esm2020/src/remote/RemoteDataviewManager.mjs +17 -0
  132. package/esm2020/src/remote/RemoteInitDataViewCommand.mjs +11 -0
  133. package/esm2020/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +17 -0
  134. package/esm2020/src/remote/ResetUserRangeRemoteDataviewCommand.mjs +13 -0
  135. package/esm2020/src/remote/ResetUserSortRemoteDataviewCommand.mjs +16 -0
  136. package/esm2020/src/remote/ServerError.mjs +40 -0
  137. package/esm2020/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +20 -0
  138. package/esm2020/src/rt/Argument.mjs +265 -0
  139. package/esm2020/src/rt/ArgumentsList.mjs +103 -0
  140. package/esm2020/src/rt/Boundary.mjs +152 -0
  141. package/esm2020/src/rt/CompMainPrgTable.mjs +65 -0
  142. package/esm2020/src/rt/DataviewHeaderBase.mjs +96 -0
  143. package/esm2020/src/rt/DataviewHeaderFactory.mjs +7 -0
  144. package/esm2020/src/rt/DataviewHeaders.mjs +53 -0
  145. package/esm2020/src/rt/DataviewHeadersSaxHandler.mjs +38 -0
  146. package/esm2020/src/rt/ExecutionStack.mjs +94 -0
  147. package/esm2020/src/rt/ExecutionStackEntry.mjs +17 -0
  148. package/esm2020/src/rt/HandlersTable.mjs +96 -0
  149. package/esm2020/src/rt/IDataSourceViewDefinition.mjs +2 -0
  150. package/esm2020/src/rt/IDataviewHeader.mjs +2 -0
  151. package/esm2020/src/rt/IResultValue.mjs +2 -0
  152. package/esm2020/src/rt/LastFocusedManager.mjs +67 -0
  153. package/esm2020/src/rt/Operation.mjs +735 -0
  154. package/esm2020/src/rt/OperationTable.mjs +67 -0
  155. package/esm2020/src/rt/Recompute.mjs +355 -0
  156. package/esm2020/src/rt/RecomputeTable.mjs +63 -0
  157. package/esm2020/src/rt/RemoteDataviewHeader.mjs +108 -0
  158. package/esm2020/src/rt/ResultValue.mjs +12 -0
  159. package/esm2020/src/rt/TableCache.mjs +177 -0
  160. package/esm2020/src/rt/TableCacheManager.mjs +67 -0
  161. package/esm2020/src/rt/Transaction.mjs +53 -0
  162. package/esm2020/src/security/UserDetails.mjs +71 -0
  163. package/esm2020/src/tasks/IMGDataCollection.mjs +2 -0
  164. package/esm2020/src/tasks/MGData.mjs +552 -0
  165. package/esm2020/src/tasks/MGDataCollection.mjs +252 -0
  166. package/esm2020/src/tasks/RCTimer.mjs +63 -0
  167. package/esm2020/src/tasks/RemoteTaskService.mjs +45 -0
  168. package/esm2020/src/tasks/Task.mjs +2496 -0
  169. package/esm2020/src/tasks/TaskBase.mjs +87 -0
  170. package/esm2020/src/tasks/TaskServiceBase.mjs +25 -0
  171. package/esm2020/src/tasks/TasksTable.mjs +80 -0
  172. package/esm2020/src/tasks/sort/Sort.mjs +7 -0
  173. package/esm2020/src/tasks/sort/SortCollection.mjs +67 -0
  174. package/esm2020/src/util/ConstUtils.mjs +14 -0
  175. package/esm2020/src/util/FlowMonitorQueue.mjs +453 -0
  176. package/esm2020/src/util/HeapSort.mjs +70 -0
  177. package/esm2020/src/util/IMirrorXML.mjs +2 -0
  178. package/esm2020/src/util/IServerConfig.mjs +2 -0
  179. package/esm2020/src/util/MgBlockingQueue.mjs +2 -0
  180. package/esm2020/src/util/MgPriorityBlockingQueue.mjs +74 -0
  181. package/esm2020/src/util/MgPriorityQueue.mjs +66 -0
  182. package/esm2020/src/util/ParamParseResult.mjs +8 -0
  183. package/esm2020/src/util/PrmMap.mjs +151 -0
  184. package/esm2020/src/util/ReturnResult.mjs +46 -0
  185. package/esm2020/src/util/ReturnResultBase.mjs +18 -0
  186. package/esm2020/src/util/Scrambler.mjs +89 -0
  187. package/esm2020/src/util/UniqueIDUtils.mjs +12 -0
  188. package/esm2020/src/util/cookie.service.mjs +92 -0
  189. package/fesm2015/magic-xpa-engine.mjs +30835 -0
  190. package/fesm2015/magic-xpa-engine.mjs.map +1 -1
  191. package/fesm2020/magic-xpa-engine.mjs +30004 -0
  192. package/fesm2020/magic-xpa-engine.mjs.map +1 -1
  193. package/index.d.ts +187 -1
  194. package/package.json +4 -4
  195. package/src/AccessHelper.d.ts +20 -0
  196. package/src/ClientManager.d.ts +32 -0
  197. package/src/CommandsProcessorBase.d.ts +23 -0
  198. package/src/CommandsProcessorManager.d.ts +6 -0
  199. package/src/CommandsTable.d.ts +22 -0
  200. package/src/ConstInterface.d.ts +515 -0
  201. package/src/CurrentClientVersion.d.ts +1 -0
  202. package/src/FlowMonitorInterface.d.ts +15 -0
  203. package/src/GUIManager.d.ts +17 -0
  204. package/src/GlobalCommandsManager.d.ts +17 -0
  205. package/src/GuiEventsProcessor.d.ts +24 -0
  206. package/src/ICommandsTable.d.ts +9 -0
  207. package/src/ServerConfig.d.ts +34 -0
  208. package/src/bridge/IGuiEvent.d.ts +19 -0
  209. package/src/bridge/MagicBridge.d.ts +16 -0
  210. package/src/commands/ClientOriginatedCommandTaskTag.d.ts +8 -0
  211. package/src/commands/ClientToServer/AddUserLocateDataViewCommand.d.ts +4 -0
  212. package/src/commands/ClientToServer/AddUserRangeDataviewCommand.d.ts +6 -0
  213. package/src/commands/ClientToServer/AddUserSortDataViewCommand.d.ts +6 -0
  214. package/src/commands/ClientToServer/BrowserEscEventCommand.d.ts +8 -0
  215. package/src/commands/ClientToServer/ClientOriginatedCommand.d.ts +8 -0
  216. package/src/commands/ClientToServer/ClientOriginatedCommandSerializer.d.ts +6 -0
  217. package/src/commands/ClientToServer/ColumnSortEventCommand.d.ts +10 -0
  218. package/src/commands/ClientToServer/CommandFactory.d.ts +64 -0
  219. package/src/commands/ClientToServer/CommandSerializationHelper.d.ts +20 -0
  220. package/src/commands/ClientToServer/ComputeEventCommand.d.ts +8 -0
  221. package/src/commands/ClientToServer/ContextTerminationEventCommand.d.ts +7 -0
  222. package/src/commands/ClientToServer/ContextTimeoutResetCommand.d.ts +7 -0
  223. package/src/commands/ClientToServer/ControlItemsRefreshCommand.d.ts +6 -0
  224. package/src/commands/ClientToServer/DataViewOutputCommand.d.ts +9 -0
  225. package/src/commands/ClientToServer/DataviewCommand.d.ts +32 -0
  226. package/src/commands/ClientToServer/EvaluateCommand.d.ts +15 -0
  227. package/src/commands/ClientToServer/EventCommand.d.ts +15 -0
  228. package/src/commands/ClientToServer/ExecOperCommand.d.ts +23 -0
  229. package/src/commands/ClientToServer/FetchDataControlValuesEventCommand.d.ts +8 -0
  230. package/src/commands/ClientToServer/GlobalParamsQueryCommand.d.ts +5 -0
  231. package/src/commands/ClientToServer/ICommandTaskTag.d.ts +3 -0
  232. package/src/commands/ClientToServer/IndexChangeEventCommand.d.ts +8 -0
  233. package/src/commands/ClientToServer/IniputForceWriteCommand.d.ts +10 -0
  234. package/src/commands/ClientToServer/NonReversibleExitEventCommand.d.ts +8 -0
  235. package/src/commands/ClientToServer/QueryCommand.d.ts +8 -0
  236. package/src/commands/ClientToServer/RecomputeCommand.d.ts +11 -0
  237. package/src/commands/ClientToServer/RefreshEventCommand.d.ts +12 -0
  238. package/src/commands/ClientToServer/RefreshScreenEventCommand.d.ts +10 -0
  239. package/src/commands/ClientToServer/RollbackEventCommand.d.ts +14 -0
  240. package/src/commands/ClientToServer/SelectProgramCommand.d.ts +6 -0
  241. package/src/commands/ClientToServer/SetTransactionStateDataviewCommand.d.ts +5 -0
  242. package/src/commands/ClientToServer/SubformOpenEventCommand.d.ts +8 -0
  243. package/src/commands/ClientToServer/SubformRefreshEventCommand.d.ts +9 -0
  244. package/src/commands/ClientToServer/TransactionCommand.d.ts +12 -0
  245. package/src/commands/ClientToServer/UnloadCommand.d.ts +7 -0
  246. package/src/commands/ClientToServer/WriteMessageToServerLogCommand.d.ts +6 -0
  247. package/src/commands/DataViewCommandBase.d.ts +6 -0
  248. package/src/commands/IClientCommand.d.ts +2 -0
  249. package/src/commands/IClientTargetedCommand.d.ts +12 -0
  250. package/src/commands/IClientToServerCommandInfo.d.ts +3 -0
  251. package/src/commands/ServerToClient/AbortCommand.d.ts +11 -0
  252. package/src/commands/ServerToClient/AddLocateCommand.d.ts +6 -0
  253. package/src/commands/ServerToClient/AddRangeCommand.d.ts +10 -0
  254. package/src/commands/ServerToClient/AddSortCommand.d.ts +9 -0
  255. package/src/commands/ServerToClient/ClientRefreshCommand.d.ts +7 -0
  256. package/src/commands/ServerToClient/ClientTargetedCommandBase.d.ts +12 -0
  257. package/src/commands/ServerToClient/EnhancedVerifyCommand.d.ts +13 -0
  258. package/src/commands/ServerToClient/OpenURLCommand.d.ts +21 -0
  259. package/src/commands/ServerToClient/ResetLocateCommand.d.ts +6 -0
  260. package/src/commands/ServerToClient/ResetRangeCommand.d.ts +6 -0
  261. package/src/commands/ServerToClient/ResetSortCommand.d.ts +6 -0
  262. package/src/commands/ServerToClient/ResultCommand.d.ts +10 -0
  263. package/src/commands/ServerToClient/VerifyCommand.d.ts +17 -0
  264. package/src/commands/ServerToClient/XMLBasedCommandBuilder.d.ts +11 -0
  265. package/src/communications/IConnectionStateManager.d.ts +4 -0
  266. package/src/communications/InteractiveCommunicationsFailureHandler.d.ts +6 -0
  267. package/src/data/DataSourceIdKey.d.ts +2 -0
  268. package/src/data/DataView.d.ts +162 -0
  269. package/src/data/DataViewBase.d.ts +12 -0
  270. package/src/data/DataviewManager.d.ts +14 -0
  271. package/src/data/DataviewManagerBase.d.ts +11 -0
  272. package/src/data/DvCache.d.ts +15 -0
  273. package/src/data/Field.d.ts +103 -0
  274. package/src/data/FieldBase.d.ts +23 -0
  275. package/src/data/FieldsTable.d.ts +27 -0
  276. package/src/data/IRecordsTable.d.ts +7 -0
  277. package/src/data/Key.d.ts +15 -0
  278. package/src/data/Record.d.ts +156 -0
  279. package/src/data/RecordOutOfDataViewException.d.ts +10 -0
  280. package/src/data/RecordsTable.d.ts +38 -0
  281. package/src/data/TaskTransactionManager.d.ts +17 -0
  282. package/src/data/XMLBasedDcValuesBuilder.d.ts +11 -0
  283. package/src/enums.d.ts +21 -0
  284. package/src/env/EnvVariablesTable.d.ts +17 -0
  285. package/src/env/Environment.d.ts +118 -0
  286. package/src/env/ILanguageData.d.ts +3 -0
  287. package/src/env/LanguageData.d.ts +20 -0
  288. package/src/env/MirrorString.d.ts +15 -0
  289. package/src/event/ActionManager.d.ts +14 -0
  290. package/src/event/Event.d.ts +79 -0
  291. package/src/event/EventHandler.d.ts +66 -0
  292. package/src/event/EventHandlerPosition.d.ts +25 -0
  293. package/src/event/EventsManager.d.ts +204 -0
  294. package/src/event/IEventsManager.d.ts +77 -0
  295. package/src/event/RunTimeEvent.d.ts +123 -0
  296. package/src/event/RunTimeEventBase.d.ts +5 -0
  297. package/src/event/UserEventsTable.d.ts +11 -0
  298. package/src/exp/ExpTable.d.ts +11 -0
  299. package/src/exp/Expression.d.ts +37 -0
  300. package/src/exp/ExpressionDict.d.ts +12 -0
  301. package/src/exp/ExpressionEvaluator.d.ts +198 -0
  302. package/src/exp/ExpressionLocalJpn.d.ts +18 -0
  303. package/src/exp/GlobalParamsTable.d.ts +19 -0
  304. package/src/exp/YesNoExp.d.ts +9 -0
  305. package/src/gui/CreatedFormVector.d.ts +10 -0
  306. package/src/gui/FormsTable.d.ts +15 -0
  307. package/src/gui/MgControl.d.ts +60 -0
  308. package/src/gui/MgForm.d.ts +93 -0
  309. package/src/http/HttpManager.d.ts +25 -0
  310. package/src/http/client/HttpClientAsync.d.ts +16 -0
  311. package/src/http/client/HttpClientBase.d.ts +30 -0
  312. package/src/http/client/HttpClientEvents.d.ts +18 -0
  313. package/src/http/client/HttpClientSync.d.ts +17 -0
  314. package/src/http/client/HttpUtility.d.ts +10 -0
  315. package/src/http/client/ICommunicationsFailureHandler.d.ts +5 -0
  316. package/src/remote/AddUserLocateRemoteDataViewCommand.d.ts +8 -0
  317. package/src/remote/AddUserRangeRemoteDataViewCommand.d.ts +8 -0
  318. package/src/remote/AddUserSortRemoteDataViewCommand.d.ts +8 -0
  319. package/src/remote/RemoteCommandsProcessor.d.ts +51 -0
  320. package/src/remote/RemoteControlItemsRefreshCommand.d.ts +8 -0
  321. package/src/remote/RemoteDataViewCommandBase.d.ts +10 -0
  322. package/src/remote/RemoteDataViewCommandFactory.d.ts +6 -0
  323. package/src/remote/RemoteDataViewCommandUpdateNonModifiable.d.ts +8 -0
  324. package/src/remote/RemoteDataviewManager.d.ts +9 -0
  325. package/src/remote/RemoteInitDataViewCommand.d.ts +7 -0
  326. package/src/remote/ResetUserLocateRemoteDataviewCommand.d.ts +7 -0
  327. package/src/remote/ResetUserRangeRemoteDataviewCommand.d.ts +7 -0
  328. package/src/remote/ResetUserSortRemoteDataviewCommand.d.ts +7 -0
  329. package/src/remote/ServerError.d.ts +16 -0
  330. package/src/remote/SetTransactionStateRemoteDataViewCommand.d.ts +8 -0
  331. package/src/rt/Argument.d.ts +36 -0
  332. package/src/rt/ArgumentsList.d.ts +24 -0
  333. package/src/rt/Boundary.d.ts +27 -0
  334. package/src/rt/CompMainPrgTable.d.ts +10 -0
  335. package/src/rt/DataviewHeaderBase.d.ts +34 -0
  336. package/src/rt/DataviewHeaderFactory.d.ts +5 -0
  337. package/src/rt/DataviewHeaders.d.ts +12 -0
  338. package/src/rt/DataviewHeadersSaxHandler.d.ts +10 -0
  339. package/src/rt/ExecutionStack.d.ts +22 -0
  340. package/src/rt/ExecutionStackEntry.d.ts +7 -0
  341. package/src/rt/HandlersTable.d.ts +19 -0
  342. package/src/rt/IDataSourceViewDefinition.d.ts +6 -0
  343. package/src/rt/IDataviewHeader.d.ts +10 -0
  344. package/src/rt/IResultValue.d.ts +4 -0
  345. package/src/rt/LastFocusedManager.d.ts +23 -0
  346. package/src/rt/Operation.d.ts +97 -0
  347. package/src/rt/OperationTable.d.ts +15 -0
  348. package/src/rt/Recompute.d.ts +41 -0
  349. package/src/rt/RecomputeTable.d.ts +9 -0
  350. package/src/rt/RemoteDataviewHeader.d.ts +14 -0
  351. package/src/rt/ResultValue.d.ts +7 -0
  352. package/src/rt/TableCache.d.ts +29 -0
  353. package/src/rt/TableCacheManager.d.ts +10 -0
  354. package/src/rt/Transaction.d.ts +23 -0
  355. package/src/security/UserDetails.d.ts +16 -0
  356. package/src/tasks/IMGDataCollection.d.ts +26 -0
  357. package/src/tasks/MGData.d.ts +63 -0
  358. package/src/tasks/MGDataCollection.d.ts +42 -0
  359. package/src/tasks/RCTimer.d.ts +13 -0
  360. package/src/tasks/RemoteTaskService.d.ts +16 -0
  361. package/src/tasks/Task.d.ts +312 -0
  362. package/src/tasks/TaskBase.d.ts +123 -0
  363. package/src/tasks/TaskServiceBase.d.ts +16 -0
  364. package/src/tasks/TasksTable.d.ts +21 -0
  365. package/src/tasks/sort/Sort.d.ts +4 -0
  366. package/src/tasks/sort/SortCollection.d.ts +11 -0
  367. package/src/util/ConstUtils.d.ts +3 -0
  368. package/src/util/FlowMonitorQueue.d.ts +70 -0
  369. package/src/util/HeapSort.d.ts +6 -0
  370. package/src/util/IMirrorXML.d.ts +6 -0
  371. package/src/util/IServerConfig.d.ts +11 -0
  372. package/src/util/MgBlockingQueue.d.ts +5 -0
  373. package/src/util/MgPriorityBlockingQueue.d.ts +17 -0
  374. package/src/util/MgPriorityQueue.d.ts +13 -0
  375. package/src/util/ParamParseResult.d.ts +6 -0
  376. package/src/util/PrmMap.d.ts +28 -0
  377. package/src/util/ReturnResult.d.ts +18 -0
  378. package/src/util/ReturnResultBase.d.ts +11 -0
  379. package/src/util/Scrambler.d.ts +10 -0
  380. package/src/util/UniqueIDUtils.d.ts +4 -0
  381. package/src/util/cookie.service.d.ts +8 -0
@@ -0,0 +1,162 @@
1
+ import { IClientTargetedCommand } from './commands/IClientTargetedCommand';
2
+ import { XMLBasedCommandBuilder } from './commands/ServerToClient/XMLBasedCommandBuilder';
3
+ import { ResultCommand } from './commands/ServerToClient/ResultCommand';
4
+ import { AbortCommand } from './commands/ServerToClient/AbortCommand';
5
+ import { List } from '@magic-xpa/mscorelib';
6
+ import { VerifyCommand } from './commands/ServerToClient/VerifyCommand';
7
+ import { ConstInterface } from './ConstInterface';
8
+ import { ClientOriginatedCommandSerializer } from './commands/ClientToServer/ClientOriginatedCommandSerializer';
9
+ import { GlobalCommandsManager } from './GlobalCommandsManager';
10
+ import { AccessHelper } from './AccessHelper';
11
+ export class CommandsTable {
12
+ constructor() {
13
+ this._cmds = null;
14
+ this._iterationIdx = 0;
15
+ this._cmds = new List();
16
+ }
17
+ static createCommandsTable() {
18
+ return new CommandsTable();
19
+ }
20
+ fillData(parser) {
21
+ while (this.initInnerObjects(parser.getNextTag(), parser)) {
22
+ }
23
+ }
24
+ initInnerObjects(foundTagName, parser) {
25
+ if (foundTagName == null)
26
+ return false;
27
+ if (foundTagName === ConstInterface.MG_TAG_COMMAND) {
28
+ let cmd = new XMLBasedCommandBuilder().fillData(parser);
29
+ this._cmds.push(cmd);
30
+ }
31
+ else
32
+ return false;
33
+ return true;
34
+ }
35
+ async Execute(res) {
36
+ let currFrame = GlobalCommandsManager.Instance.getCmdFrame();
37
+ GlobalCommandsManager.Instance.add1toCmdFrame();
38
+ let firstBlocking = -1;
39
+ let i, j;
40
+ let cmd;
41
+ for (i = 0; i < this.getSize(); i = i + 1) {
42
+ cmd = this.getCmd(i);
43
+ if (cmd.IsBlocking && firstBlocking === -1)
44
+ firstBlocking = i;
45
+ else if (cmd instanceof ResultCommand && firstBlocking !== -1) {
46
+ this._cmds.Insert(firstBlocking, cmd);
47
+ this._cmds.RemoveAt(i + 1);
48
+ }
49
+ }
50
+ for (i = 0; i < this.getSize(); i = i + 1) {
51
+ cmd = this.getCmd(i);
52
+ cmd.Frame = currFrame;
53
+ if (cmd.IsBlocking) {
54
+ for (j = i + 1; j < this.getSize(); j = j + 1)
55
+ GlobalCommandsManager.Instance.addUnframedCmd(this.getCmd(j));
56
+ this._cmds.SetSize(i + 1);
57
+ break;
58
+ }
59
+ }
60
+ while (this.getSize() > 0) {
61
+ const tmpCmd = this.extractCmd(currFrame);
62
+ if (tmpCmd instanceof IClientTargetedCommand)
63
+ cmd = tmpCmd;
64
+ if (cmd != null) {
65
+ if (cmd.ShouldExecute) {
66
+ await cmd.Execute(res);
67
+ }
68
+ else {
69
+ GlobalCommandsManager.Instance.addCommandsExecutedAfterTaskStarted(cmd);
70
+ }
71
+ }
72
+ else
73
+ break;
74
+ }
75
+ }
76
+ extractCmd(frame) {
77
+ let size = this.getSize();
78
+ let cmd = null;
79
+ let verifyCmd = null;
80
+ let verifyIndex;
81
+ let verifyTask = null;
82
+ let abortTask = null;
83
+ let startIterationIdx;
84
+ let tid;
85
+ if (size === 0)
86
+ return null;
87
+ if (this._iterationIdx >= size)
88
+ this._iterationIdx = 0;
89
+ startIterationIdx = this._iterationIdx;
90
+ for (; this._iterationIdx < size; this._iterationIdx++) {
91
+ cmd = ((this.getCmd(this._iterationIdx) instanceof AbortCommand) ? this.getCmd(this._iterationIdx) : null);
92
+ if (cmd != null && !cmd.TaskTag.startsWith('-') && cmd.Frame === frame) {
93
+ for (verifyIndex = 0; verifyIndex < this._iterationIdx; verifyIndex++) {
94
+ verifyCmd = ((this.getCmd(verifyIndex) instanceof VerifyCommand) ? this.getCmd(verifyIndex) : null);
95
+ if (verifyCmd != null && verifyCmd.Frame === frame) {
96
+ verifyTask = AccessHelper.mgDataTable.GetTaskByID(verifyCmd.TaskTag);
97
+ abortTask = AccessHelper.mgDataTable.GetTaskByID(cmd.TaskTag);
98
+ if (verifyTask != null && verifyTask.isDescendentOf(abortTask)) {
99
+ this._cmds.RemoveAt(verifyIndex);
100
+ this._iterationIdx--;
101
+ return verifyCmd;
102
+ }
103
+ }
104
+ }
105
+ this._cmds.RemoveAt(this._iterationIdx);
106
+ size = this.getSize();
107
+ for (startIterationIdx = 0; startIterationIdx < size; startIterationIdx++) {
108
+ tid = this.getCmd(startIterationIdx).TaskTag;
109
+ if (tid != null && tid.substr(1) === cmd.TaskTag) {
110
+ this._cmds.RemoveAt(startIterationIdx);
111
+ break;
112
+ }
113
+ }
114
+ return cmd;
115
+ }
116
+ }
117
+ for (verifyIndex = 0; verifyIndex < size; verifyIndex++) {
118
+ verifyCmd = ((this.getCmd(verifyIndex) instanceof VerifyCommand) ? this.getCmd(verifyIndex) : null);
119
+ if (verifyCmd != null && verifyCmd.Frame === frame &&
120
+ AccessHelper.mgDataTable.GetTaskByID(verifyCmd.TaskTag) != null) {
121
+ this._cmds.RemoveAt(verifyIndex);
122
+ return verifyCmd;
123
+ }
124
+ }
125
+ for (this._iterationIdx = 0; this._iterationIdx < size; this._iterationIdx++) {
126
+ cmd = this.getCmd(this._iterationIdx);
127
+ if (cmd.Frame === frame) {
128
+ this._cmds.RemoveAt(this._iterationIdx);
129
+ return cmd;
130
+ }
131
+ }
132
+ return null;
133
+ }
134
+ getCmd(idx) {
135
+ return this._cmds.get_Item(idx);
136
+ }
137
+ buildXML(message) {
138
+ for (let i = 0; i < this._cmds.length; i = i + 1) {
139
+ let cmd = this._cmds.get_Item(i);
140
+ message.Append(ClientOriginatedCommandSerializer.Serialize(cmd, AccessHelper.mgDataTable.getCurrMGData()));
141
+ }
142
+ this.clear();
143
+ }
144
+ Add(cmd) {
145
+ this._cmds.push(cmd);
146
+ }
147
+ Clear() {
148
+ this._cmds.Clear();
149
+ }
150
+ ExtractCommand(commandIndex) {
151
+ let command = this.getCmd(commandIndex);
152
+ this._cmds.RemoveAt(commandIndex);
153
+ return command;
154
+ }
155
+ clear() {
156
+ this._cmds.Clear();
157
+ }
158
+ getSize() {
159
+ return this._cmds.length;
160
+ }
161
+ }
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZHNUYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvQ29tbWFuZHNUYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUV4RixPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFFdEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQ3BFLE9BQU8sRUFBZ0IsSUFBSSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBRXRFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsaUNBQWlDLEVBQUMsTUFBTSw2REFBNkQsQ0FBQztBQUU5RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsTUFBTSxPQUFPLGFBQWE7SUFJeEI7UUFIUSxVQUFLLEdBQXlCLElBQUksQ0FBQztRQUNuQyxrQkFBYSxHQUFXLENBQUMsQ0FBQztRQUdoQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFNRCxRQUFRLENBQUMsTUFBaUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO1NBQzFEO0lBQ0gsQ0FBQztJQU1PLGdC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SSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDeEQsSUFBSSxHQUFHLEdBQXFELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25GLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUNBQWlDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM1RztRQUVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFNRCxHQUFHLENBQUMsR0FBbUI7UUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUtELEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFPRCxjQUFjLENBQUMsWUFBb0I7UUFDakMsSUFBSSxPQUFPLEdBQW1CLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUtELEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFLRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBYbWxQYXJzZXIgfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHtJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kfSBmcm9tICcuL2NvbW1hbmRzL0lDbGllbnRUYXJnZXRlZENvbW1hbmQnO1xyXG5pbXBvcnQge1hNTEJhc2VkQ29tbWFuZEJ1aWxkZXJ9IGZyb20gJy4vY29tbWFuZHMvU2VydmVyVG9DbGllbnQvWE1MQmFzZWRDb21tYW5kQnVpbGRlcic7XHJcbmltcG9ydCB7SVJlc3VsdFZhbHVlfSBmcm9tICcuL3J0L0lSZXN1bHRWYWx1ZSc7XHJcbmltcG9ydCB7UmVzdWx0Q29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9TZXJ2ZXJUb0NsaWVudC9SZXN1bHRDb21tYW5kJztcclxuaW1wb3J0IHtJQ2xpZW50Q29tbWFuZH0gZnJvbSAnLi9jb21tYW5kcy9JQ2xpZW50Q29tbWFuZCc7XHJcbmltcG9ydCB7QWJvcnRDb21tYW5kfSBmcm9tICcuL2NvbW1hbmRzL1NlcnZlclRvQ2xpZW50L0Fib3J0Q29tbWFuZCc7XHJcbmltcG9ydCB7U3RyaW5nQnVpbGRlciwgTGlzdH0gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQge1ZlcmlmeUNvbW1hbmR9IGZyb20gJy4vY29tbWFuZHMvU2VydmVyVG9DbGllbnQvVmVyaWZ5Q29tbWFuZCc7XHJcbmltcG9ydCB7Q2xpZW50T3JpZ2luYXRlZENvbW1hbmR9IGZyb20gJy4vY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ2xpZW50T3JpZ2luYXRlZENvbW1hbmQnO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tICcuL0NvbnN0SW50ZXJmYWNlJztcclxuaW1wb3J0IHtUYXNrfSBmcm9tICcuL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQge0NsaWVudE9yaWdpbmF0ZWRDb21tYW5kU2VyaWFsaXplcn0gZnJvbSAnLi9jb21tYW5kcy9DbGllbnRUb1NlcnZlci9DbGllbnRPcmlnaW5hdGVkQ29tbWFuZFNlcmlhbGl6ZXInO1xyXG5pbXBvcnQgeyBJQ29tbWFuZHNUYWJsZSB9IGZyb20gJy4vSUNvbW1hbmRzVGFibGUnO1xyXG5pbXBvcnQgeyBHbG9iYWxDb21tYW5kc01hbmFnZXIgfSBmcm9tICcuL0dsb2JhbENvbW1hbmRzTWFuYWdlcic7XHJcbmltcG9ydCB7IEFjY2Vzc0hlbHBlciB9IGZyb20gJy4vQWNjZXNzSGVscGVyJztcclxuXHJcbmV4cG9ydCBjbGFzcyBDb21tYW5kc1RhYmxlIGltcGxlbWVudHMgSUNvbW1hbmRzVGFibGV7XHJcbiAgcHJpdmF0ZSBfY21kczogTGlzdDxJQ2xpZW50Q29tbWFuZD4gPSBudWxsO1xyXG4gIHByaXZhdGUgX2l0ZXJhdGlvbklkeDogbnVtYmVyID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl9jbWRzID0gbmV3IExpc3QoKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjcmVhdGVDb21tYW5kc1RhYmxlKCk6SUNvbW1hbmRzVGFibGUge1xyXG4gICAgcmV0dXJuIG5ldyBDb21tYW5kc1RhYmxlKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgVG8gcGFyc2UgaW5wdXQgc3RyaW5nIGFuZCBmaWxsICBfY21kc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBpbmRleCBvZiBlbmQgbGFzdCAgPGNvbW1hbmQgLi4uPiB0YWc8L3JldHVybnM+XHJcbiAgZmlsbERhdGEocGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkIHtcclxuICAgIHdoaWxlICh0aGlzLmluaXRJbm5lck9iamVjdHMocGFyc2VyLmdldE5leHRUYWcoKSwgcGFyc2VyKSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFRvIGFsbG9jYXRlIGFuZCBmaWxsIGlubmVyIG9iamVjdHMgb2YgdGhlIGNsYXNzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZvdW5kVGFnTmFtZVwiPiAgbmFtZSBvZiBpbm5lciB0YWcgPC9wYXJhbT5cclxuICBwcml2YXRlIGluaXRJbm5lck9iamVjdHMoZm91bmRUYWdOYW1lOiBzdHJpbmcsIHBhcnNlcjogWG1sUGFyc2VyKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZm91bmRUYWdOYW1lID09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAoZm91bmRUYWdOYW1lID09PSBDb25zdEludGVyZmFjZS5NR19UQUdfQ09NTUFORCkge1xyXG4gICAgICBsZXQgY21kOiBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kID0gbmV3IFhNTEJhc2VkQ29tbWFuZEJ1aWxkZXIoKS5maWxsRGF0YShwYXJzZXIpIGFzIElDbGllbnRUYXJnZXRlZENvbW1hbmQ7XHJcbiAgICAgIHRoaXMuX2NtZHMucHVzaChjbWQpO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBFeGVjdXRlIGFsbCBjb21tYW5kcyBpbiBjb21tYW5kIHRhYmxlIGFuZCBkZWxldGUgdGhlbVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicmVzXCI+cmVzdWx0LjwvcGFyYW0+XHJcbiAgYXN5bmMgRXhlY3V0ZShyZXM6IElSZXN1bHRWYWx1ZSk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IGN1cnJGcmFtZTogbnVtYmVyID0gR2xvYmFsQ29tbWFuZHNNYW5hZ2VyLkluc3RhbmNlLmdldENtZEZyYW1lKCk7IC8vIGNtZEZyYW1lKys7ICBzYXZlIGEgbG9jYWwgdmFsdWUgb2YgdGhlIGZyYW1lXHJcbiAgICBHbG9iYWxDb21tYW5kc01hbmFnZXIuSW5zdGFuY2UuYWRkMXRvQ21kRnJhbWUoKTtcclxuICAgIGxldCBmaXJzdEJsb2NraW5nOiBudW1iZXIgPSAtMTtcclxuICAgIGxldCBpOiBudW1iZXIsIGo6IG51bWJlcjtcclxuICAgIGxldCBjbWQ6IElDbGllbnRUYXJnZXRlZENvbW1hbmQ7XHJcblxyXG4gICAgLy8gZnJhbWVzIGFyZSB1c2VkIGhlcmUgdG8gbWFrZSBzdXJlIHRoYXQgd2hlbiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgcmVjdXJzaXZlbHlcclxuICAgIC8vIHRoZSBpbm5lciBjYWxsIHdpbGwgbm90IGV4ZWN1dGUgY29tbWFuZHMgdGhhdCBzaG91bGQgYmUgZXhlY3V0ZWQgYnkgc29tZSBvdXRlclxyXG4gICAgLy8gY2FsbCB0byB0aGUgbWV0aG9kXHJcblxyXG4gICAgLy8gRmlyc3Qgc3RlcCAtIG1vdmUgYWxsIHJlc3VsdCBjb21tYW5kcyBiZWZvcmUgYW55IGJsb2NraW5nIGNvbW1hbmRzIChRQ1IgIzY5MzQyOClcclxuICAgIC8vIGl0IGNhbid0IGJlIHRoYXQgdGhleSBiZWxvbmcgdG8gdGhlIGJsb2NraW5nIHRhc2suXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5nZXRTaXplKCk7IGkgPSBpICsgMSkge1xyXG5cclxuICAgICAgY21kID0gdGhpcy5nZXRDbWQoaSkgYXMgSUNsaWVudFRhcmdldGVkQ29tbWFuZDtcclxuICAgICAgaWYgKGNtZC5Jc0Jsb2NraW5nICYmIGZpcnN0QmxvY2tpbmcgPT09IC0xKVxyXG4gICAgICAgIGZpcnN0QmxvY2tpbmcgPSBpO1xyXG4gICAgICBlbHNlIGlmIChjbWQgaW5zdGFuY2VvZiBSZXN1bHRDb21tYW5kICYmIGZpcnN0QmxvY2tpbmcgIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5fY21kcy5JbnNlcnQoZmlyc3RCbG9ja2luZywgY21kKTtcclxuICAgICAgICB0aGlzLl9jbWRzLlJlbW92ZUF0KGkgKyAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gc2V0IHRoZSBmcmFtZSBmb3IgY29tbWFuZHMgd2hpY2ggaGFzIG5vIGZyYW1lIHlldFxyXG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMuZ2V0U2l6ZSgpOyBpID0gaSArIDEpIHtcclxuXHJcbiAgICAgIGNtZCA9IHRoaXMuZ2V0Q21kKGkpIGFzIElDbGllbnRUYXJnZXRlZENvbW1hbmQ7XHJcbiAgICAgIGNtZC5GcmFtZSA9IGN1cnJGcmFtZTtcclxuXHJcbiAgICAgIC8vIElmIGEgY29tbWFuZCBibG9ja3MgdGhlIGNhbGxlciwgZm9sbG93aW5nIGNvbW1hbmRzIGFyZSBtb3ZlZCB0b1xyXG4gICAgICAvLyB0aGUgbmV4dCBhY3RpdmUgTUdkYXRhLCBzbyB0aGV5IHdpbGwgYmUgZXhlY3V0ZWQgKFFDUiAjNDM4Mzg3KVxyXG4gICAgICBpZiAoY21kLklzQmxvY2tpbmcpIHtcclxuICAgICAgICBmb3IgKGogPSBpICsgMTsgaiA8IHRoaXMuZ2V0U2l6ZSgpOyBqID0gaiArIDEpXHJcbiAgICAgICAgICBHbG9iYWxDb21tYW5kc01hbmFnZXIuSW5zdGFuY2UuYWRkVW5mcmFtZWRDbWQodGhpcy5nZXRDbWQoaikpO1xyXG5cclxuICAgICAgICB0aGlzLl9jbWRzLlNldFNpemUoaSArIDEpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgd2hpbGUgKHRoaXMuZ2V0U2l6ZSgpID4gMCkge1xyXG4gICAgICAvLyBUT0RPOiBDaGVjayAnYXMnIGZvciBJbnRlcmZhY2UgaW4gdHlwZXNjcmlwdFxyXG4gICAgICBjb25zdCB0bXBDbWQgPSB0aGlzLmV4dHJhY3RDbWQoY3VyckZyYW1lKTtcclxuICAgICAgaWYgKHRtcENtZCBpbnN0YW5jZW9mIElDbGllbnRUYXJnZXRlZENvbW1hbmQpXHJcbiAgICAgICAgY21kID0gdG1wQ21kO1xyXG5cclxuICAgICAgaWYgKGNtZCAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGNtZC5TaG91bGRFeGVjdXRlKSB7XHJcbiAgICAgICAgICBhd2FpdCBjbWQuRXhlY3V0ZShyZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIEdsb2JhbENvbW1hbmRzTWFuYWdlci5JbnN0YW5jZS5hZGRDb21tYW5kc0V4ZWN1dGVkQWZ0ZXJUYXNrU3RhcnRlZChjbWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgbmV4dCBjb21tYW5kIHRvIGV4ZWN1dGUgb3IgbnVsbCBpZiB0aGVyZSBpcyBubyBzdWNoIGNvbW1hbmRcclxuICAvLy8gICB0aGUgYWJvcnQgY29tbWFuZHMgYXJlIHJldHVybmVkIGZpcnN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImZyYW1lXCI+dGhlIGZyYW1lIGZyb20gd2hpY2ggdG8gZXh0cmFjdCBhIGNvbW1hbmQgPC9wYXJhbT5cclxuICBwcml2YXRlIGV4dHJhY3RDbWQoZnJhbWU6IG51bWJlcik6IElDbGllbnRDb21tYW5kIHtcclxuICAgIGxldCBzaXplOiBudW1iZXIgPSB0aGlzLmdldFNpemUoKTtcclxuICAgIGxldCBjbWQ6IElDbGllbnRUYXJnZXRlZENvbW1hbmQgPSBudWxsO1xyXG4gICAgbGV0IHZlcmlmeUNtZDogSUNsaWVudFRhcmdldGVkQ29tbWFuZCA9IG51bGw7XHJcbiAgICBsZXQgdmVyaWZ5SW5kZXg6IG51bWJlcjtcclxuICAgIGxldCB2ZXJpZnlUYXNrOiBUYXNrID0gbnVsbDtcclxuICAgIGxldCBhYm9ydFRhc2s6IFRhc2sgPSBudWxsO1xyXG4gICAgbGV0IHN0YXJ0SXRlcmF0aW9uSWR4OiBudW1iZXI7XHJcbiAgICBsZXQgdGlkOiBzdHJpbmc7XHJcblxyXG4gICAgaWYgKHNpemUgPT09IDApXHJcbiAgICAgIHJldHVybiBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLl9pdGVyYXRpb25JZHggPj0gc2l6ZSlcclxuICAgICAgdGhpcy5faXRlcmF0aW9uSWR4ID0gMDtcclxuXHJcbiAgICBzdGFydEl0ZXJhdGlvbklkeCA9IHRoaXMuX2l0ZXJhdGlvbklkeDtcclxuXHJcbiAgICAvLyB0cnkgdG8gZmluZCBhbiBBQk9SVCBjb21tYW5kIGFuZCByZXR1cm4gaXRcclxuICAgIGZvciAoOyB0aGlzLl9pdGVyYXRpb25JZHggPCBzaXplOyB0aGlzLl9pdGVyYXRpb25JZHgrKykge1xyXG4gICAgICBjbWQgPSAoKHRoaXMuZ2V0Q21kKHRoaXMuX2l0ZXJhdGlvbklkeCkgaW5zdGFuY2VvZiBBYm9ydENvbW1hbmQpID8gPEFib3J0Q29tbWFuZD50aGlzLmdldENtZCh0aGlzLl9pdGVyYXRpb25JZHgpIDogbnVsbCk7XHJcbiAgICAgIGlmIChjbWQgIT0gbnVsbCAmJiAhY21kLlRhc2tUYWcuc3RhcnRzV2l0aCgnLScpICYmIGNtZC5GcmFtZSA9PT0gZnJhbWUpIHtcclxuICAgICAgICAvLyBpZiBhbiBhYm9ydCBjb21tYW5kIHdhcyBmb3VuZCwgZXhlY3V0ZSBhbGwgcHJldmlvdXMgdmVyaWZ5IGNvbW1hbmRzIG9mIHRoZSB0YXNrIG9yIGl0cycgc3ViLXRhc2tzXHJcbiAgICAgICAgZm9yICh2ZXJpZnlJbmRleCA9IDA7IHZlcmlmeUluZGV4IDwgdGhpcy5faXRlcmF0aW9uSWR4OyB2ZXJpZnlJbmRleCsrKSB7XHJcbiAgICAgICAgICB2ZXJpZnlDbWQgPSAoKHRoaXMuZ2V0Q21kKHZlcmlmeUluZGV4KSBpbnN0YW5jZW9mIFZlcmlmeUNvbW1hbmQpID8gPFZlcmlmeUNvbW1hbmQ+dGhpcy5nZXRDbWQodmVyaWZ5SW5kZXgpIDogbnVsbCk7XHJcbiAgICAgICAgICBpZiAodmVyaWZ5Q21kICE9IG51bGwgJiYgdmVyaWZ5Q21kLkZyYW1lID09PSBmcmFtZSkge1xyXG4gICAgICAgICAgICB2ZXJpZnlUYXNrID0gPFRhc2s+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldFRhc2tCeUlEKHZlcmlmeUNtZC5UYXNrVGFnKTtcclxuICAgICAgICAgICAgYWJvcnRUYXNrID0gPFRhc2s+QWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldFRhc2tCeUlEKGNtZC5UYXNrVGFnKTtcclxuXHJcbiAgICAgICAgICAgIC8vIFNvbWV0aW1lcyB0aGUgdGFzayB3aGljaCBpc3N1ZWQgdGhlIHZlcmlmeSBpcyBub3Qga25vd24gdG8gdGhlIGNsaWVudCAoZS5nLiBhIGJhdGNoIHRhc2spLlxyXG4gICAgICAgICAgICBpZiAodmVyaWZ5VGFzayAhPSBudWxsICYmIHZlcmlmeVRhc2suaXNEZXNjZW5kZW50T2YoYWJvcnRUYXNrKSkge1xyXG4gICAgICAgICAgICAgIHRoaXMuX2NtZHMuUmVtb3ZlQXQodmVyaWZ5SW5kZXgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuX2l0ZXJhdGlvbklkeC0tO1xyXG4gICAgICAgICAgICAgIHJldHVybiB2ZXJpZnlDbWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fY21kcy5SZW1vdmVBdCh0aGlzLl9pdGVyYXRpb25JZHgpO1xyXG5cclxuICAgICAgICAvLyBmb3IgYW4gYWJvcnQgQ01EIG9mIHRhc2sgXCJ0aWRcIiwgdGhlIHNlcnZlciBtaWdodCBzZW5kIGFub3RoZXIgYWJvcnQgQ01EIGZvciB0YXNrXHJcbiAgICAgICAgLy8gXCItdGlkXCIuIFdlIHNob3VsZCBjb21iaW5lIHRoZW0gYW5kIGdldCByaWQgb2YgdGhlIHNlY29uZCBDTUQuXHJcbiAgICAgICAgc2l6ZSA9IHRoaXMuZ2V0U2l6ZSgpO1xyXG4gICAgICAgIGZvciAoc3RhcnRJdGVyYXRpb25JZHggPSAwOyBzdGFydEl0ZXJhdGlvbklkeCA8IHNpemU7IHN0YXJ0SXRlcmF0aW9uSWR4KyspIHtcclxuICAgICAgICAgIHRpZCA9ICg8SUNsaWVudFRhcmdldGVkQ29tbWFuZD50aGlzLmdldENtZChzdGFydEl0ZXJhdGlvbklkeCkpLlRhc2tUYWc7XHJcbiAgICAgICAgICBpZiAodGlkICE9IG51bGwgJiYgdGlkLnN1YnN0cigxKSA9PT0gY21kLlRhc2tUYWcpIHtcclxuICAgICAgICAgICAgdGhpcy5fY21kcy5SZW1vdmVBdChzdGFydEl0ZXJhdGlvbklkeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNtZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGF0IHRoaXMgc3RhZ2Ugbm8gQUJPUlQgY29tbWFuZCB3YXMgZm91bmQgaW4gdGhlIHRhYmxlXHJcblxyXG4gICAgZm9yICh2ZXJpZnlJbmRleCA9IDA7IHZlcmlmeUluZGV4IDwgc2l6ZTsgdmVyaWZ5SW5kZXgrKykge1xyXG4gICAgICB2ZXJpZnlDbWQgPSAoKHRoaXMuZ2V0Q21kKHZlcmlmeUluZGV4KSBpbnN0YW5jZW9mIFZlcmlmeUNvbW1hbmQpID8gPFZlcmlmeUNvbW1hbmQ+dGhpcy5nZXRDbWQodmVyaWZ5SW5kZXgpIDogbnVsbCk7XHJcbiAgICAgIGlmICh2ZXJpZnlDbWQgIT0gbnVsbCAmJiB2ZXJpZnlDbWQuRnJhbWUgPT09IGZyYW1lICYmXHJcbiAgICAgICAgQWNjZXNzSGVscGVyLm1nRGF0YVRhYmxlLkdldFRhc2tCeUlEKHZlcmlmeUNtZC5UYXNrVGFnKSAhPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5fY21kcy5SZW1vdmVBdCh2ZXJpZnlJbmRleCk7XHJcbiAgICAgICAgcmV0dXJuIHZlcmlmeUNtZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIGF0IHRoaXMgc3RhZ2Ugbm8gVkVSSUZZIGNvbW1hbmQgd2FzIGZvdW5kIGluIHRoZSB0YWJsZVxyXG5cclxuICAgIGZvciAodGhpcy5faXRlcmF0aW9uSWR4ID0gMDsgdGhpcy5faXRlcmF0aW9uSWR4IDwgc2l6ZTsgdGhpcy5faXRlcmF0aW9uSWR4KyspIHtcclxuICAgICAgY21kID0gdGhpcy5nZXRDbWQodGhpcy5faXRlcmF0aW9uSWR4KSBhcyBJQ2xpZW50VGFyZ2V0ZWRDb21tYW5kO1xyXG4gICAgICBpZiAoY21kLkZyYW1lID09PSBmcmFtZSkge1xyXG4gICAgICAgIHRoaXMuX2NtZHMuUmVtb3ZlQXQodGhpcy5faXRlcmF0aW9uSWR4KTtcclxuICAgICAgICByZXR1cm4gY21kO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgY29tbWFuZCBieSBpdHMgaW5kZXggaW4gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPnRoZSBpbmRleCBvZiB0aGUgcmVxdWVzdGVkIGNvbW1hbmQ8L3BhcmFtPlxyXG4gIGdldENtZChpZHg6IG51bWJlcik6IElDbGllbnRDb21tYW5kIHtcclxuICAgIHJldHVybiB0aGlzLl9jbWRzLmdldF9JdGVtKGlkeCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYnVpbGQgdGhlIFhNTCBzdHJ1Y3R1cmUgb2YgdGhlIGNvbW1hbmRzIGFuZCBDTEVBUiB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGJ1aWxkWE1MKG1lc3NhZ2U6IFN0cmluZ0J1aWxkZXIpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLl9jbWRzLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGxldCBjbWQ6IENsaWVudE9yaWdpbmF0ZWRDb21tYW5kID0gPENsaWVudE9yaWdpbmF0ZWRDb21tYW5kPnRoaXMuX2NtZHMuZ2V0X0l0ZW0oaSk7XHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKENsaWVudE9yaWdpbmF0ZWRDb21tYW5kU2VyaWFsaXplci5TZXJpYWxpemUoY21kLCBBY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuZ2V0Q3Vyck1HRGF0YSgpKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGFkZCBhIGNvbW1hbmQgdG8gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNtZFwiPmEgY29tbWFuZCB0byB0byBhZGQgdG8gdGhlIHRhYmxlPC9wYXJhbT5cclxuICBBZGQoY21kOiBJQ2xpZW50Q29tbWFuZCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY21kcy5wdXNoKGNtZCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ2xlYXIgb3V0IHRoZSBjb21tYW5kIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBDbGVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NtZHMuQ2xlYXIoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gZXh0cmFjdCBhbmQgcmVtb3ZlIGEgY29tbWFuZCBmcm9tIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29tbWFuZEluZGV4XCI+IGluZGV4IG9mIGNvbW1hbmQgaW4gdGhlIHRhYmxlPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIEV4dHJhY3RDb21tYW5kKGNvbW1hbmRJbmRleDogbnVtYmVyKTogSUNsaWVudENvbW1hbmQge1xyXG4gICAgbGV0IGNvbW1hbmQ6IElDbGllbnRDb21tYW5kID0gdGhpcy5nZXRDbWQoY29tbWFuZEluZGV4KTtcclxuICAgIHRoaXMuX2NtZHMuUmVtb3ZlQXQoY29tbWFuZEluZGV4KTtcclxuICAgIHJldHVybiBjb21tYW5kO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGNsZWFyIGFsbCB0aGUgY29tbWFuZHMgZnJvbSB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNsZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fY21kcy5DbGVhcigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIG51bWJlciBvZiBjb21tYW5kcyBpbiB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jbWRzLmxlbmd0aDtcclxuICB9XHJcbn1cclxuIl19