@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,7 @@
1
+ export var EventsAllowedType;
2
+ (function (EventsAllowedType) {
3
+ EventsAllowedType[EventsAllowedType["NONE"] = 0] = "NONE";
4
+ EventsAllowedType[EventsAllowedType["NON_INTERACTIVE"] = 1] = "NON_INTERACTIVE";
5
+ EventsAllowedType[EventsAllowedType["ALL"] = 2] = "ALL";
6
+ })(EventsAllowedType || (EventsAllowedType = {}));
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUV2ZW50c01hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL2V2ZW50L0lFdmVudHNNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCQSxNQUFNLENBQU4sSUFBWSxpQkFJWDtBQUpELFdBQVksaUJBQWlCO0lBQzNCLHlEQUFJLENBQUE7SUFDSiwrRUFBZSxDQUFBO0lBQ2YsdURBQUcsQ0FBQTtBQUNMLENBQUMsRUFKVyxpQkFBaUIsS0FBakIsaUJBQWlCLFFBSTVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcHBsaWNhdGlvbkV4Y2VwdGlvbiwgUmVmUGFyYW19IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0d1aVRhc2tCYXNlLCBJR3VpRXZlbnRzTWFuYWdlciwgSVRhc2ssIEtleWJvYXJkSXRlbSwgTWdDb250cm9sQmFzZX0gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcbmltcG9ydCB7UnVuVGltZUV2ZW50fSBmcm9tIFwiLi9SdW5UaW1lRXZlbnRcIjtcclxuaW1wb3J0IHtFeGVjdXRpb25TdGFja0VudHJ5fSBmcm9tIFwiLi4vcnQvRXhlY3V0aW9uU3RhY2tFbnRyeVwiO1xyXG5pbXBvcnQge0V4ZWN1dGlvblN0YWNrfSBmcm9tIFwiLi4vcnQvRXhlY3V0aW9uU3RhY2tcIjtcclxuaW1wb3J0IHtDb21wTWFpblByZ1RhYmxlfSBmcm9tIFwiLi4vcnQvQ29tcE1haW5QcmdUYWJsZVwiO1xyXG5pbXBvcnQge0ZpZWxkfSBmcm9tIFwiLi4vZGF0YS9GaWVsZFwiO1xyXG5pbXBvcnQge1Rhc2t9IGZyb20gXCIuLi90YXNrcy9UYXNrXCI7XHJcbmltcG9ydCB7TWdDb250cm9sfSBmcm9tIFwiLi4vZ3VpL01nQ29udHJvbFwiO1xyXG5pbXBvcnQge0V2ZW50U3ViVHlwZX0gZnJvbSBcIi4uL2VudW1zXCI7XHJcbmltcG9ydCB7SGFuZGxlcnNUYWJsZX0gZnJvbSBcIi4uL3J0L0hhbmRsZXJzVGFibGVcIjtcclxuaW1wb3J0IHtNR0RhdGF9IGZyb20gXCIuLi90YXNrcy9NR0RhdGFcIjtcclxuaW1wb3J0IHtUYXNrQmFzZX0gZnJvbSBcIi4uL3Rhc2tzL1Rhc2tCYXNlXCI7XHJcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcy9pbnRlcm5hbC9TdWJqZWN0JztcclxuaW1wb3J0IHsgQ2xlYXJFdmVudHNPblN0b3BFeGVjdXRpb24gfSBmcm9tICcuLi9BY2Nlc3NIZWxwZXInO1xyXG5cclxuZXhwb3J0IGVudW0gRXZlbnRzQWxsb3dlZFR5cGUge1xyXG4gIE5PTkUsXHJcbiAgTk9OX0lOVEVSQUNUSVZFLFxyXG4gIEFMTFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElFdmVudHNNYW5hZ2VyIGV4dGVuZHMgSUd1aUV2ZW50c01hbmFnZXIge1xyXG5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwia2JJdG1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGxhc3QgZW5hYmxlZCBhY3Rpb24gZm9yIHRoZSBzcGVjaWZpYyBrZXkgKGluIGtiSXRlbSk8L3JldHVybnM+XHJcbiAgLy8vIDxjaGVja0FjY2Vzc0tleUluTWVudXM6PiAgaWYgdG8gY2hlY2sgdGhlIGtleWJvYXJkIGluIHRoZSBtZW51IDwvY2hlY2tBY2Nlc3NLZXlJbk1lbnVzOj5cclxuICBnZXRNYXRjaGluZ0FjdGlvbiggIGtiSXRtOiBLZXlib2FyZEl0ZW0pOiBudW1iZXI7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgXCJpZ25vcmUgdW5rbm93biBhYm9ydFwiIGZsYWdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGlnbm9yZVVua25vd25BYm9ydCgpOiBib29sZWFuO1xyXG5cclxuICBnZXRMYXN0UnRFdmVudCgpOiBSdW5UaW1lRXZlbnQ7XHJcblxyXG4gIGdldE5leHRPcGVySWR4KG9wZXI6IGFueSwgY2xlYXJXaGVuRm91bmQ6IGJvb2xlYW4pOiBudW1iZXI7XHJcblxyXG4gIHB1c2hFeGVjU3RhY2sodGFza0lkOiBzdHJpbmcsIGhhbmRsZXJJZDogc3RyaW5nLCBvcGVySWR4OiBudW1iZXIpOiB2b2lkO1xyXG5cclxuICBwZXJmb3JtU3ViZm9ybUNsb3NlIChzdWJmb3JtQ3RybDogTWdDb250cm9sKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgaGFuZGxlRXZlbnQocnRFdnQ6IGFueSwgcmV0dXJuZWRGcm9tU2VydmVyOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgcG9wRXhlY1N0YWNrKCk6IEV4ZWN1dGlvblN0YWNrRW50cnk7XHJcblxyXG4gIGFkZFRvVGFpbChydEV2dDogUnVuVGltZUV2ZW50KTogdm9pZDtcclxuXHJcbiAgZ2V0RXhlY1N0YWNrKCk6IEV4ZWN1dGlvblN0YWNrO1xyXG5cclxuICBnZXRDb21wTWFpblByZ1RhYigpOiBDb21wTWFpblByZ1RhYmxlO1xyXG5cclxuICBoYW5kbGVJbnRlcm5hbEV2ZW50V2l0aFRhc2soaXRhc2s6IElUYXNrLCBldmVudENvZGU6IG51bWJlcik6IFByb21pc2U8dm9pZD47XHJcblxyXG4gIGdldEN1cnJGaWVsZCgpOiBGaWVsZDtcclxuXHJcbiAgZ2V0Q3VyclRhc2soKTogVGFzaztcclxuXHJcbiAgcHVzaE5ld0V4ZWNTdGFja3MoKTogdm9pZDtcclxuXHJcbiAgcG9wTmV3RXhlY1N0YWNrcygpOiB2b2lkO1xyXG5cclxuICBHZXRTdG9wRXhlY3V0aW9uRmxhZygpOiBib29sZWFuO1xyXG5cclxuICBnZXRDdXJyQ3RybCgpOiBNZ0NvbnRyb2w7XHJcblxyXG4gIHNldFN0b3BFeGVjdXRpb24oc3RvcDogYm9vbGVhbik6IHZvaWQ7XHJcblxyXG4gIHNldFN0b3BFeGVjdXRpb24oc3RvcDogYm9vbGVhbiwgY2xlYXJFdmVudHNPblN0b3BFeGVjdXRpb246IENsZWFyRXZlbnRzT25TdG9wRXhlY3V0aW9uKTogdm9pZDtcclxuXHJcbiAgaGFuZGxlSW50ZXJuYWxFdmVudFdpdGhUYXNrQW5kU3ViZm9ybVJlZnJlc2goaXRhc2s6IElUYXNrLCBldmVudENvZGU6IG51bWJlciwgc3ViZm9ybVJlZnJlc2g6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+O1xyXG5cclxuICByZXZlcnNlU2VydmVyRXhlY1N0YWNrKCk6IHZvaWQ7XHJcblxyXG4gIHB1c2hTZXJ2ZXJFeGVjU3RhY2sodGFza0lkOiBzdHJpbmcsIGhhbmRsZXJJZDogc3RyaW5nLCBvcGVySWR4OiBudW1iZXIpOiB2b2lkO1xyXG5cclxuICBpc0ZvcmNlRXhpdFByZVJlY29yZFVwZGF0ZSh0YXNrOiBHdWlUYXNrQmFzZSk6IGJvb2xlYW47XHJcblxyXG4gIGhhbmRsZUludGVybmFsRXZlbnRXaXRoVGFza0FuZEV2ZW50U3VidHlwZSh0YXNrOiBHdWlUYXNrQmFzZSwgZXZlbnRDb2RlOiBudW1iZXIsIGV2ZW50U3ViVHlwZTogRXZlbnRTdWJUeXBlKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgaGFuZGxlSW50ZXJuYWxFdmVudFdpdGhNZ0NvbnRyb2xCYXNlKGN0cmw6IE1nQ29udHJvbEJhc2UsIGV2ZW50Q29kZTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgRG9UYXNrTGV2ZWxSZWNvcmRTdWZmaXgodGFzazogVGFza0Jhc2UsIHJlZkRvU3VmZml4OiBSZWZQYXJhbTxib29sZWFuPik6IFByb21pc2U8Ym9vbGVhbj4gO1xyXG5cclxuICBIYW5kbGVOb25QYXJrYWJsZUNvbnRyb2xzKGl0YXNrOiBJVGFzayk6IFByb21pc2U8dm9pZD47XHJcblxyXG4gIEhhbmRsZVBhcmthYmlsaXR5T25Sb3dDaGFuZ2UoaXRhc2s6IElUYXNrKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgRG9UYXNrTGV2ZWxSZWNvcmRQcmVmaXgodGFzazogR3VpVGFza0Jhc2UgKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgZ2V0UHJvY2Vzc2luZ1RvcE1vc3RFbmRUYXNrKCk6IGJvb2xlYW47XHJcblxyXG4gIGhhbmRsZU5vblJldmVyc2libGVFdmVudCh0YXNrOiBHdWlUYXNrQmFzZSwgZXZlbnRDb2RlOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+O1xyXG5cclxuICBoYW5kbGVFdmVudHMoYmFzZU1nRGF0YTogTUdEYXRhLCBldmVudHNUb0hhbmRsZUNudDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgaGFuZGxlRXZlbnRzKGhhbmRsZXJzVGFiOiBIYW5kbGVyc1RhYmxlLCBydEV2dDogUnVuVGltZUV2ZW50KTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgaGFuZGxlRXZlbnRzKGJhc2VNZ0RhdGFPckhhbmRsZXJzVGFiOiBhbnksIGV2ZW50c1RvSGFuZGxlQ250T3JSdEV2dDogYW55KTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgc2V0RXZlbnRTY29wZVRyYW5zKCk6IHZvaWQ7XHJcblxyXG4gIGlzRXZlbnRTY29wZVRyYW5zKCk6IGJvb2xlYW47XHJcblxyXG4gIGNsZWFyRXZlbnRTY29wZSgpOiB2b2lkO1xyXG5cclxuICBhZGRJbnRlcm5hbEV2ZW50V2l0aEl0YXNrQW5kQ29kZShpdGFzazogSVRhc2ssIGNvZGU6IG51bWJlcik6IHZvaWQ7XHJcblxyXG4gIHNldFByb2Nlc3NpbmdUb3BNb3N0RW5kVGFzayhpblByb2Nlc3NpbmdUb3BNb3N0RW5kVGFzazogYm9vbGVhbik6IHZvaWQ7XHJcblxyXG4gIE5vbkludGVyYWN0aXZlRXZlbnRzTG9vcChtZ0RhdGE6IE1HRGF0YSwgdGFza0Jhc2U6IEd1aVRhc2tCYXNlKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgRXZlbnRzTG9vcChtZ0RhdGE6IE1HRGF0YSk6IFByb21pc2U8dm9pZD47XHJcblxyXG4gIHNldElnbm9yZVVua25vd25BYm9ydCh2YWw6IGJvb2xlYW4pOiB2b2lkO1xyXG5cclxuICBzZXRDb21wTWFpblByZ1RhYihjb21wTWFpblByZ1RhYmxlOiBDb21wTWFpblByZ1RhYmxlKTogdm9pZDtcclxuXHJcbiAgUHJvY2Vzc0Fib3J0aW5nRXJyb3IoZXg6IEFwcGxpY2F0aW9uRXhjZXB0aW9uKTogUHJvbWlzZTx2b2lkPjtcclxuXHJcbiAgZ2V0QWxsb3dFdmVudHMoKTogRXZlbnRzQWxsb3dlZFR5cGU7XHJcblxyXG4gIHNldEFsbG93RXZlbnRzKEFsbG93RXZlbnRzOiBFdmVudHNBbGxvd2VkVHlwZSk6IHZvaWQ7XHJcblxyXG4gIHNldE5vbkludGVyYWN0aXZlQWxsb3dFdmVudHMoQWxsb3dFdmVudHM6IGJvb2xlYW4pOiB2b2lkO1xyXG5cclxuICBnZXRQZW5kaW5nR3VpRXZlbnQoKTogYW55O1xyXG4gIHNldFBlbmRpbmdHdWlFdmVudChndWlFdmVudDogYW55ICk6IHZvaWQ7XHJcbiAgY2hlY2tBbmRTYXZlUm91dGVFdmVudElmQ3R4UmVtb3ZlZEZyb21TcnZyIChydEV2ZW50OiBhbnkpOiB2b2lkO1xyXG4gIENoZWNrQW5kU2hvd1NwaW5uZXIoc2hvdzogYm9vbGVhbik6IFByb21pc2U8dm9pZD47XHJcblxyXG4gIFNwaW5uZXJTdG9wcGVkIDogU3ViamVjdDxudW1iZXI+O1xyXG5cclxuICBnZXRJc0luVmlld1JlZnJlc2goKTogYm9vbGVhbjtcclxuICBzZXRJc0luVmlld1JlZnJlc2goaW5WaWV3UmVmcmVzaDogYm9vbGVhbik6IHZvaWQ7XHJcbn1cclxuIl19
@@ -0,0 +1,392 @@
1
+ import { Char, Int32, List, NString } from "@magic-xpa/mscorelib";
2
+ import { ForceExit, InternalInterface, Priority, XMLConstants, XmlParser } from "@magic-xpa/utils";
3
+ import { GuiFieldBase, MgControlBase, Modifiers, PropInterface, } from "@magic-xpa/gui";
4
+ import { EventSubType } from "../enums";
5
+ import { Event } from "./Event";
6
+ import { ConstInterface } from "../ConstInterface";
7
+ import { ArgumentsList } from "../rt/ArgumentsList";
8
+ import { TaskBase } from "../tasks/TaskBase";
9
+ import { RunTimeEventBase } from "./RunTimeEventBase";
10
+ import { AccessHelper } from "../AccessHelper";
11
+ export class RunTimeEvent extends RunTimeEventBase {
12
+ set Control(value) {
13
+ this._ctrl = value;
14
+ }
15
+ set DisplayLine(value) {
16
+ this._displayLine = value;
17
+ }
18
+ get Control() {
19
+ return this._ctrl;
20
+ }
21
+ get ControlsList() {
22
+ return this._controlsList;
23
+ }
24
+ get Direction() {
25
+ return this._direction;
26
+ }
27
+ constructor(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame, yOrCtlIdx, width, height) {
28
+ super();
29
+ this._controlsList = null;
30
+ this._direction = 0;
31
+ this._displayLine = Int32.MinValue;
32
+ this._eventSubType = EventSubType.Normal;
33
+ this._actEnableList = null;
34
+ this._argList = null;
35
+ this._ctrl = null;
36
+ this._dotNetObject = null;
37
+ this._eventFld = null;
38
+ this._fromServer = false;
39
+ this._guiTriggeredEvent = false;
40
+ this._immediate = false;
41
+ this._isIdleTimer = false;
42
+ this._isRealRefresh = true;
43
+ this._mgdId = 0;
44
+ this._routeParams = null;
45
+ this._mprgCreator = null;
46
+ this._priority = Priority.HIGH;
47
+ this._produceClick = false;
48
+ this._reversibleExit = true;
49
+ this._selectionEnd = 0;
50
+ this._selectionStart = 0;
51
+ this._sendAll = false;
52
+ this._task = null;
53
+ this._taskTag = null;
54
+ this._val = null;
55
+ this.IgnoreSpecifiedControl = false;
56
+ this.LastFocusedVal = null;
57
+ if (arguments.length === 1 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof TaskBase))
58
+ this.constructor_5(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
59
+ else if (arguments.length === 2 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof TaskBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask instanceof MgControlBase))
60
+ this.constructor_6(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
61
+ else if (arguments.length === 1 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase))
62
+ this.constructor_7(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
63
+ else if (arguments.length === 2 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Boolean))
64
+ this.constructor_8(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
65
+ else if (arguments.length === 3 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Boolean) && (ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame === null || ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame.constructor === Boolean))
66
+ this.constructor_9(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame);
67
+ else if (arguments.length === 2 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof TaskBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Boolean))
68
+ this.constructor_10(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
69
+ else if (arguments.length === 1 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof GuiFieldBase))
70
+ this.constructor_11(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
71
+ else if (arguments.length === 2 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Number))
72
+ this.constructor_12(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
73
+ else if (arguments.length === 3 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Number) && (ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame === null || ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame.constructor === Boolean))
74
+ this.constructor_13(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame);
75
+ else if (arguments.length === 3 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask instanceof List) && (ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame === null || ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame.constructor === Boolean))
76
+ this.constructor_14(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask, ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame);
77
+ else if (arguments.length === 3 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof MgControlBase) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask.constructor === Number) && (ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame === null || ignoreSpecifiedControlOrGuiTriggeredEventOrLineOrXOrControlOrActivatedFromMDIFrame.constructor === Number))
78
+ this.constructor_15(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt, ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
79
+ else if (arguments.length === 6)
80
+ this.constructor_16(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
81
+ else if (arguments.length === 2 && (taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt === null || taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof Event) && (ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask === null || ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask instanceof RunTimeEvent)) {
82
+ super.constructor_1(taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
83
+ this.constructor_17(ctrlRefOrGuiTriggeredEventOrLineOrControlsListOrDirectionOrColumnHeaderOrRtEvtOrCurrentTask);
84
+ }
85
+ else if (arguments.length === 1 && taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt instanceof RunTimeEvent)
86
+ Object.assign(this, taskRefOrCtrlRefOrTaskrefOrFldRefOrEvt);
87
+ }
88
+ constructor_5(taskRef) {
89
+ this.init(taskRef);
90
+ }
91
+ constructor_6(taskRef, ctrlRef) {
92
+ this.constructor_5((ctrlRef !== null) ? ctrlRef.getForm().getTask() : taskRef);
93
+ this.Control = ctrlRef;
94
+ }
95
+ constructor_7(ctrlRef) {
96
+ this.constructor_6(null, ctrlRef);
97
+ if (ctrlRef !== null && super.getType() === Char.MinValue) {
98
+ let prop = ctrlRef.GetComputedProperty(PropInterface.PROP_TYPE_TRIGGER);
99
+ if (prop !== null) {
100
+ let xmlParser = new XmlParser(prop.GetComputedValue());
101
+ super.fillData(xmlParser, ctrlRef.getForm().getTask());
102
+ }
103
+ }
104
+ }
105
+ constructor_8(ctrlRef, guiTriggeredEvent) {
106
+ this.constructor_7(ctrlRef);
107
+ this._guiTriggeredEvent = guiTriggeredEvent;
108
+ if (guiTriggeredEvent) {
109
+ this._priority = Priority.LOW;
110
+ }
111
+ }
112
+ constructor_9(ctrlRef, guiTriggeredEvent, ignoreSpecifiedControl) {
113
+ this.constructor_8(ctrlRef, guiTriggeredEvent);
114
+ this.IgnoreSpecifiedControl = ignoreSpecifiedControl;
115
+ }
116
+ constructor_10(taskref, guiTriggeredEvent) {
117
+ this.constructor_5(taskref);
118
+ this._guiTriggeredEvent = guiTriggeredEvent;
119
+ if (guiTriggeredEvent) {
120
+ this._priority = Priority.LOW;
121
+ }
122
+ }
123
+ constructor_11(fldRef) {
124
+ this._eventFld = fldRef;
125
+ this.init((fldRef !== null) ? fldRef.getTask() : null);
126
+ }
127
+ constructor_12(ctrlRef, line) {
128
+ this.constructor_7(ctrlRef);
129
+ this._displayLine = line;
130
+ }
131
+ constructor_13(ctrlRef, line, guiTriggeredEvent) {
132
+ this.constructor_8(ctrlRef, guiTriggeredEvent);
133
+ this._displayLine = line;
134
+ }
135
+ constructor_14(ctrlRef, controlsList, guiTriggeredEvent) {
136
+ this.constructor_8(ctrlRef, guiTriggeredEvent);
137
+ this._controlsList = controlsList;
138
+ }
139
+ constructor_15(ctrlRef, direction) {
140
+ this.constructor_8(ctrlRef, true);
141
+ this._direction = direction;
142
+ }
143
+ constructor_16(ctrlRef) {
144
+ this.constructor_8(ctrlRef, true);
145
+ }
146
+ constructor_17(rtEvt) {
147
+ this._taskTag = rtEvt._taskTag;
148
+ this._task = rtEvt._task;
149
+ this.Control = rtEvt.Control;
150
+ this._eventFld = rtEvt._eventFld;
151
+ this._mgdId = rtEvt._mgdId;
152
+ this._displayLine = rtEvt._displayLine;
153
+ this._reversibleExit = rtEvt._reversibleExit;
154
+ this._argList = rtEvt._argList;
155
+ this._immediate = rtEvt._immediate;
156
+ this._mprgCreator = rtEvt._mprgCreator;
157
+ this._priority = rtEvt._priority;
158
+ this._guiTriggeredEvent = rtEvt._guiTriggeredEvent;
159
+ this._isIdleTimer = rtEvt._isIdleTimer;
160
+ this._val = rtEvt._val;
161
+ this._selectionStart = rtEvt._selectionStart;
162
+ this._selectionEnd = rtEvt._selectionEnd;
163
+ this._controlsList = rtEvt._controlsList;
164
+ this._direction = rtEvt._direction;
165
+ this._dotNetObject = rtEvt._dotNetObject;
166
+ this.LastFocusedVal = rtEvt.LastFocusedVal;
167
+ this._routeParams = rtEvt._routeParams;
168
+ }
169
+ CompareTo(obj) {
170
+ let otherTimeEvent = obj;
171
+ let otherPriority = otherTimeEvent._priority;
172
+ let result = otherPriority - this._priority;
173
+ if (result === 0)
174
+ result = (this._timestamp - otherTimeEvent._timestamp);
175
+ return result;
176
+ }
177
+ replicate() {
178
+ let runTimeEvent = new RunTimeEvent(this);
179
+ runTimeEvent.setTimestamp();
180
+ return runTimeEvent;
181
+ }
182
+ init(taskRef) {
183
+ this._task = (taskRef || AccessHelper.mgDataTable.getCurrMGData().getFirstTask());
184
+ this._taskTag = ((this._task === null) ? "" : this._task.getTaskTag());
185
+ this._mprgCreator = null;
186
+ }
187
+ convertParamsToArgs() {
188
+ this._argList = new ArgumentsList();
189
+ this._argList.buildListFromParams(this._parameters, this._paramAttrs, this._paramVals, this._paramNulls);
190
+ this._parameters = 0;
191
+ this._paramAttrs = null;
192
+ this._paramVals = null;
193
+ this._paramNulls = null;
194
+ }
195
+ getTask() {
196
+ super.findUserEvent();
197
+ return this._task;
198
+ }
199
+ setTask(taskRef) {
200
+ this._task = taskRef;
201
+ if (this._task !== null)
202
+ this._taskTag = this._task.getTaskTag();
203
+ else
204
+ this._taskTag = null;
205
+ }
206
+ setTimer(sec, mgdID, isIdle) {
207
+ this._type = ConstInterface.EVENT_TYPE_TIMER;
208
+ this._seconds = sec;
209
+ this._mgdId = mgdID;
210
+ this._isIdleTimer = isIdle;
211
+ }
212
+ getDisplayLine() {
213
+ return this._displayLine;
214
+ }
215
+ getMgdID() {
216
+ return this._mgdId;
217
+ }
218
+ getBrkLevel(flowMonitor) {
219
+ if (arguments.length === 0) {
220
+ return this.getBrkLevel_00();
221
+ }
222
+ return this.getBrkLevel_01(flowMonitor);
223
+ }
224
+ getBrkLevel_00() {
225
+ let level = super.getBrkLevel();
226
+ if (this._type === ConstInterface.EVENT_TYPE_INTERNAL) {
227
+ switch (this.InternalEvent) {
228
+ case InternalInterface.MG_ACT_CTRL_PREFIX:
229
+ case InternalInterface.MG_ACT_CTRL_SUFFIX:
230
+ case InternalInterface.MG_ACT_CTRL_VERIFICATION:
231
+ level += this.Control.Name;
232
+ break;
233
+ case InternalInterface.MG_ACT_VARIABLE:
234
+ level += this._eventFld.getVarName();
235
+ break;
236
+ }
237
+ }
238
+ return level;
239
+ }
240
+ getBrkLevel_01(flowMonitor) {
241
+ return super.getBrkLevel(flowMonitor);
242
+ }
243
+ setCtrl(newCtrl) {
244
+ this._ctrl = newCtrl;
245
+ }
246
+ setNonReversibleExit() {
247
+ this._reversibleExit = false;
248
+ }
249
+ reversibleExit() {
250
+ return this._reversibleExit;
251
+ }
252
+ buildXML(message) {
253
+ message.Append("\n " + XMLConstants.TAG_OPEN + ConstInterface.MG_TAG_EVENT);
254
+ if (this._type !== Char.MinValue)
255
+ message.Append(" " + ConstInterface.MG_ATTR_EVENTTYPE + "=\"" + this._type + "\"");
256
+ if (this._type === ConstInterface.EVENT_TYPE_SYSTEM && this.kbdItm != null) {
257
+ let modifier = this.kbdItm.getModifier();
258
+ if (modifier !== Modifiers.MODIFIER_NONE)
259
+ message.Append(" " + ConstInterface.MG_ATTR_MODIFIER + "=\"" + modifier + "\"");
260
+ message.Append(" " + ConstInterface.MG_ATTR_KEYCODE + "=\"" + this.kbdItm.getKeyCode() + "\"");
261
+ }
262
+ if (this.InternalEvent !== Int32.MinValue)
263
+ message.Append(" " + ConstInterface.MG_ATTR_INTERNALEVENT + "=\"" + this.InternalEvent + "\"");
264
+ if (this._seconds !== Int32.MinValue)
265
+ message.Append(" " + ConstInterface.MG_ATTR_SECONDS + "=\"" + this._seconds + "\"");
266
+ if (this.Exp != null)
267
+ message.Append(" " + XMLConstants.MG_ATTR_EXP + "=\"" + this.Exp.getId() + "\"");
268
+ if (this._forceExit !== ForceExit.None)
269
+ message.Append(" " + XMLConstants.MG_ATTR_EXP + "=\"" + this._forceExit + "\"");
270
+ if (this.UserEvt != null)
271
+ message.Append(" " + ConstInterface.MG_ATTR_USER + "=\"" + this.UserEvtTaskTag + "," + this._userEvtIdx + "\"");
272
+ message.Append(XMLConstants.TAG_TERM);
273
+ }
274
+ getArgList() {
275
+ return this._argList;
276
+ }
277
+ setArgList(aArgList) {
278
+ let result = this._argList === null;
279
+ this._argList = aArgList;
280
+ return result;
281
+ }
282
+ setRouteParamList(routeParams) {
283
+ this._routeParams = routeParams;
284
+ }
285
+ getRouteParamList() {
286
+ return this._routeParams;
287
+ }
288
+ setImmediate(val) {
289
+ this._immediate = val;
290
+ }
291
+ isImmediate() {
292
+ return this._immediate;
293
+ }
294
+ setMainPrgCreator(src) {
295
+ this._mprgCreator = src;
296
+ }
297
+ getMainPrgCreator() {
298
+ return this._mprgCreator;
299
+ }
300
+ setIsRealRefresh(val) {
301
+ this._isRealRefresh = val;
302
+ }
303
+ getRefreshType() {
304
+ return this._isRealRefresh;
305
+ }
306
+ setFromServer() {
307
+ this._fromServer = true;
308
+ }
309
+ resetFromServer() {
310
+ this._fromServer = false;
311
+ }
312
+ isFromServer() {
313
+ return this._fromServer;
314
+ }
315
+ isQuit() {
316
+ return this._eventSubType === EventSubType.CancelIsQuit;
317
+ }
318
+ RollbackInCancel() {
319
+ return this._eventSubType !== EventSubType.CancelWithNoRollback;
320
+ }
321
+ ExitDueToError() {
322
+ return this._eventSubType === EventSubType.ExitDueToError;
323
+ }
324
+ RtViewRefreshUseCurrentRow() {
325
+ return this._eventSubType === EventSubType.RtRefreshViewUseCurrentRow;
326
+ }
327
+ SetEventSubType(eventSubType) {
328
+ this._eventSubType = eventSubType;
329
+ }
330
+ getFld() {
331
+ return this._eventFld;
332
+ }
333
+ isGuiTriggeredEvent() {
334
+ return this._guiTriggeredEvent;
335
+ }
336
+ getPriority() {
337
+ return this._priority;
338
+ }
339
+ setPriority(priority) {
340
+ this._priority = priority;
341
+ }
342
+ isIdleTimer() {
343
+ return this._isIdleTimer;
344
+ }
345
+ getValue() {
346
+ return this._val;
347
+ }
348
+ setValue(val) {
349
+ this._val = val;
350
+ }
351
+ getStartSelection() {
352
+ return this._selectionStart;
353
+ }
354
+ getEndSelection() {
355
+ return this._selectionEnd;
356
+ }
357
+ setEditParms(start, end, text) {
358
+ this._selectionStart = start;
359
+ this._selectionEnd = end;
360
+ this.setValue(text);
361
+ }
362
+ isProduceClick() {
363
+ return this._produceClick;
364
+ }
365
+ setProduceClick(produceClick) {
366
+ this._produceClick = produceClick;
367
+ }
368
+ getActEnableList() {
369
+ return this._actEnableList;
370
+ }
371
+ isSendAll() {
372
+ return this._sendAll;
373
+ }
374
+ setSendAll(sendAll) {
375
+ this._sendAll = sendAll;
376
+ }
377
+ isBlockedByModalWindow(activeWindowData) {
378
+ if (activeWindowData.IsModal) {
379
+ let eventTask = this.getTask();
380
+ let baseTask = activeWindowData.getTask(0);
381
+ if (eventTask !== baseTask && baseTask.isDescendentOf(eventTask))
382
+ return true;
383
+ }
384
+ return false;
385
+ }
386
+ toString() {
387
+ return NString.Format("{{RTEvent {0} ({1}), type {2}{3}}}", [
388
+ this.getBrkLevel(), this.InternalEvent, this._type, (this._task === null) ? "" : (" on " + this._task)
389
+ ]);
390
+ }
391
+ }
392
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVuVGltZUV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9ldmVudC9SdW5UaW1lRXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLElBQUksRUFBZSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RixPQUFPLEVBQUMsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDakcsT0FBTyxFQUFDLFlBQVksRUFBa0IsYUFBYSxFQUFFLFNBQVMsRUFBWSxhQUFhLEdBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDM0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBSzdDLE1BQU0sT0FBTyxZQUFhLFNBQVEsZ0JBQWdCO0lBMkNoRCxJQUFJLE9BQU8sQ0FBQyxLQUFvQjtRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsS0FBYTtRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FB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WyJpbXBvcnQge0NoYXIsIElDb21wYXJhYmxlLCBJbnQzMiwgTGlzdCwgTlN0cmluZywgU3RyaW5nQnVpbGRlcn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7Rm9yY2VFeGl0LCBJbnRlcm5hbEludGVyZmFjZSwgUHJpb3JpdHksIFhNTENvbnN0YW50cywgWG1sUGFyc2VyfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0d1aUZpZWxkQmFzZSwgTGFzdEZvY3VzZWRWYWwsIE1nQ29udHJvbEJhc2UsIE1vZGlmaWVycywgUHJvcGVydHksIFByb3BJbnRlcmZhY2UsfSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHtFdmVudFN1YlR5cGV9IGZyb20gXCIuLi9lbnVtc1wiO1xyXG5pbXBvcnQge0V2ZW50fSBmcm9tIFwiLi9FdmVudFwiO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tIFwiLi4vQ29uc3RJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtBcmd1bWVudHNMaXN0fSBmcm9tIFwiLi4vcnQvQXJndW1lbnRzTGlzdFwiO1xyXG5pbXBvcnQge01HRGF0YX0gZnJvbSBcIi4uL3Rhc2tzL01HRGF0YVwiO1xyXG5pbXBvcnQge1Rhc2tCYXNlfSBmcm9tIFwiLi4vdGFza3MvVGFza0Jhc2VcIjtcclxuaW1wb3J0IHtSdW5UaW1lRXZlbnRCYXNlfSBmcm9tIFwiLi9SdW5UaW1lRXZlbnRCYXNlXCI7XHJcbmltcG9ydCB7QWNjZXNzSGVscGVyfSBmcm9tIFwiLi4vQWNjZXNzSGVscGVyXCI7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyAgIHRoaXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgcnVudGltZSBldmVudHNcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFJ1blRpbWVFdmVudCBleHRlbmRzIFJ1blRpbWVFdmVudEJhc2UgaW1wbGVtZW50cyBJQ29tcGFyYWJsZSB7XHJcblxyXG4gIC8vIEFUVEVOVElPTiAhXHJcbiAgLy8gYW55IGNoYW5nZSB0byB0aGUgbWVtYmVyIHZhcmlhYmxlcyBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgY2hhbmdlIHRvIHRoZSBDVE9SIHRoYXRcclxuICAvLyBnZXRzIG9uZSBhcmd1bWVudCBvZiB0aGUgdHlwZSAnRXZlbnQnIGFuZCBvbmUgYXJndW1lbnQgb2YgdGhlIHR5cGUgJ1J1blRpbWVFdmVudCcuXHJcblxyXG4gIHByaXZhdGUgX2NvbnRyb2xzTGlzdDogTGlzdDxNZ0NvbnRyb2xCYXNlPiA9IG51bGw7IC8vIGxpc3Qgb2YgY29udHJvbHNcclxuICBwcml2YXRlIF9kaXJlY3Rpb246IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfZGlzcGxheUxpbmU6IG51bWJlciA9IEludDMyLk1pblZhbHVlO1xyXG5cclxuICBwcml2YXRlIF9ldmVudFN1YlR5cGU6IEV2ZW50U3ViVHlwZSA9IEV2ZW50U3ViVHlwZS5Ob3JtYWw7XHJcblxyXG4gIHByaXZhdGUgX2FjdEVuYWJsZUxpc3Q6IG51bWJlcltdID0gbnVsbDtcclxuICBwcml2YXRlIF9hcmdMaXN0OiBBcmd1bWVudHNMaXN0ID0gbnVsbDtcclxuICBwcml2YXRlIF9jdHJsOiBNZ0NvbnRyb2xCYXNlID0gbnVsbDsgLy8gdGhlIGNvbnRyb2wgb24gd2hpY2ggdGhlIGV2ZW50IHdhcyB0cmlnZ2VyZWRcclxuICBwcml2YXRlIF9kb3ROZXRPYmplY3Q6IGFueSA9IG51bGw7IC8vIG9iamVjdCBrZXkgb2YgYSBjb250cm9sXHJcbiAgcHJpdmF0ZSBfZXZlbnRGbGQ6IEd1aUZpZWxkQmFzZSA9IG51bGw7IC8vIEZvciB2YXJpYWJsZSBldmVudHMgLSB0aGUgZmllbGQgb24gd2hpY2ggdGhlIGNvbnRyb2wgd2FzIHRyaWdnZXJlZFxyXG4gIHByaXZhdGUgX2Zyb21TZXJ2ZXI6IGJvb2xlYW4gPSBmYWxzZTsgIC8vIGlmIFRSVUUsIHRoZSBldmVudCB3YXMgY3JlYXRlZCBvbiB0aGUgc2VydmVyIGFuZCBzZW50IHRvIHRoZSBjbGllbnRcclxuICBwcml2YXRlIF9ndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbiA9IGZhbHNlOyAvLyBpZiB0cnVlLCB0aGUgZXZlbnQgd2FzIHRyaWdnZXJlZCBieSBHVUkgbGV2ZWwgKGluY2x1ZGVzIHRpbWVyIGV2ZW50cylcclxuICBwcml2YXRlIF9pbW1lZGlhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9pc0lkbGVUaW1lcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2lzUmVhbFJlZnJlc2g6IGJvb2xlYW4gPSB0cnVlOyAvLyB1c2VkIG9ubHkgaW4gTUdfQUNUX1ZJRVdfUkVGUkVTSCBldmVudHMgdG8gaW5kaWNhdGUgYSByZWZyZXNoIGludm9rZWQgU3BlY2lmaWNhbGx5IGJ5IHRoZSB1c2VyXHJcbiAgcHJpdmF0ZSBfbWdkSWQ6IG51bWJlciA9IDA7IC8vIG1nZGF0YSBpZCB0aGF0IHNlbnQgdGltZXIgZXZlbnRcclxuICBwcml2YXRlIF9yb3V0ZVBhcmFtczogTGlzdDxhbnk+ID0gbnVsbDtcclxuXHJcbiAgLy8gVXNlZCBvbmx5IGlmICd0YXNrJyBpcyBhIG1haW4gcHJnLiBBIHJlZmVyZW5jZSB0byB0aGUgdGFzayB3aGljaFxyXG4gIC8vIGNhdXNlZCB0aGUgbWFpbiBwcmcgdG8gYmVjb21lIGFjdGl2ZSBpbiB0aGUgcnVudGltZS5cclxuICBwcml2YXRlIF9tcHJnQ3JlYXRvcjogVGFza0Jhc2UgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIF9wcmlvcml0eTogUHJpb3JpdHkgPSBQcmlvcml0eS5ISUdIOyAvLyBwcmlvcml0eSBvZiBldmVudCBmb3IgZXZlbnRzIHF1ZXVlXHJcblxyXG4gIHByaXZhdGUgX3Byb2R1Y2VDbGljazogYm9vbGVhbiA9IGZhbHNlOyAvLyBpZiBUUlVFLCB0aGUgZXZlbnQgc2hvdWxkIHByb2R1Y2UgY2xpY2tcclxuICBwcml2YXRlIF9yZXZlcnNpYmxlRXhpdDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIHByaXZhdGUgX3NlbGVjdGlvbkVuZDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9zZWxlY3Rpb25TdGFydDogbnVtYmVyID0gMDtcclxuICBwcml2YXRlIF9zZW5kQWxsOiBib29sZWFuID0gZmFsc2U7ICAvLyB0aGlzIGZsYWcgaXMgc2V0IGZvciBzZW5kaW5nIGFsbCByZWNvcmRzXHJcbiAgcHJpdmF0ZSBfdGFzazogVGFza0Jhc2UgPSBudWxsOyAvLyBhIHJlZmVyZW5jZSB0byB0aGUgdGFza1xyXG4gIHByaXZhdGUgX3Rhc2tUYWc6IHN0cmluZyA9IG51bGw7IC8vIHRoZSB0YXNrIGlkIG9uIHdoaWNoIHRoZSBldmVudCB3YXMgdHJpZ2dlcmVkXHJcbiAgcHJpdmF0ZSBfdmFsOiBhbnkgPSBudWxsO1xyXG5cclxuXHJcblxyXG4gIHNldCBDb250cm9sKHZhbHVlOiBNZ0NvbnRyb2xCYXNlKSB7XHJcbiAgICB0aGlzLl9jdHJsID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBzZXQgRGlzcGxheUxpbmUodmFsdWU6IG51bWJlcikge1xyXG4gICAgdGhpcy5fZGlzcGxheUxpbmUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldCBDb250cm9sKCk6IE1nQ29udHJvbEJhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N0cmw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNob3VsZCB0aGUgY29udHJvbCBzZXQgb24gdGhlIGV2ZW50IGJlIGlnbm9yZWQuIGlmIHRydWUsIHdoZW4gcHJvY2Vzc2luZyB0aGUgZXZlbnQgd2Ugc2hvdWxkXHJcbiAgLy8vIHVzZSB0aGUgY3VycmVudCBmb2N1c2VkIGNvbnRyb2wgaW5zdGVhZCBvZiB0aGUgb25lIHNldCBvbiB0aGUgZXZlbnQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBJZ25vcmVTcGVjaWZpZWRDb250cm9sOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIExhc3RGb2N1c2VkVmFsOiBMYXN0Rm9jdXNlZFZhbCA9IG51bGw7IC8vIHZhbHVlIG9mIGxhc3QgZWRpdGVkIGNvbnRyb2xcclxuXHJcbiAgZ2V0IENvbnRyb2xzTGlzdCgpOiBMaXN0PE1nQ29udHJvbEJhc2U+IHtcclxuICAgIHJldHVybiB0aGlzLl9jb250cm9sc0xpc3Q7XHJcbiAgfVxyXG5cclxuICBnZXQgRGlyZWN0aW9uKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGlyZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IodGFza1JlZjogVGFza0Jhc2UpO1xyXG4gIGNvbnN0cnVjdG9yKHRhc2tSZWY6IFRhc2tCYXNlLCBjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlKTtcclxuICBjb25zdHJ1Y3RvcihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlKTtcclxuICBjb25zdHJ1Y3RvcihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4sIGlnbm9yZVNwZWNpZmllZENvbnRyb2w6IGJvb2xlYW4pO1xyXG4gIGNvbnN0cnVjdG9yKHRhc2tyZWY6IFRhc2tCYXNlLCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik7XHJcbiAgY29uc3RydWN0b3IoZmxkUmVmOiBHdWlGaWVsZEJhc2UpO1xyXG4gIGNvbnN0cnVjdG9yKGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGxpbmU6IG51bWJlcik7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgbGluZTogbnVtYmVyLCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgY29udHJvbHNMaXN0OiBMaXN0PE1nQ29udHJvbEJhc2U+LCBndWlUcmlnZ2VyZWRFdmVudDogYm9vbGVhbik7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgZGlyZWN0aW9uOiBudW1iZXIsIGxpbmU6IG51bWJlcik7XHJcbiAgY29uc3RydWN0b3IoY3RybFJlZjogTWdDb250cm9sQmFzZSwgY29sdW1uSGVhZGVyOiBzdHJpbmcsIHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik7XHJcbiAgY29uc3RydWN0b3IoZXZ0OiBFdmVudCwgcnRFdnQ6IFJ1blRpbWVFdmVudCk7XHJcbiAgY29uc3RydWN0b3IocnRFdnQ6IFJ1blRpbWVFdmVudCk7XHJcbiAgY29uc3RydWN0b3IodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQ6IGFueSwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzaz86IGFueSwgaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZT86IGFueSwgeU9yQ3RsSWR4PzogbnVtYmVyLCB3aWR0aD86IG51bWJlciwgaGVpZ2h0PzogbnVtYmVyKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgVGFza0Jhc2UpKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzUodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgVGFza0Jhc2UpICYmIChjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrID09PSBudWxsIHx8IGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgaW5zdGFuY2VvZiBNZ0NvbnRyb2xCYXNlKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl82KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0LCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIE1nQ29udHJvbEJhc2UpKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzcodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkgJiYgKGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgPT09IG51bGwgfHwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzay5jb25zdHJ1Y3RvciA9PT0gQm9vbGVhbikpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfOCh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMyAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBNZ0NvbnRyb2xCYXNlKSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrLmNvbnN0cnVjdG9yID09PSBCb29sZWFuKSAmJiAoaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZSA9PT0gbnVsbCB8fCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lLmNvbnN0cnVjdG9yID09PSBCb29sZWFuKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl85KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0LCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrLCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIFRhc2tCYXNlKSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrLmNvbnN0cnVjdG9yID09PSBCb29sZWFuKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xMCh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBHdWlGaWVsZEJhc2UpKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzExKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0KTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIE1nQ29udHJvbEJhc2UpICYmIChjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrID09PSBudWxsIHx8IGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2suY29uc3RydWN0b3IgPT09IE51bWJlcikpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMTIodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQsIGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2spO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkgJiYgKGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgPT09IG51bGwgfHwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzay5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSAmJiAoaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZSA9PT0gbnVsbCB8fCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lLmNvbnN0cnVjdG9yID09PSBCb29sZWFuKSlcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xMyh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzaywgaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZSk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMyAmJiAodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgPT09IG51bGwgfHwgdGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQgaW5zdGFuY2VvZiBNZ0NvbnRyb2xCYXNlKSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrIGluc3RhbmNlb2YgTGlzdCkgJiYgKGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWUgPT09IG51bGwgfHwgaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZS5jb25zdHJ1Y3RvciA9PT0gQm9vbGVhbikpXHJcbiAgICAgIHRoaXMuY29uc3RydWN0b3JfMTQodGFza1JlZk9yQ3RybFJlZk9yVGFza3JlZk9yRmxkUmVmT3JFdnQsIGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2ssIGlnbm9yZVNwZWNpZmllZENvbnRyb2xPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JYT3JDb250cm9sT3JBY3RpdmF0ZWRGcm9tTURJRnJhbWUpO1xyXG5cclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMgJiYgKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0ID09PSBudWxsIHx8IHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0IGluc3RhbmNlb2YgTWdDb250cm9sQmFzZSkgJiYgKGN0cmxSZWZPckd1aVRyaWdnZXJlZEV2ZW50T3JMaW5lT3JDb250cm9sc0xpc3RPckRpcmVjdGlvbk9yQ29sdW1uSGVhZGVyT3JSdEV2dE9yQ3VycmVudFRhc2sgPT09IG51bGwgfHwgY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzay5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSAmJiAoaWdub3JlU3BlY2lmaWVkQ29udHJvbE9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPclhPckNvbnRyb2xPckFjdGl2YXRlZEZyb21NRElGcmFtZSA9PT0gbnVsbCB8fCBpZ25vcmVTcGVjaWZpZWRDb250cm9sT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yWE9yQ29udHJvbE9yQWN0aXZhdGVkRnJvbU1ESUZyYW1lLmNvbnN0cnVjdG9yID09PSBOdW1iZXIpKVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzE1KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0LCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSA2KVxyXG4gICAgICB0aGlzLmNvbnN0cnVjdG9yXzE2KHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0KTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyICYmICh0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCA9PT0gbnVsbCB8fCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIEV2ZW50KSAmJiAoY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayA9PT0gbnVsbCB8fCBjdHJsUmVmT3JHdWlUcmlnZ2VyZWRFdmVudE9yTGluZU9yQ29udHJvbHNMaXN0T3JEaXJlY3Rpb25PckNvbHVtbkhlYWRlck9yUnRFdnRPckN1cnJlbnRUYXNrIGluc3RhbmNlb2YgUnVuVGltZUV2ZW50KSkge1xyXG4gICAgICAvLyBDYWxsIGJhc2UgY2xhc3MgY29uc3RydWN0b3IgdG8gaW5pdGlhbGl6ZSB0aGUgZXZlbnQgdHlwZSBhbmQgdGhlIG90aGVyIGZpZWxkc1xyXG4gICAgICBzdXBlci5jb25zdHJ1Y3Rvcl8xKHRhc2tSZWZPckN0cmxSZWZPclRhc2tyZWZPckZsZFJlZk9yRXZ0KTtcclxuICAgICAgdGhpcy5jb25zdHJ1Y3Rvcl8xNyggY3RybFJlZk9yR3VpVHJpZ2dlcmVkRXZlbnRPckxpbmVPckNvbnRyb2xzTGlzdE9yRGlyZWN0aW9uT3JDb2x1bW5IZWFkZXJPclJ0RXZ0T3JDdXJyZW50VGFzayk7XHJcbiAgICB9XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCBpbnN0YW5jZW9mIFJ1blRpbWVFdmVudClcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCB0YXNrUmVmT3JDdHJsUmVmT3JUYXNrcmVmT3JGbGRSZWZPckV2dCk7XHJcblxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1JlZlwiPmEgcmVmZXJlbmNlIHRvIHRoZSB0YXNrPC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzUodGFza1JlZjogVGFza0Jhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5pdCh0YXNrUmVmKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tSZWZcIj5yZWZlcmVuY2UgdG8gdGFzazwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsUmVmXCI+cmVmZXJlbmNlIHRvIGNvbnRyb2w8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfNih0YXNrUmVmOiBUYXNrQmFzZSwgY3RybFJlZjogTWdDb250cm9sQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl81KChjdHJsUmVmICE9PSBudWxsKSA/ICg8VGFza0Jhc2U+Y3RybFJlZi5nZXRGb3JtKCkuZ2V0VGFzaygpKSA6IHRhc2tSZWYpO1xyXG4gICAgdGhpcy5Db250cm9sID0gY3RybFJlZjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxSZWZcIj5hIHJlZmVyZW5jZSB0byB0aGUgY29udHJvbCA8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfNyhjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzYobnVsbCwgY3RybFJlZik7XHJcbiAgICBpZiAoY3RybFJlZiAhPT0gbnVsbCAmJiBzdXBlci5nZXRUeXBlKCkgPT09IENoYXIuTWluVmFsdWUpIC8vIG5vdCBpbml0aWFsaXplZCB5ZXRcclxuICAgIHtcclxuICAgICAgLy8gb24gdGhlIGZpcnN0IHRpbWUsIGlmIGEgVFJJR0dFUiBwcm9wZXJ0eSBleGlzdHMsIHBhcnNlIHRoZSBldmVudCBhbmQgYWRkIGl0IHRvIHRoZSBjb250cm9sXHJcbiAgICAgIGxldCBwcm9wOiBQcm9wZXJ0eSA9IGN0cmxSZWYuR2V0Q29tcHV0ZWRQcm9wZXJ0eShQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9UUklHR0VSKTtcclxuICAgICAgaWYgKHByb3AgIT09IG51bGwpIHtcclxuICAgICAgICBsZXQgeG1sUGFyc2VyOiBYbWxQYXJzZXIgPSBuZXcgWG1sUGFyc2VyKHByb3AuR2V0Q29tcHV0ZWRWYWx1ZSgpKTtcclxuICAgICAgICBzdXBlci5maWxsRGF0YSh4bWxQYXJzZXIsIDxUYXNrQmFzZT5jdHJsUmVmLmdldEZvcm0oKS5nZXRUYXNrKCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsUmVmXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlUcmlnZ2VyZWRFdmVudFwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl84KGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzcoY3RybFJlZik7XHJcbiAgICB0aGlzLl9ndWlUcmlnZ2VyZWRFdmVudCA9IGd1aVRyaWdnZXJlZEV2ZW50O1xyXG4gICAgaWYgKGd1aVRyaWdnZXJlZEV2ZW50KSB7XHJcbiAgICAgIC8vIEV2ZW50cyB0aGF0IGFyZSB0cmlnZ2VyZWQgYnkgR1VJIGxldmVsLCBtdXN0IGJlIGV4ZWN1dGVkIGFmdGVyIGFsbFxyXG4gICAgICAvLyBvdGhlciBldmVudHMsIHRodXMgdGhheSBoYXZlIGxvdyBwcmlvcml0eTtcclxuICAgICAgdGhpcy5fcHJpb3JpdHkgPSBQcmlvcml0eS5MT1c7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsUmVmXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlUcmlnZ2VyZWRFdmVudFwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl85KGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuLCBpZ25vcmVTcGVjaWZpZWRDb250cm9sOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzgoY3RybFJlZiwgZ3VpVHJpZ2dlcmVkRXZlbnQpO1xyXG4gICAgdGhpcy5JZ25vcmVTcGVjaWZpZWRDb250cm9sID0gaWdub3JlU3BlY2lmaWVkQ29udHJvbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tyZWZcIj5yZWZlcmVuY2UgdG8gdGFzazwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJndWlUcmlnZ2VyZWRFdmVudFwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xMCh0YXNrcmVmOiBUYXNrQmFzZSwgZ3VpVHJpZ2dlcmVkRXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuY29uc3RydWN0b3JfNSh0YXNrcmVmKTtcclxuICAgIHRoaXMuX2d1aVRyaWdnZXJlZEV2ZW50ID0gZ3VpVHJpZ2dlcmVkRXZlbnQ7XHJcbiAgICBpZiAoZ3VpVHJpZ2dlcmVkRXZlbnQpIHtcclxuICAgICAgdGhpcy5fcHJpb3JpdHkgPSBQcmlvcml0eS5MT1c7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgQ1RPUlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmbGRSZWZcIj5hIHJlZmVyZW5jZSB0byB0aGUgZmllbGQ8L3BhcmFtPlxyXG4gIHByaXZhdGUgY29uc3RydWN0b3JfMTEoZmxkUmVmOiBHdWlGaWVsZEJhc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX2V2ZW50RmxkID0gZmxkUmVmO1xyXG4gICAgdGhpcy5pbml0KChmbGRSZWYgIT09IG51bGwpID8gKDxUYXNrQmFzZT5mbGRSZWYuZ2V0VGFzaygpKSA6IG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFJlZlwiPmEgcmVmZXJlbmNlIHRvIHRoZSBjb250cm9sIG9uIHdoaWNoIHRoZSBldmVudCBvY2N1cmVkIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsaW5lXCI+dGhlIGxpbmUgb2YgdGhlIHRhYmxlIGluIHdoaWNoIHRoZSBjb250cm9sIGlzIGxvY2F0ZWQgPC9wYXJhbT5cclxuICBwcml2YXRlIGNvbnN0cnVjdG9yXzEyKGN0cmxSZWY6IE1nQ29udHJvbEJhc2UsIGxpbmU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl83KGN0cmxSZWYpO1xyXG4gICAgdGhpcy5fZGlzcGxheUxpbmUgPSBsaW5lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xMyhjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBsaW5lOiBudW1iZXIsIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzgoY3RybFJlZiwgZ3VpVHJpZ2dlcmVkRXZlbnQpO1xyXG4gICAgdGhpcy5fZGlzcGxheUxpbmUgPSBsaW5lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xNChjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBjb250cm9sc0xpc3Q6IExpc3Q8TWdDb250cm9sQmFzZT4sIGd1aVRyaWdnZXJlZEV2ZW50OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnN0cnVjdG9yXzgoY3RybFJlZiwgZ3VpVHJpZ2dlcmVkRXZlbnQpO1xyXG4gICAgdGhpcy5fY29udHJvbHNMaXN0ID0gY29udHJvbHNMaXN0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xNShjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlLCBkaXJlY3Rpb246IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl84KGN0cmxSZWYsIHRydWUpO1xyXG4gICAgdGhpcy5fZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xNihjdHJsUmVmOiBNZ0NvbnRyb2xCYXNlICk6IHZvaWQge1xyXG4gICAgdGhpcy5jb25zdHJ1Y3Rvcl84KGN0cmxSZWYsIHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1IgLSBjcmVhdGVzIGEgbmV3IHJ1biB0aW1lIGV2ZW50IGJ5IGNvcHlpbmcgdGhlIG1lbWJlciB2YXJpYWJsZXMgb2YgYSBnaXZlblxyXG4gIC8vLyAgIGV2ZW50IGFuZCB0aGUgbWVtYmVyIHZhcmlhYmxlcyBvZiBhIGdpdmVuIHJ1biB0aW1lIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImV2dFwiPmEgcmVmZXJlbmNlIHRvIHRoZSBldmVudCB0byBiZSB1c2VkIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJydEV2dFwiPmEgcmVmZXJlbmNlIHRvIHRoZSBydW4gdGltZSBldmVudCB0byBiZSB1c2VkIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcl8xNyggcnRFdnQ6IFJ1blRpbWVFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdGFza1RhZyA9IHJ0RXZ0Ll90YXNrVGFnO1xyXG4gICAgdGhpcy5fdGFzayA9IHJ0RXZ0Ll90YXNrO1xyXG4gICAgdGhpcy5Db250cm9sID0gcnRFdnQuQ29udHJvbDtcclxuICAgIHRoaXMuX2V2ZW50RmxkID0gcnRFdnQuX2V2ZW50RmxkO1xyXG4gICAgdGhpcy5fbWdkSWQgPSBydEV2dC5fbWdkSWQ7XHJcbiAgICB0aGlzLl9kaXNwbGF5TGluZSA9IHJ0RXZ0Ll9kaXNwbGF5TGluZTtcclxuICAgIHRoaXMuX3JldmVyc2libGVFeGl0ID0gcnRFdnQuX3JldmVyc2libGVFeGl0O1xyXG4gICAgdGhpcy5fYXJnTGlzdCA9IHJ0RXZ0Ll9hcmdMaXN0O1xyXG4gICAgdGhpcy5faW1tZWRpYXRlID0gcnRFdnQuX2ltbWVkaWF0ZTtcclxuICAgIHRoaXMuX21wcmdDcmVhdG9yID0gcnRFdnQuX21wcmdDcmVhdG9yO1xyXG4gICAgdGhpcy5fcHJpb3JpdHkgPSBydEV2dC5fcHJpb3JpdHk7XHJcbiAgICB0aGlzLl9ndWlUcmlnZ2VyZWRFdmVudCA9IHJ0RXZ0Ll9ndWlUcmlnZ2VyZWRFdmVudDtcclxuICAgIHRoaXMuX2lzSWRsZVRpbWVyID0gcnRFdnQuX2lzSWRsZVRpbWVyO1xyXG4gICAgdGhpcy5fdmFsID0gcnRFdnQuX3ZhbDtcclxuICAgIHRoaXMuX3NlbGVjdGlvblN0YXJ0ID0gcnRFdnQuX3NlbGVjdGlvblN0YXJ0O1xyXG4gICAgdGhpcy5fc2VsZWN0aW9uRW5kID0gcnRFdnQuX3NlbGVjdGlvbkVuZDtcclxuICAgIHRoaXMuX2NvbnRyb2xzTGlzdCA9IHJ0RXZ0Ll9jb250cm9sc0xpc3Q7XHJcbiAgICB0aGlzLl9kaXJlY3Rpb24gPSBydEV2dC5fZGlyZWN0aW9uO1xyXG4gICAgdGhpcy5fZG90TmV0T2JqZWN0ID0gcnRFdnQuX2RvdE5ldE9iamVjdDtcclxuICAgIHRoaXMuTGFzdEZvY3VzZWRWYWwgPSBydEV2dC5MYXN0Rm9jdXNlZFZhbDtcclxuICAgIHRoaXMuX3JvdXRlUGFyYW1zID0gcnRFdnQuX3JvdXRlUGFyYW1zO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBpbXBsZW1lbnRpbmcgY29tcGFyYXRvciwgdGhlIGV2ZW50cyBhcmUgY29tcGFyZWQgYnkgcHJpb3JpdHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIENvbXBhcmVUbyhvYmo6IGFueSk6IG51bWJlciB7XHJcbiAgICBsZXQgb3RoZXJUaW1lRXZlbnQ6IFJ1blRpbWVFdmVudCA9IDxSdW5UaW1lRXZlbnQ+b2JqO1xyXG4gICAgbGV0IG90aGVyUHJpb3JpdHk6IFByaW9yaXR5ID0gb3RoZXJUaW1lRXZlbnQuX3ByaW9yaXR5O1xyXG4gICAgbGV0IHJlc3VsdDogbnVtYmVyID0gb3RoZXJQcmlvcml0eSAtIHRoaXMuX3ByaW9yaXR5O1xyXG4gICAgaWYgKHJlc3VsdCA9PT0gMClcclxuICAgICAgcmVzdWx0ID0gPG51bWJlcj4odGhpcy5fdGltZXN0YW1wIC0gb3RoZXJUaW1lRXZlbnQuX3RpbWVzdGFtcCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgYSByZXBsaWNhIG9mIHRoaXMgcnVudGltZSBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcmVwbGljYXRlKCk6IFJ1blRpbWVFdmVudCB7XHJcbiAgICBsZXQgcnVuVGltZUV2ZW50OiBSdW5UaW1lRXZlbnQgPSBuZXcgUnVuVGltZUV2ZW50KHRoaXMpO1xyXG4gICAgcnVuVGltZUV2ZW50LnNldFRpbWVzdGFtcCgpO1xyXG4gICAgcmV0dXJuIHJ1blRpbWVFdmVudDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhIGhlbHBlciBtZXRob2QgdGhhdCBkb2VzIHNvbWUgY29tbW9uIGluaXRpYWxpemF0aW9uIGZvciBzb21lIG9mIHRoZSBjb25zdHJ1Y3RvcnNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgaW5pdCh0YXNrUmVmOiBUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdGFzayA9ICh0YXNrUmVmIHx8ICg8TUdEYXRhPkFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5nZXRDdXJyTUdEYXRhKCkpLmdldEZpcnN0VGFzaygpKTtcclxuICAgIHRoaXMuX3Rhc2tUYWcgPSAoKHRoaXMuX3Rhc2sgPT09IG51bGwpID8gXCJcIiA6IHRoaXMuX3Rhc2suZ2V0VGFza1RhZygpKTtcclxuICAgIHRoaXMuX21wcmdDcmVhdG9yID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjb252ZXJ0cyBwYXJhbWV0ZXJzIHRvIGFyZ3VtZW50IGxpc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNvbnZlcnRQYXJhbXNUb0FyZ3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hcmdMaXN0ID0gbmV3IEFyZ3VtZW50c0xpc3QoKTtcclxuICAgIHRoaXMuX2FyZ0xpc3QuYnVpbGRMaXN0RnJvbVBhcmFtcyh0aGlzLl9wYXJhbWV0ZXJzLCB0aGlzLl9wYXJhbUF0dHJzLCB0aGlzLl9wYXJhbVZhbHMsIHRoaXMuX3BhcmFtTnVsbHMpO1xyXG4gICAgdGhpcy5fcGFyYW1ldGVycyA9IDA7XHJcbiAgICB0aGlzLl9wYXJhbUF0dHJzID0gbnVsbDtcclxuICAgIHRoaXMuX3BhcmFtVmFscyA9IG51bGw7XHJcbiAgICB0aGlzLl9wYXJhbU51bGxzID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFRhc2soKTogVGFza0Jhc2Uge1xyXG4gICAgc3VwZXIuZmluZFVzZXJFdmVudCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuX3Rhc2s7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImFUYXNrXCI+LSByZWZlcmVuY2UgdG8gYSB0YXNrPC9wYXJhbT5cclxuICBzZXRUYXNrKHRhc2tSZWY6IFRhc2tCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl90YXNrID0gdGFza1JlZjtcclxuXHJcbiAgICBpZiAodGhpcy5fdGFzayAhPT0gbnVsbClcclxuICAgICAgdGhpcy5fdGFza1RhZyA9IHRoaXMuX3Rhc2suZ2V0VGFza1RhZygpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLl90YXNrVGFnID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgYSBUaW1lciBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzZWNvbmRzXCI+dGhlIG51bWJlciBvZiBzZWNvbmRzIGZvciB0aGlzIGV2ZW50czwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJudW1iZXJXbmRcIj50aGUgbWdkYXRhIElEIGZvciB0aGUgZXZlbnQ8L3BhcmFtPlxyXG4gIHNldFRpbWVyKHNlYzogbnVtYmVyLCBtZ2RJRDogbnVtYmVyLCBpc0lkbGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3R5cGUgPSBDb25zdEludGVyZmFjZS5FVkVOVF9UWVBFX1RJTUVSIC8qJ1QnKi87XHJcbiAgICB0aGlzLl9zZWNvbmRzID0gc2VjO1xyXG4gICAgdGhpcy5fbWdkSWQgPSBtZ2RJRDtcclxuICAgIHRoaXMuX2lzSWRsZVRpbWVyID0gaXNJZGxlO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGxpbmUgaW4gdGFibGUgb2YgY29udHJvbCBpbiBhIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBsaW5lIG51bWJlcjwvcmV0dXJucz5cclxuICBnZXREaXNwbGF5TGluZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlMaW5lO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBudW1iZXIgb2Ygd2luZG93IChmb3IgdGltZXIgZXZlbnRzKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TWdkSUQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9tZ2RJZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGJyZWFrIGxldmVsIG9mIEV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRCcmtMZXZlbCgpOiBzdHJpbmc7XHJcbiAgZ2V0QnJrTGV2ZWwoZmxvd01vbml0b3I6IGJvb2xlYW4pOiBzdHJpbmc7XHJcbiAgZ2V0QnJrTGV2ZWwoZmxvd01vbml0b3I/OiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldEJya0xldmVsXzAwKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5nZXRCcmtMZXZlbF8wMShmbG93TW9uaXRvcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEJya0xldmVsXzAwKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgbGV2ZWw6IHN0cmluZyA9IHN1cGVyLmdldEJya0xldmVsKCk7XHJcbiAgICBpZiAodGhpcy5fdHlwZSA9PT0gQ29uc3RJbnRlcmZhY2UuRVZFTlRfVFlQRV9JTlRFUk5BTCkge1xyXG4gICAgICBzd2l0Y2ggKHRoaXMuSW50ZXJuYWxFdmVudCkge1xyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfUFJFRklYOlxyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfU1VGRklYOlxyXG4gICAgICAgIGNhc2UgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NUUkxfVkVSSUZJQ0FUSU9OOlxyXG4gICAgICAgICAgbGV2ZWwgKz0gdGhpcy5Db250cm9sLk5hbWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9WQVJJQUJMRTpcclxuICAgICAgICAgIGxldmVsICs9IHRoaXMuX2V2ZW50RmxkLmdldFZhck5hbWUoKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbGV2ZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEJya0xldmVsXzAxKGZsb3dNb25pdG9yOiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBzdXBlci5nZXRCcmtMZXZlbChmbG93TW9uaXRvcik7XHJcbiAgfVxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBhIG5ldyBjb250cm9sIGZvciB0aGUgcnVudGltZSBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJuZXdDdHJsXCI+YSByZWZlcmVuY2UgdG8gdGhlIG5ldyBjb250cm9sIDwvcGFyYW0+XHJcbiAgc2V0Q3RybChuZXdDdHJsOiBNZ0NvbnRyb2xCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jdHJsID0gbmV3Q3RybDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIHJldmVyc2libGUgZXhpdCBmbGFnIHRvIGZhbHNlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXROb25SZXZlcnNpYmxlRXhpdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3JldmVyc2libGVFeGl0ID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHJldmVyc2libGUgZXhpdCBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICByZXZlcnNpYmxlRXhpdCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXZlcnNpYmxlRXhpdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBidWlsZCBYTUwgRXZlbnQgc3RyaW5nIGZvciBTZXJ2ZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHB1YmxpYyBidWlsZFhNTChtZXNzYWdlOiBTdHJpbmdCdWlsZGVyKTogdm9pZCB7XHJcbiAgICBtZXNzYWdlLkFwcGVuZChcIlxcbiAgIFwiICsgWE1MQ29uc3RhbnRzLlRBR19PUEVOICsgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0VWRU5UKTtcclxuXHJcbiAgICBpZiAodGhpcy5fdHlwZSAhPT0gQ2hhci5NaW5WYWx1ZSlcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBDb25zdEludGVyZmFjZS5NR19BVFRSX0VWRU5UVFlQRSArIFwiPVxcXCJcIiArIHRoaXMuX3R5cGUgKyBcIlxcXCJcIik7XHJcblxyXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09IENvbnN0SW50ZXJmYWNlLkVWRU5UX1RZUEVfU1lTVEVNICYmIHRoaXMua2JkSXRtICE9IG51bGwpIHtcclxuICAgICAgbGV0IG1vZGlmaWVyOiBNb2RpZmllcnMgPSB0aGlzLmtiZEl0bS5nZXRNb2RpZmllcigpO1xyXG4gICAgICBpZiAobW9kaWZpZXIgIT09IE1vZGlmaWVycy5NT0RJRklFUl9OT05FKVxyXG4gICAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9NT0RJRklFUiArIFwiPVxcXCJcIiArIG1vZGlmaWVyICsgXCJcXFwiXCIpO1xyXG4gICAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfS0VZQ09ERSArIFwiPVxcXCJcIiArIHRoaXMua2JkSXRtLmdldEtleUNvZGUoKSArIFwiXFxcIlwiKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLkludGVybmFsRXZlbnQgIT09IEludDMyLk1pblZhbHVlKVxyXG4gICAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSU5URVJOQUxFVkVOVCArIFwiPVxcXCJcIiArIHRoaXMuSW50ZXJuYWxFdmVudCArIFwiXFxcIlwiKTtcclxuICAgIGlmICh0aGlzLl9zZWNvbmRzICE9PSBJbnQzMi5NaW5WYWx1ZSlcclxuICAgICAgbWVzc2FnZS5BcHBlbmQoXCIgXCIgKyBDb25zdEludGVyZmFjZS5NR19BVFRSX1NFQ09ORFMgKyBcIj1cXFwiXCIgKyB0aGlzLl9zZWNvbmRzICsgXCJcXFwiXCIpO1xyXG4gICAgaWYgKHRoaXMuRXhwICE9IG51bGwpXHJcbiAgICAgIG1lc3NhZ2UuQXBwZW5kKFwiIFwiICsgWE1MQ29uc3RhbnRzLk1HX0FUVFJfRVhQICsgXCI9XFxcIlwiICsgdGhpcy5FeHAuZ2V0SWQoKSArIFwiXFxcIlwiKTtcclxuICAgIGlmICh0aGlzLl9mb3JjZUV4aXQgIT09IEZvcmNlRXhpdC5Ob25lKVxyXG4gICAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIFhNTENvbnN0YW50cy5NR19BVFRSX0VYUCArIFwiPVxcXCJcIiArIDxzdHJpbmc+dGhpcy5fZm9yY2VFeGl0ICsgXCJcXFwiXCIpO1xyXG4gICAgaWYgKHRoaXMuVXNlckV2dCAhPSBudWxsKVxyXG4gICAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfVVNFUiArIFwiPVxcXCJcIiArIHRoaXMuVXNlckV2dFRhc2tUYWcgKyBcIixcIiArIHRoaXMuX3VzZXJFdnRJZHggKyBcIlxcXCJcIik7XHJcblxyXG4gICAgbWVzc2FnZS5BcHBlbmQoWE1MQ29uc3RhbnRzLlRBR19URVJNKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGFyZ0xpc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIGFyZ0xpc3Q8L3JldHVybnM+XHJcbiAgZ2V0QXJnTGlzdCgpOiBBcmd1bWVudHNMaXN0IHtcclxuICAgIHJldHVybiB0aGlzLl9hcmdMaXN0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgYXJnTGlzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJhQXJnTGlzdFwiPjwvcGFyYW0+XHJcbiAgc2V0QXJnTGlzdChhQXJnTGlzdDogQXJndW1lbnRzTGlzdCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IHRoaXMuX2FyZ0xpc3QgPT09IG51bGw7XHJcbiAgICB0aGlzLl9hcmdMaXN0ID0gYUFyZ0xpc3Q7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aGUgYXJnTGlzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJhQXJnTGlzdFwiPjwvcGFyYW0+XHJcbiAgc2V0Um91dGVQYXJhbUxpc3Qocm91dGVQYXJhbXM6IExpc3Q8YW55Pik6IHZvaWQge1xyXG4gICAgdGhpcy5fcm91dGVQYXJhbXMgPSByb3V0ZVBhcmFtcztcclxuICB9XHJcblxyXG4gIGdldFJvdXRlUGFyYW1MaXN0KCk6IExpc3Q8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcm91dGVQYXJhbXM7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IGEgdmFsdWUgdG8gdGhlIGltbWVkaWF0ZSBmbGFnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZhbFwiPnRoZSB2YWx1ZSB0byB1c2U8L3BhcmFtPlxyXG4gIHNldEltbWVkaWF0ZSh2YWw6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX2ltbWVkaWF0ZSA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgaW1tZWRpYXRlIGZsYWdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGlzSW1tZWRpYXRlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2ltbWVkaWF0ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgdGFzayB3aGljaCBpcyBcInJlc3BvbnNpYmxlXCIgZm9yIGEgbWFpbiBwcm9ncmFtIHRvIGJlY29tZSBhY3RpdmUuXHJcbiAgLy8vICAgRm9yIGV4YW1wbGU6IGlmIHRhc2sgQSBjYWxscyB0YXNrIEIgYW5kIEIncyBjdGxJZHggaXMgZGlmZmVyZW50IHRoYW4gQSdzLCB0aGVuIEIncyBtYWluXHJcbiAgLy8vICAgcHJvZ3JhbSB3aWxsIGJlIGluc2VydGVkIGludG8gdGhlIHRhc2sgaGlyYXJjaHkgdGh1cyBCIGlzIFwicmVzcG9uc2libGVcIiBmb3IgdGhlIG1haW4gcHJnLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzcmNcIj50aGUgXCJyZXNwb25zaWJsZVwiIHRhc2suPC9wYXJhbT5cclxuICBzZXRNYWluUHJnQ3JlYXRvcihzcmM6IFRhc2tCYXNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9tcHJnQ3JlYXRvciA9IHNyYztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIHRhc2sgd2hpY2ggaXMgXCJyZXNwb25zaWJsZVwiIGZvciBhIG1haW4gcHJvZ3JhbSdzIGV4ZWN1dGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0aGUgXCJyZXNwb25zaWJsZVwiIHRhc2suPC9yZXR1cm5zPlxyXG4gIGdldE1haW5QcmdDcmVhdG9yKCk6IFRhc2tCYXNlIHtcclxuICAgIHJldHVybiB0aGlzLl9tcHJnQ3JlYXRvcjtcclxuICB9XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0cyB0aGUgaXNSZWFsUmVmcmVzaCBmbGFnIHRvIGEgZ2l2ZW4gdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldElzUmVhbFJlZnJlc2godmFsOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pc1JlYWxSZWZyZXNoID0gdmFsO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHR5cGUgb2YgYSByZWZyZXNoIGV2ZW50IHRydWUgaXMgcmVhbCByZWZyZXNoIGUuaS4gb25lIGludm9rZWQgZGlyZWN0bGx5IGJ5IHRoZSB1c2VyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRSZWZyZXNoVHlwZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc1JlYWxSZWZyZXNoO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIG1hcmsgdGhlIGV2ZW50IGFzIGFuIGV2ZW50IHdoaWNoIHdhcyBjcmVhdGVkIGJ5IHRoZSBzZXJ2ZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldEZyb21TZXJ2ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9mcm9tU2VydmVyID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBtYXJrIHRoZSBldmVudCBhcyBhbiBldmVudCB3aGljaCB3YXMgbm90IGNyZWF0ZWQgYnkgdGhlIHNlcnZlclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcmVzZXRGcm9tU2VydmVyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZnJvbVNlcnZlciA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxyZXR1cm5zPiBhbiBpbmRpY2F0aW9uIHdoZWF0aGVyIHRoZSBzZXJ2ZXIgY3JlYXRlZCB0aGlzIGV2ZW50XHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBpc0Zyb21TZXJ2ZXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZnJvbVNlcnZlcjtcclxuICB9XHJcblxyXG4gIC8vLyA8cmV0dXJucz4gYW4gaW5kaWNhdGlvbiB3aGVhdGhlciB0aGUgZXZlbnQgaXMgYSBwYXJ0IG9mIHF1aXQgcHJvY2Vzc1xyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgaXNRdWl0KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50U3ViVHlwZSA9PT0gRXZlbnRTdWJUeXBlLkNhbmNlbElzUXVpdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBJbmRpY2F0ZXMgdGhhdCB3ZSBkbyBub3Qgd2FudCB0aGUgTUdfQUNUX0NBTkNFTCB0byBwZXJmb3JtIHJvbGxiYWNrLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBSb2xsYmFja0luQ2FuY2VsKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50U3ViVHlwZSAhPT0gRXZlbnRTdWJUeXBlLkNhbmNlbFdpdGhOb1JvbGxiYWNrO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgd2hpbGUgZXhpdCB0aGUgdGFzayBkdWUgZXJyb3IgKGNhbiBiZSBvbiBhbnkgZXJyb3IgaW4gZGF0YWJhc2UgaW4gbm9uIGludGVyYWN0aXZlKVxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgRXhpdER1ZVRvRXJyb3IoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRTdWJUeXBlID09PSBFdmVudFN1YlR5cGUuRXhpdER1ZVRvRXJyb3I7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgSW5kaWNhdGVzIHRoYXQgd2UgZG8gbm90IHdhbnQgdGhlIE1HX0FDVF9DQU5DRUwgdG8gcGVyZm9ybSByb2xsYmFjay5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgUnRWaWV3UmVmcmVzaFVzZUN1cnJlbnRSb3coKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRTdWJUeXBlID09PSBFdmVudFN1YlR5cGUuUnRSZWZyZXNoVmlld1VzZUN1cnJlbnRSb3c7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0cyBzdWIgZXZlbnQgdHlwZSAodXNlIGZvciBjYW5jZWwgJiBydF92aWV3X3JlZnJlc2ggYWN0aW9uKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgU2V0RXZlbnRTdWJUeXBlKGV2ZW50U3ViVHlwZTogRXZlbnRTdWJUeXBlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9ldmVudFN1YlR5cGUgPSBldmVudFN1YlR5cGU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRoZSBGaWVsZEJhc2Ugd2hvc2UgY2hhbmdlIHRyaWdnZXJlZCB0aGlzIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+cmVmZXJlbmNlIHRvIHRoZSBmaWVsZCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQ8L3JldHVybnM+XHJcbiAgZ2V0RmxkKCk6IEd1aUZpZWxkQmFzZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRGbGQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgR3VpIEV2ZW50IC0gZXZlbnQgdGhhdCB3ZXJlIGFkZGVkIGJ5IEd1aSBMYXllciwgbGlrZSBjbGljaywgdGltZXIsIGVjdFxyXG4gIC8vLyAgIEZvciBhbGwgdGhpcyBldmVudCB0aGUgcHJpb3JpdHkgaXMgbG93XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHRydWUgZm9yIEdVSSBFdmVudHMgPC9yZXR1cm5zPlxyXG4gIGlzR3VpVHJpZ2dlcmVkRXZlbnQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fZ3VpVHJpZ2dlcmVkRXZlbnQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHByaW9yaXR5IDwvcmV0dXJucz5cclxuICBnZXRQcmlvcml0eSgpOiBQcmlvcml0eSB7XHJcbiAgICByZXR1cm4gdGhpcy5fcHJpb3JpdHk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0cyBwcmlvcml0eVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwcmlvcml0eVwiPiA8L3BhcmFtPlxyXG4gIHNldFByaW9yaXR5KHByaW9yaXR5OiBQcmlvcml0eSk6IHZvaWQge1xyXG4gICAgdGhpcy5fcHJpb3JpdHkgPSBwcmlvcml0eTtcclxuICB9XHJcblxyXG4gIGlzSWRsZVRpbWVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzSWRsZVRpbWVyO1xyXG4gIH1cclxuXHJcbiAgZ2V0VmFsdWUoKTogYW55IHtcclxuICAgIHJldHVybiB0aGlzLl92YWw7XHJcbiAgfVxyXG5cclxuICBzZXRWYWx1ZSh2YWw6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5fdmFsID0gdmFsO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldFN0YXJ0U2VsZWN0aW9uKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uU3RhcnQ7XHJcbiAgfVxyXG5cclxuICBnZXRFbmRTZWxlY3Rpb24oKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25FbmQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0cyBzZXRFZGl0UGFybXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3RhcnRcIj5zdGFydCBzZWxlY3Rpb248L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZW5kXCI+ZW5kIHNlbGVjdGlvbjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0ZXh0XCI+dGhlIHRleHQgYmVpbmcgd3JpdHRlbjwvcGFyYW0+XHJcbiAgc2V0RWRpdFBhcm1zKHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NlbGVjdGlvblN0YXJ0ID0gc3RhcnQ7XHJcbiAgICB0aGlzLl9zZWxlY3Rpb25FbmQgPSBlbmQ7XHJcbiAgICB0aGlzLnNldFZhbHVlKHRleHQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBmb3IgcHJvZHVjZUNsaWNrIGZsYWdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgaXNQcm9kdWNlQ2xpY2soKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5fcHJvZHVjZUNsaWNrO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCBwcm9kdWNlIGNsaWNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInByb2R1Y2VDbGlja1wiPjwvcGFyYW0+XHJcbiAgc2V0UHJvZHVjZUNsaWNrKHByb2R1Y2VDbGljazogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5fcHJvZHVjZUNsaWNrID0gcHJvZHVjZUNsaWNrO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGFjdGlvbiBsaXN0IHRvIGVuYWJsZS9kaXNhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGdldEFjdEVuYWJsZUxpc3QoKTogbnVtYmVyW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdEVuYWJsZUxpc3Q7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHNlbmQgYWxsIGZsYWdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgaXNTZW5kQWxsKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbmRBbGw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHNlbmRhbGwgZmxhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzZW5kQWxsXCI+IDwvcGFyYW0+XHJcbiAgc2V0U2VuZEFsbChzZW5kQWxsOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZW5kQWxsID0gc2VuZEFsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDaGVjayBpZiB0aGlzIGV2ZW50IGlzIGJsb2NrZWQgYnkgdGhlIGN1cnJlbnRseSBhY3RpdmUgd2luZG93LiBJZiB0aGVcclxuICAvLy8gICBjdXJyZW50IHdpbmRvdyBpcyBtb2RhbCwgYW5kIHRoZSBldmVudCBkZWZpbmVkIGluIG9uZSBvZiBpdHMgYW5jZXN0b3JzLFxyXG4gIC8vLyAgIHRoZSBldmVudCBzaG91bGQgbm90IGJlIGV4ZWN1dGVkLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJhY3RpdmVXaW5kb3dEYXRhXCI+VGhlIE1HRGF0YSBvYmplY3QgZGVzY3JpYmluZyB0aGUgY3VycmVudGx5IGFjdGl2ZSB3aW5kb3cuPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+XHJcbiAgLy8vICAgVGhlIG1ldGhvZCByZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnRseSBhY3RpdmUgd2luZG93IGlzIG1vZGFsIGlzIGFcclxuICAvLy8gICBkZXNjZW5kYW50IG9mIHRoZSBldmVudCdzIHRhc2suIE90aGVyd2lzZSBpdCByZXR1cm5zIGZhbHNlLlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgcHVibGljIGlzQmxvY2tlZEJ5TW9kYWxXaW5kb3coYWN0aXZlV2luZG93RGF0YTogTUdEYXRhKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoYWN0aXZlV2luZG93RGF0YS5Jc01vZGFsKSB7XHJcbiAgICAgIC8vIENoZWNrIHRoYXQgdGhlIGV2ZW50J3MgdGFzayBpcyBhbiBhbmNlc3RvciBvZiB0aGUgYWN0aXZlIHdpbmRvdydzIHRhc2suXHJcbiAgICAgIGxldCBldmVudFRhc2s6IFRhc2tCYXNlID0gdGhpcy5nZXRUYXNrKCk7XHJcbiAgICAgIGxldCBiYXNlVGFzazogVGFza0Jhc2UgPSBhY3RpdmVXaW5kb3dEYXRhLmdldFRhc2soMCk7XHJcbiAgICAgIGlmIChldmVudFRhc2sgIT09IGJhc2VUYXNrICYmIGJhc2VUYXNrLmlzRGVzY2VuZGVudE9mKGV2ZW50VGFzaykpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICB0b1N0cmluZygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIE5TdHJpbmcuRm9ybWF0KFwie3tSVEV2ZW50IHswfSAoezF9KSwgdHlwZSB7Mn17M319fVwiLCBbXHJcbiAgICAgIHRoaXMuZ2V0QnJrTGV2ZWwoKSwgdGhpcy5JbnRlcm5hbEV2ZW50LCB0aGlzLl90eXBlLCAodGhpcy5fdGFzayA9PT0gbnVsbCkgPyBcIlwiIDogKFwiIG9uIFwiICsgdGhpcy5fdGFzaylcclxuICAgIF0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,4 @@
1
+ import { Event } from "./Event";
2
+ export class RunTimeEventBase extends Event {
3
+ }
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVuVGltZUV2ZW50QmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvZXZlbnQvUnVuVGltZUV2ZW50QmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBSTlCLE1BQU0sT0FBZ0IsZ0JBQWlCLFNBQVEsS0FBSztDQUVuRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnR9IGZyb20gXCIuL0V2ZW50XCI7XHJcbmltcG9ydCB7UHJpb3JpdHl9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcblxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJ1blRpbWVFdmVudEJhc2UgZXh0ZW5kcyBFdmVudCB7XHJcbiAgYWJzdHJhY3QgZ2V0UHJpb3JpdHkoKTogUHJpb3JpdHk7XHJcbn1cclxuXHJcbiJdfQ==
@@ -0,0 +1,47 @@
1
+ import { List } from '@magic-xpa/mscorelib';
2
+ import { Logger, XMLConstants } from '@magic-xpa/utils';
3
+ import { Event } from './Event';
4
+ import { ConstInterface } from '../ConstInterface';
5
+ export class UserEventsTable {
6
+ constructor() {
7
+ this._userEventsTab = null;
8
+ this._userEventsTab = new List();
9
+ }
10
+ fillData(tsk, parser) {
11
+ while (this.initInnerObjects(parser, parser.getNextTag(), tsk)) {
12
+ }
13
+ }
14
+ initInnerObjects(parser, foundTagName, tsk) {
15
+ if (foundTagName === null)
16
+ return false;
17
+ switch (foundTagName) {
18
+ case ConstInterface.MG_TAG_EVENT: {
19
+ let evt = new Event();
20
+ evt.fillData(parser, tsk);
21
+ this._userEventsTab.push(evt);
22
+ break;
23
+ }
24
+ case ConstInterface.MG_TAG_USER_EVENTS:
25
+ parser.setCurrIndex(parser.getXMLdata().indexOf(XMLConstants.TAG_CLOSE, parser.getCurrIndex()) + 1);
26
+ break;
27
+ case ConstInterface.MG_TAG_USER_EVENTS_END:
28
+ parser.setCurrIndex2EndOfTag();
29
+ return false;
30
+ default:
31
+ Logger.Instance.WriteExceptionToLogWithMsg("There is no such tag in UserEventsTable.initInnerObjects : " + foundTagName);
32
+ return false;
33
+ }
34
+ return true;
35
+ }
36
+ getEvent(idx) {
37
+ if (idx < 0 || this._userEventsTab === null || idx >= this._userEventsTab.length)
38
+ return null;
39
+ return this._userEventsTab.get_Item(idx);
40
+ }
41
+ getSize() {
42
+ if (this._userEventsTab === null)
43
+ return 0;
44
+ return this._userEventsTab.length;
45
+ }
46
+ }
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlckV2ZW50c1RhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9ldmVudC9Vc2VyRXZlbnRzVGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFFbkUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHbkQsTUFBTSxPQUFPLGVBQWU7SUFNMUI7UUFMUSxtQkFBYyxHQUFnQixJQUFJLENBQUM7UUFNekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLElBQUksRUFBUyxDQUFDO0lBQzFDLENBQUM7SUFLRCxRQUFRLENBQUMsR0FBUyxFQUFDLE1BQWlCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUU7U0FDL0Q7SUFDSCxDQUFDO0lBTU8sZ0JBQWdCLENBQUMsTUFBaUIsRUFBRSxZQUFvQixFQUFFLEdBQVM7UUFDekUsSUFBSSxZQUFZLEtBQUssSUFBSTtZQUN2QixPQUFPLEtBQUssQ0FBQztRQUVmLFFBQVEsWUFBWSxFQUFFO1lBQ3BCLEtBQUssY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLEdBQUcsR0FBVSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUM3QixHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlCLE1BQU07YUFDUDtZQUNELEtBQUssY0FBYyxDQUFDLGtCQUFrQjtnQkFDcEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRXBHLE1BQU07WUFFUixLQUFLLGNBQWMsQ0FBQyxzQkFBc0I7Z0JBQ3hDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUMvQixPQUFPLEtBQUssQ0FBQztZQUVmO2dCQUNFLE1BQU0sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsNkRBQTZELEdBQUcsWUFBWSxDQUFDLENBQUM7Z0JBQ3pILE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBTUQsUUFBUSxDQUFDLEdBQVc7UUFFbEIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07WUFDOUUsT0FBTyxJQUFJLENBQUM7UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFNRCxPQUFPO1FBRUwsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLElBQUk7WUFDOUIsT0FBTyxDQUFDLENBQUM7UUFDWCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQ3BDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExpc3QgfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7IExvZ2dlciwgWE1MQ29uc3RhbnRzLCBYbWxQYXJzZXIgfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uL3Rhc2tzL1Rhc2snO1xyXG5pbXBvcnQgeyBFdmVudCB9IGZyb20gJy4vRXZlbnQnO1xyXG5pbXBvcnQgeyBDb25zdEludGVyZmFjZSB9IGZyb20gJy4uL0NvbnN0SW50ZXJmYWNlJztcclxuXHJcbi8vIFVzZXIgZXZlbnRzIHRhYmxlOjx1c2VyZXZlbnRzPiBldmVudCDigKY8L3VzZXJldmVudHM+XHJcbmV4cG9ydCBjbGFzcyBVc2VyRXZlbnRzVGFibGUge1xyXG4gIHByaXZhdGUgX3VzZXJFdmVudHNUYWI6IExpc3Q8RXZlbnQ+ID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5fdXNlckV2ZW50c1RhYiA9IG5ldyBMaXN0PEV2ZW50PigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHBhcnNlIGlucHV0IHN0cmluZyBhbmQgZmlsbCBpbm5lciBkYXRhIDogVmVjdG9yIHVzZXJFdmVudHNUYWJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGZpbGxEYXRhKHRzazogVGFzayxwYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgd2hpbGUgKHRoaXMuaW5pdElubmVyT2JqZWN0cyhwYXJzZXIsIHBhcnNlci5nZXROZXh0VGFnKCksIHRzaykpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhbGxvY2F0ZSBhbmQgZmlsbCBpbm5lciBvYmplY3RzIG9mIHRoZSBjbGFzc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmb3VuZFRhZ05hbWVcIj5wb3NzaWJsZSAgdGFnIG5hbWUsIG5hbWUgb2Ygb2JqZWN0LCB3aGljaCBuZWVkIGJlIGFsbG9jYXRlZCA8L3BhcmFtPlxyXG4gIHByaXZhdGUgaW5pdElubmVyT2JqZWN0cyhwYXJzZXI6IFhtbFBhcnNlciwgZm91bmRUYWdOYW1lOiBzdHJpbmcsIHRzazogVGFzayk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGZvdW5kVGFnTmFtZSA9PT0gbnVsbClcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIHN3aXRjaCAoZm91bmRUYWdOYW1lKSB7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0VWRU5UOiB7XHJcbiAgICAgICAgbGV0IGV2dDogRXZlbnQgPSBuZXcgRXZlbnQoKTtcclxuICAgICAgICBldnQuZmlsbERhdGEocGFyc2VyLCB0c2spO1xyXG4gICAgICAgIHRoaXMuX3VzZXJFdmVudHNUYWIucHVzaChldnQpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1VTRVJfRVZFTlRTOlxyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgocGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfQ0xPU0UsIHBhcnNlci5nZXRDdXJySW5kZXgoKSkgKyAxKTtcclxuICAgICAgICAvLyBlbmQgb2Ygb3V0ZXIgdGFnIGFuZCBpdHMgXCI+XCJcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1VTRVJfRVZFTlRTX0VORDpcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4MkVuZE9mVGFnKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiBVc2VyRXZlbnRzVGFibGUuaW5pdElubmVyT2JqZWN0cyA6IFwiICsgZm91bmRUYWdOYW1lKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdXNlciBldmVudCBieSBpdHMgaW5kZXggaW4gdGhlIHZlY3RvclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJpZHhcIj50aGUgaW5kZXggb2YgdGhlIHJlcXVlc3RlZCBldmVudCA8L3BhcmFtPlxyXG4gIGdldEV2ZW50KGlkeDogbnVtYmVyKTogRXZlbnQge1xyXG5cclxuICAgIGlmIChpZHggPCAwIHx8IHRoaXMuX3VzZXJFdmVudHNUYWIgPT09IG51bGwgfHwgaWR4ID49IHRoaXMuX3VzZXJFdmVudHNUYWIubGVuZ3RoKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIHJldHVybiB0aGlzLl91c2VyRXZlbnRzVGFiLmdldF9JdGVtKGlkeCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBzaXplIG9mIHRoZSB1c2VyIGV2ZW50cyB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0U2l6ZSgpOiBudW1iZXIge1xyXG5cclxuICAgIGlmICh0aGlzLl91c2VyRXZlbnRzVGFiID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gMDtcclxuICAgIHJldHVybiB0aGlzLl91c2VyRXZlbnRzVGFiLmxlbmd0aDtcclxuICB9XHJcbn1cclxuIl19