@magic-xpa/engine 4.1100.0-dev4110.98 → 4.1100.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +7 -7
- package/{esm2020 → esm2022}/index.mjs +188 -188
- package/{esm2020 → esm2022}/magic-xpa-engine.mjs +1 -1
- package/esm2022/src/AccessHelper.mjs +15 -0
- package/esm2022/src/ClientManager.mjs +421 -0
- package/esm2022/src/CommandsProcessorBase.mjs +56 -0
- package/{esm2020 → esm2022}/src/CommandsProcessorManager.mjs +25 -25
- package/esm2022/src/CommandsTable.mjs +162 -0
- package/esm2022/src/ConstInterface.mjs +517 -0
- package/{esm2020 → esm2022}/src/CurrentClientVersion.mjs +2 -2
- package/esm2022/src/FlowMonitorInterface.mjs +16 -0
- package/esm2022/src/GUIManager.mjs +62 -0
- package/esm2022/src/GlobalCommandsManager.mjs +34 -0
- package/esm2022/src/GuiEventsProcessor.mjs +156 -0
- package/{esm2020 → esm2022}/src/ICommandsTable.mjs +1 -1
- package/esm2022/src/ServerConfig.mjs +122 -0
- package/{esm2020 → esm2022}/src/bridge/IGuiEvent.mjs +19 -19
- package/esm2022/src/bridge/MagicBridge.mjs +41 -0
- package/esm2022/src/commands/ClientOriginatedCommandTaskTag.mjs +12 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserLocateDataViewCommand.mjs +8 -8
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserRangeDataviewCommand.mjs +9 -9
- package/{esm2020 → esm2022}/src/commands/ClientToServer/AddUserSortDataViewCommand.mjs +9 -9
- package/esm2022/src/commands/ClientToServer/BrowserEscEventCommand.mjs +26 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ClientOriginatedCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +59 -59
- package/esm2022/src/commands/ClientToServer/ColumnSortEventCommand.mjs +29 -0
- package/esm2022/src/commands/ClientToServer/CommandFactory.mjs +261 -0
- package/esm2022/src/commands/ClientToServer/CommandSerializationHelper.mjs +67 -0
- package/esm2022/src/commands/ClientToServer/ComputeEventCommand.mjs +26 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTerminationEventCommand.mjs +24 -21
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ContextTimeoutResetCommand.mjs +23 -20
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ControlItemsRefreshCommand.mjs +8 -8
- package/esm2022/src/commands/ClientToServer/DataViewOutputCommand.mjs +13 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/DataviewCommand.mjs +44 -44
- package/esm2022/src/commands/ClientToServer/EvaluateCommand.mjs +40 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/EventCommand.mjs +43 -40
- package/esm2022/src/commands/ClientToServer/ExecOperCommand.mjs +70 -0
- package/esm2022/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +25 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/GlobalParamsQueryCommand.mjs +10 -10
- package/{esm2020 → esm2022}/src/commands/ClientToServer/ICommandTaskTag.mjs +1 -1
- package/esm2022/src/commands/ClientToServer/IndexChangeEventCommand.mjs +24 -0
- package/esm2022/src/commands/ClientToServer/IniputForceWriteCommand.mjs +26 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/NonReversibleExitEventCommand.mjs +26 -23
- package/{esm2020 → esm2022}/src/commands/ClientToServer/QueryCommand.mjs +20 -20
- package/esm2022/src/commands/ClientToServer/RecomputeCommand.mjs +30 -0
- package/esm2022/src/commands/ClientToServer/RefreshEventCommand.mjs +30 -0
- package/esm2022/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +27 -0
- package/esm2022/src/commands/ClientToServer/RollbackEventCommand.mjs +43 -0
- package/esm2022/src/commands/ClientToServer/SelectProgramCommand.mjs +19 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/SetTransactionStateDataviewCommand.mjs +9 -9
- package/esm2022/src/commands/ClientToServer/SubformOpenEventCommand.mjs +24 -0
- package/esm2022/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +27 -0
- package/esm2022/src/commands/ClientToServer/TransactionCommand.mjs +34 -0
- package/{esm2020 → esm2022}/src/commands/ClientToServer/UnloadCommand.mjs +18 -15
- package/esm2022/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +18 -0
- package/esm2022/src/commands/DataViewCommandBase.mjs +8 -0
- package/{esm2020 → esm2022}/src/commands/IClientCommand.mjs +1 -1
- package/esm2022/src/commands/IClientTargetedCommand.mjs +13 -0
- package/{esm2020 → esm2022}/src/commands/IClientToServerCommandInfo.mjs +2 -2
- package/esm2022/src/commands/ServerToClient/AbortCommand.mjs +65 -0
- package/{esm2020 → esm2022}/src/commands/ServerToClient/AddLocateCommand.mjs +21 -21
- package/{esm2020 → esm2022}/src/commands/ServerToClient/AddRangeCommand.mjs +62 -62
- package/{esm2020 → esm2022}/src/commands/ServerToClient/AddSortCommand.mjs +33 -33
- package/esm2022/src/commands/ServerToClient/ClientRefreshCommand.mjs +25 -0
- package/esm2022/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +24 -0
- package/esm2022/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +45 -0
- package/esm2022/src/commands/ServerToClient/OpenURLCommand.mjs +221 -0
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetLocateCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetRangeCommand.mjs +14 -14
- package/{esm2020 → esm2022}/src/commands/ServerToClient/ResetSortCommand.mjs +14 -14
- package/esm2022/src/commands/ServerToClient/ResultCommand.mjs +37 -0
- package/esm2022/src/commands/ServerToClient/VerifyCommand.mjs +83 -0
- package/{esm2020 → esm2022}/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +132 -132
- package/{esm2020 → esm2022}/src/communications/IConnectionStateManager.mjs +1 -1
- package/esm2022/src/communications/InteractiveCommunicationsFailureHandler.mjs +15 -0
- package/{esm2020 → esm2022}/src/data/DataSourceIdKey.mjs +2 -2
- package/esm2022/src/data/DataView.mjs +1613 -0
- package/{esm2020 → esm2022}/src/data/DataViewBase.mjs +3 -3
- package/esm2022/src/data/DataviewManager.mjs +28 -0
- package/esm2022/src/data/DataviewManagerBase.mjs +15 -0
- package/esm2022/src/data/DvCache.mjs +67 -0
- package/esm2022/src/data/Field.mjs +646 -0
- package/esm2022/src/data/FieldBase.mjs +15 -0
- package/esm2022/src/data/FieldsTable.mjs +103 -0
- package/{esm2020 → esm2022}/src/data/IRecordsTable.mjs +1 -1
- package/{esm2020 → esm2022}/src/data/Key.mjs +88 -88
- package/esm2022/src/data/Record.mjs +880 -0
- package/{esm2020 → esm2022}/src/data/RecordOutOfDataViewException.mjs +15 -15
- package/esm2022/src/data/RecordsTable.mjs +267 -0
- package/{esm2020 → esm2022}/src/data/TaskTransactionManager.mjs +107 -103
- package/{esm2020 → esm2022}/src/data/XMLBasedDcValuesBuilder.mjs +74 -74
- package/{esm2020 → esm2022}/src/enums.mjs +23 -23
- package/esm2022/src/env/EnvVariablesTable.mjs +340 -0
- package/esm2022/src/env/Environment.mjs +487 -0
- package/{esm2020 → esm2022}/src/env/ILanguageData.mjs +1 -1
- package/esm2022/src/env/LanguageData.mjs +227 -0
- package/{esm2020 → esm2022}/src/env/MirrorString.mjs +65 -65
- package/esm2022/src/event/ActionManager.mjs +91 -0
- package/esm2022/src/event/Event.mjs +1333 -0
- package/esm2022/src/event/EventHandler.mjs +766 -0
- package/esm2022/src/event/EventHandlerPosition.mjs +204 -0
- package/esm2022/src/event/EventsManager.mjs +2988 -0
- package/{esm2020 → esm2022}/src/event/IEventsManager.mjs +6 -6
- package/esm2022/src/event/RunTimeEvent.mjs +399 -0
- package/{esm2020 → esm2022}/src/event/RunTimeEventBase.mjs +3 -3
- package/esm2022/src/event/UserEventsTable.mjs +47 -0
- package/esm2022/src/exp/ExpTable.mjs +57 -0
- package/esm2022/src/exp/Expression.mjs +200 -0
- package/esm2022/src/exp/ExpressionDict.mjs +727 -0
- package/esm2022/src/exp/ExpressionEvaluator.mjs +4206 -0
- package/esm2022/src/exp/ExpressionLocalJpn.mjs +314 -0
- package/{esm2020 → esm2022}/src/exp/GlobalParamsTable.mjs +85 -85
- package/esm2022/src/exp/YesNoExp.mjs +36 -0
- package/esm2022/src/gui/CreatedFormVector.mjs +23 -0
- package/esm2022/src/gui/FormsTable.mjs +66 -0
- package/esm2022/src/gui/MgControl.mjs +363 -0
- package/esm2022/src/gui/MgForm.mjs +1224 -0
- package/esm2022/src/http/HttpManager.mjs +97 -0
- package/esm2022/src/http/client/HttpClientAsync.mjs +68 -0
- package/{esm2020 → esm2022}/src/http/client/HttpClientBase.mjs +132 -132
- package/esm2022/src/http/client/HttpClientEvents.mjs +39 -0
- package/esm2022/src/http/client/HttpClientSync.mjs +42 -0
- package/esm2022/src/http/client/HttpUtility.mjs +84 -0
- package/{esm2020 → esm2022}/src/http/client/ICommunicationsFailureHandler.mjs +1 -1
- package/{esm2020 → esm2022}/src/remote/AddUserLocateRemoteDataViewCommand.mjs +18 -18
- package/{esm2020 → esm2022}/src/remote/AddUserRangeRemoteDataViewCommand.mjs +18 -18
- package/{esm2020 → esm2022}/src/remote/AddUserSortRemoteDataViewCommand.mjs +18 -18
- package/esm2022/src/remote/RemoteCommandsProcessor.mjs +883 -0
- package/{esm2020 → esm2022}/src/remote/RemoteControlItemsRefreshCommand.mjs +25 -25
- package/{esm2020 → esm2022}/src/remote/RemoteDataViewCommandBase.mjs +24 -24
- package/{esm2020 → esm2022}/src/remote/RemoteDataViewCommandFactory.mjs +60 -60
- package/{esm2020 → esm2022}/src/remote/RemoteDataViewCommandUpdateNonModifiable.mjs +15 -15
- package/{esm2020 → esm2022}/src/remote/RemoteDataviewManager.mjs +17 -17
- package/{esm2020 → esm2022}/src/remote/RemoteInitDataViewCommand.mjs +10 -10
- package/{esm2020 → esm2022}/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +16 -16
- package/{esm2020 → esm2022}/src/remote/ResetUserRangeRemoteDataviewCommand.mjs +12 -12
- package/{esm2020 → esm2022}/src/remote/ResetUserSortRemoteDataviewCommand.mjs +15 -15
- package/esm2022/src/remote/ServerError.mjs +40 -0
- package/{esm2020 → esm2022}/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +19 -19
- package/esm2022/src/rt/Argument.mjs +265 -0
- package/esm2022/src/rt/ArgumentsList.mjs +103 -0
- package/esm2022/src/rt/Boundary.mjs +152 -0
- package/esm2022/src/rt/CompMainPrgTable.mjs +63 -0
- package/esm2022/src/rt/DataviewHeaderBase.mjs +98 -0
- package/{esm2020 → esm2022}/src/rt/DataviewHeaderFactory.mjs +6 -6
- package/esm2022/src/rt/DataviewHeaders.mjs +53 -0
- package/{esm2020 → esm2022}/src/rt/DataviewHeadersSaxHandler.mjs +38 -38
- package/{esm2020 → esm2022}/src/rt/ExecutionStack.mjs +94 -94
- package/{esm2020 → esm2022}/src/rt/ExecutionStackEntry.mjs +17 -17
- package/{esm2020 → esm2022}/src/rt/HandlersTable.mjs +96 -96
- package/{esm2020 → esm2022}/src/rt/IDataSourceViewDefinition.mjs +1 -1
- package/{esm2020 → esm2022}/src/rt/IDataviewHeader.mjs +1 -1
- package/{esm2020 → esm2022}/src/rt/IResultValue.mjs +1 -1
- package/esm2022/src/rt/LastFocusedManager.mjs +65 -0
- package/esm2022/src/rt/Operation.mjs +735 -0
- package/esm2022/src/rt/OperationTable.mjs +67 -0
- package/esm2022/src/rt/Recompute.mjs +355 -0
- package/{esm2020 → esm2022}/src/rt/RecomputeTable.mjs +62 -62
- package/{esm2020 → esm2022}/src/rt/RemoteDataviewHeader.mjs +108 -108
- package/esm2022/src/rt/ResultValue.mjs +10 -0
- package/esm2022/src/rt/TableCache.mjs +177 -0
- package/esm2022/src/rt/TableCacheManager.mjs +67 -0
- package/esm2022/src/rt/Transaction.mjs +53 -0
- package/esm2022/src/security/UserDetails.mjs +71 -0
- package/{esm2020 → esm2022}/src/tasks/IMGDataCollection.mjs +1 -1
- package/esm2022/src/tasks/MGData.mjs +552 -0
- package/esm2022/src/tasks/MGDataCollection.mjs +252 -0
- package/esm2022/src/tasks/RCTimer.mjs +63 -0
- package/{esm2020 → esm2022}/src/tasks/RemoteTaskService.mjs +44 -44
- package/esm2022/src/tasks/Task.mjs +2499 -0
- package/esm2022/src/tasks/TaskBase.mjs +83 -0
- package/{esm2020 → esm2022}/src/tasks/TaskServiceBase.mjs +24 -24
- package/esm2022/src/tasks/TasksTable.mjs +80 -0
- package/esm2022/src/tasks/sort/Sort.mjs +5 -0
- package/{esm2020 → esm2022}/src/tasks/sort/SortCollection.mjs +67 -67
- package/{esm2020 → esm2022}/src/util/ConstUtils.mjs +13 -13
- package/esm2022/src/util/FlowMonitorQueue.mjs +451 -0
- package/{esm2020 → esm2022}/src/util/HeapSort.mjs +69 -69
- package/{esm2020 → esm2022}/src/util/IMirrorXML.mjs +1 -1
- package/{esm2020 → esm2022}/src/util/IServerConfig.mjs +1 -1
- package/{esm2020 → esm2022}/src/util/MgBlockingQueue.mjs +1 -1
- package/esm2022/src/util/MgPriorityBlockingQueue.mjs +74 -0
- package/esm2022/src/util/MgPriorityQueue.mjs +66 -0
- package/{esm2020 → esm2022}/src/util/ParamParseResult.mjs +7 -7
- package/esm2022/src/util/PrmMap.mjs +152 -0
- package/esm2022/src/util/ReturnResult.mjs +46 -0
- package/esm2022/src/util/ReturnResultBase.mjs +18 -0
- package/esm2022/src/util/Scrambler.mjs +89 -0
- package/esm2022/src/util/UniqueIDUtils.mjs +13 -0
- package/{esm2020 → esm2022}/src/util/cookie.service.mjs +92 -92
- package/{fesm2020 → fesm2022}/magic-xpa-engine.mjs +29888 -29690
- package/fesm2022/magic-xpa-engine.mjs.map +1 -0
- package/index.d.ts +187 -187
- package/package.json +8 -14
- package/src/AccessHelper.d.ts +20 -20
- package/src/ClientManager.d.ts +35 -32
- package/src/CommandsProcessorBase.d.ts +23 -23
- package/src/CommandsProcessorManager.d.ts +6 -6
- package/src/CommandsTable.d.ts +22 -22
- package/src/ConstInterface.d.ts +516 -515
- package/src/CurrentClientVersion.d.ts +1 -1
- package/src/FlowMonitorInterface.d.ts +15 -15
- package/src/GUIManager.d.ts +17 -17
- package/src/GlobalCommandsManager.d.ts +17 -17
- package/src/GuiEventsProcessor.d.ts +24 -24
- package/src/ICommandsTable.d.ts +9 -9
- package/src/ServerConfig.d.ts +35 -34
- package/src/bridge/IGuiEvent.d.ts +19 -19
- package/src/bridge/MagicBridge.d.ts +16 -16
- package/src/commands/ClientOriginatedCommandTaskTag.d.ts +8 -8
- package/src/commands/ClientToServer/AddUserLocateDataViewCommand.d.ts +4 -4
- package/src/commands/ClientToServer/AddUserRangeDataviewCommand.d.ts +6 -6
- package/src/commands/ClientToServer/AddUserSortDataViewCommand.d.ts +6 -6
- package/src/commands/ClientToServer/BrowserEscEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/ClientOriginatedCommand.d.ts +8 -8
- package/src/commands/ClientToServer/ClientOriginatedCommandSerializer.d.ts +6 -6
- package/src/commands/ClientToServer/ColumnSortEventCommand.d.ts +11 -10
- package/src/commands/ClientToServer/CommandFactory.d.ts +64 -64
- package/src/commands/ClientToServer/CommandSerializationHelper.d.ts +20 -20
- package/src/commands/ClientToServer/ComputeEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/ContextTerminationEventCommand.d.ts +8 -7
- package/src/commands/ClientToServer/ContextTimeoutResetCommand.d.ts +8 -7
- package/src/commands/ClientToServer/ControlItemsRefreshCommand.d.ts +6 -6
- package/src/commands/ClientToServer/DataViewOutputCommand.d.ts +9 -9
- package/src/commands/ClientToServer/DataviewCommand.d.ts +32 -32
- package/src/commands/ClientToServer/EvaluateCommand.d.ts +16 -15
- package/src/commands/ClientToServer/EventCommand.d.ts +16 -15
- package/src/commands/ClientToServer/ExecOperCommand.d.ts +24 -23
- package/src/commands/ClientToServer/FetchDataControlValuesEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/GlobalParamsQueryCommand.d.ts +5 -5
- package/src/commands/ClientToServer/ICommandTaskTag.d.ts +3 -3
- package/src/commands/ClientToServer/IndexChangeEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/IniputForceWriteCommand.d.ts +11 -10
- package/src/commands/ClientToServer/NonReversibleExitEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/QueryCommand.d.ts +8 -8
- package/src/commands/ClientToServer/RecomputeCommand.d.ts +12 -11
- package/src/commands/ClientToServer/RefreshEventCommand.d.ts +13 -12
- package/src/commands/ClientToServer/RefreshScreenEventCommand.d.ts +11 -10
- package/src/commands/ClientToServer/RollbackEventCommand.d.ts +15 -14
- package/src/commands/ClientToServer/SelectProgramCommand.d.ts +7 -6
- package/src/commands/ClientToServer/SetTransactionStateDataviewCommand.d.ts +5 -5
- package/src/commands/ClientToServer/SubformOpenEventCommand.d.ts +9 -8
- package/src/commands/ClientToServer/SubformRefreshEventCommand.d.ts +10 -9
- package/src/commands/ClientToServer/TransactionCommand.d.ts +14 -12
- package/src/commands/ClientToServer/UnloadCommand.d.ts +8 -7
- package/src/commands/ClientToServer/WriteMessageToServerLogCommand.d.ts +6 -6
- package/src/commands/DataViewCommandBase.d.ts +6 -6
- package/src/commands/IClientCommand.d.ts +2 -2
- package/src/commands/IClientTargetedCommand.d.ts +12 -12
- package/src/commands/IClientToServerCommandInfo.d.ts +4 -3
- package/src/commands/ServerToClient/AbortCommand.d.ts +11 -11
- package/src/commands/ServerToClient/AddLocateCommand.d.ts +6 -6
- package/src/commands/ServerToClient/AddRangeCommand.d.ts +10 -10
- package/src/commands/ServerToClient/AddSortCommand.d.ts +9 -9
- package/src/commands/ServerToClient/ClientRefreshCommand.d.ts +7 -7
- package/src/commands/ServerToClient/ClientTargetedCommandBase.d.ts +12 -12
- package/src/commands/ServerToClient/EnhancedVerifyCommand.d.ts +13 -13
- package/src/commands/ServerToClient/OpenURLCommand.d.ts +21 -21
- package/src/commands/ServerToClient/ResetLocateCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResetRangeCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResetSortCommand.d.ts +6 -6
- package/src/commands/ServerToClient/ResultCommand.d.ts +10 -10
- package/src/commands/ServerToClient/VerifyCommand.d.ts +17 -17
- package/src/commands/ServerToClient/XMLBasedCommandBuilder.d.ts +11 -11
- package/src/communications/IConnectionStateManager.d.ts +4 -4
- package/src/communications/InteractiveCommunicationsFailureHandler.d.ts +6 -6
- package/src/data/DataSourceIdKey.d.ts +2 -2
- package/src/data/DataView.d.ts +162 -162
- package/src/data/DataViewBase.d.ts +12 -12
- package/src/data/DataviewManager.d.ts +14 -14
- package/src/data/DataviewManagerBase.d.ts +11 -11
- package/src/data/DvCache.d.ts +15 -15
- package/src/data/Field.d.ts +103 -103
- package/src/data/FieldBase.d.ts +23 -23
- package/src/data/FieldsTable.d.ts +27 -27
- package/src/data/IRecordsTable.d.ts +7 -7
- package/src/data/Key.d.ts +15 -15
- package/src/data/Record.d.ts +157 -156
- package/src/data/RecordOutOfDataViewException.d.ts +10 -10
- package/src/data/RecordsTable.d.ts +38 -38
- package/src/data/TaskTransactionManager.d.ts +17 -17
- package/src/data/XMLBasedDcValuesBuilder.d.ts +11 -11
- package/src/enums.d.ts +21 -21
- package/src/env/EnvVariablesTable.d.ts +17 -17
- package/src/env/Environment.d.ts +118 -118
- package/src/env/ILanguageData.d.ts +3 -3
- package/src/env/LanguageData.d.ts +20 -20
- package/src/env/MirrorString.d.ts +15 -15
- package/src/event/ActionManager.d.ts +14 -14
- package/src/event/Event.d.ts +79 -79
- package/src/event/EventHandler.d.ts +66 -66
- package/src/event/EventHandlerPosition.d.ts +25 -25
- package/src/event/EventsManager.d.ts +205 -204
- package/src/event/IEventsManager.d.ts +77 -77
- package/src/event/RunTimeEvent.d.ts +126 -123
- package/src/event/RunTimeEventBase.d.ts +5 -5
- package/src/event/UserEventsTable.d.ts +11 -11
- package/src/exp/ExpTable.d.ts +11 -11
- package/src/exp/Expression.d.ts +37 -37
- package/src/exp/ExpressionDict.d.ts +12 -12
- package/src/exp/ExpressionEvaluator.d.ts +198 -198
- package/src/exp/ExpressionLocalJpn.d.ts +18 -18
- package/src/exp/GlobalParamsTable.d.ts +19 -19
- package/src/exp/YesNoExp.d.ts +9 -9
- package/src/gui/CreatedFormVector.d.ts +10 -10
- package/src/gui/FormsTable.d.ts +15 -15
- package/src/gui/MgControl.d.ts +60 -60
- package/src/gui/MgForm.d.ts +96 -93
- package/src/http/HttpManager.d.ts +25 -25
- package/src/http/client/HttpClientAsync.d.ts +16 -16
- package/src/http/client/HttpClientBase.d.ts +30 -30
- package/src/http/client/HttpClientEvents.d.ts +18 -18
- package/src/http/client/HttpClientSync.d.ts +17 -17
- package/src/http/client/HttpUtility.d.ts +10 -10
- package/src/http/client/ICommunicationsFailureHandler.d.ts +5 -5
- package/src/remote/AddUserLocateRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/AddUserRangeRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/AddUserSortRemoteDataViewCommand.d.ts +8 -8
- package/src/remote/RemoteCommandsProcessor.d.ts +51 -51
- package/src/remote/RemoteControlItemsRefreshCommand.d.ts +8 -8
- package/src/remote/RemoteDataViewCommandBase.d.ts +10 -10
- package/src/remote/RemoteDataViewCommandFactory.d.ts +6 -6
- package/src/remote/RemoteDataViewCommandUpdateNonModifiable.d.ts +8 -8
- package/src/remote/RemoteDataviewManager.d.ts +9 -9
- package/src/remote/RemoteInitDataViewCommand.d.ts +7 -7
- package/src/remote/ResetUserLocateRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ResetUserRangeRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ResetUserSortRemoteDataviewCommand.d.ts +7 -7
- package/src/remote/ServerError.d.ts +16 -16
- package/src/remote/SetTransactionStateRemoteDataViewCommand.d.ts +8 -8
- package/src/rt/Argument.d.ts +36 -36
- package/src/rt/ArgumentsList.d.ts +24 -24
- package/src/rt/Boundary.d.ts +27 -27
- package/src/rt/CompMainPrgTable.d.ts +10 -10
- package/src/rt/DataviewHeaderBase.d.ts +34 -34
- package/src/rt/DataviewHeaderFactory.d.ts +5 -5
- package/src/rt/DataviewHeaders.d.ts +12 -12
- package/src/rt/DataviewHeadersSaxHandler.d.ts +10 -10
- package/src/rt/ExecutionStack.d.ts +22 -22
- package/src/rt/ExecutionStackEntry.d.ts +7 -7
- package/src/rt/HandlersTable.d.ts +19 -19
- package/src/rt/IDataSourceViewDefinition.d.ts +6 -6
- package/src/rt/IDataviewHeader.d.ts +10 -10
- package/src/rt/IResultValue.d.ts +4 -4
- package/src/rt/LastFocusedManager.d.ts +23 -23
- package/src/rt/Operation.d.ts +97 -97
- package/src/rt/OperationTable.d.ts +15 -15
- package/src/rt/Recompute.d.ts +41 -41
- package/src/rt/RecomputeTable.d.ts +9 -9
- package/src/rt/RemoteDataviewHeader.d.ts +14 -14
- package/src/rt/ResultValue.d.ts +7 -7
- package/src/rt/TableCache.d.ts +29 -29
- package/src/rt/TableCacheManager.d.ts +10 -10
- package/src/rt/Transaction.d.ts +23 -23
- package/src/security/UserDetails.d.ts +16 -16
- package/src/tasks/IMGDataCollection.d.ts +26 -26
- package/src/tasks/MGData.d.ts +63 -63
- package/src/tasks/MGDataCollection.d.ts +42 -42
- package/src/tasks/RCTimer.d.ts +13 -13
- package/src/tasks/RemoteTaskService.d.ts +16 -16
- package/src/tasks/Task.d.ts +312 -312
- package/src/tasks/TaskBase.d.ts +123 -123
- package/src/tasks/TaskServiceBase.d.ts +16 -16
- package/src/tasks/TasksTable.d.ts +21 -21
- package/src/tasks/sort/Sort.d.ts +4 -4
- package/src/tasks/sort/SortCollection.d.ts +11 -11
- package/src/util/ConstUtils.d.ts +3 -3
- package/src/util/FlowMonitorQueue.d.ts +70 -70
- package/src/util/HeapSort.d.ts +6 -6
- package/src/util/IMirrorXML.d.ts +6 -6
- package/src/util/IServerConfig.d.ts +11 -11
- package/src/util/MgBlockingQueue.d.ts +5 -5
- package/src/util/MgPriorityBlockingQueue.d.ts +17 -17
- package/src/util/MgPriorityQueue.d.ts +13 -13
- package/src/util/ParamParseResult.d.ts +6 -6
- package/src/util/PrmMap.d.ts +28 -28
- package/src/util/ReturnResult.d.ts +18 -18
- package/src/util/ReturnResultBase.d.ts +11 -11
- package/src/util/Scrambler.d.ts +10 -10
- package/src/util/UniqueIDUtils.d.ts +4 -4
- package/src/util/cookie.service.d.ts +8 -8
- package/esm2020/src/AccessHelper.mjs +0 -9
- package/esm2020/src/ClientManager.mjs +0 -399
- package/esm2020/src/CommandsProcessorBase.mjs +0 -58
- package/esm2020/src/CommandsTable.mjs +0 -162
- package/esm2020/src/ConstInterface.mjs +0 -516
- package/esm2020/src/FlowMonitorInterface.mjs +0 -16
- package/esm2020/src/GUIManager.mjs +0 -62
- package/esm2020/src/GlobalCommandsManager.mjs +0 -34
- package/esm2020/src/GuiEventsProcessor.mjs +0 -154
- package/esm2020/src/ServerConfig.mjs +0 -117
- package/esm2020/src/bridge/MagicBridge.mjs +0 -41
- package/esm2020/src/commands/ClientOriginatedCommandTaskTag.mjs +0 -11
- package/esm2020/src/commands/ClientToServer/BrowserEscEventCommand.mjs +0 -23
- package/esm2020/src/commands/ClientToServer/ColumnSortEventCommand.mjs +0 -26
- package/esm2020/src/commands/ClientToServer/CommandFactory.mjs +0 -260
- package/esm2020/src/commands/ClientToServer/CommandSerializationHelper.mjs +0 -69
- package/esm2020/src/commands/ClientToServer/ComputeEventCommand.mjs +0 -23
- package/esm2020/src/commands/ClientToServer/DataViewOutputCommand.mjs +0 -13
- package/esm2020/src/commands/ClientToServer/EvaluateCommand.mjs +0 -36
- package/esm2020/src/commands/ClientToServer/ExecOperCommand.mjs +0 -67
- package/esm2020/src/commands/ClientToServer/FetchDataControlValuesEventCommand.mjs +0 -22
- package/esm2020/src/commands/ClientToServer/IndexChangeEventCommand.mjs +0 -21
- package/esm2020/src/commands/ClientToServer/IniputForceWriteCommand.mjs +0 -23
- package/esm2020/src/commands/ClientToServer/RecomputeCommand.mjs +0 -27
- package/esm2020/src/commands/ClientToServer/RefreshEventCommand.mjs +0 -27
- package/esm2020/src/commands/ClientToServer/RefreshScreenEventCommand.mjs +0 -24
- package/esm2020/src/commands/ClientToServer/RollbackEventCommand.mjs +0 -39
- package/esm2020/src/commands/ClientToServer/SelectProgramCommand.mjs +0 -15
- package/esm2020/src/commands/ClientToServer/SubformOpenEventCommand.mjs +0 -21
- package/esm2020/src/commands/ClientToServer/SubformRefreshEventCommand.mjs +0 -24
- package/esm2020/src/commands/ClientToServer/TransactionCommand.mjs +0 -28
- package/esm2020/src/commands/ClientToServer/WriteMessageToServerLogCommand.mjs +0 -18
- package/esm2020/src/commands/DataViewCommandBase.mjs +0 -10
- package/esm2020/src/commands/IClientTargetedCommand.mjs +0 -9
- package/esm2020/src/commands/ServerToClient/AbortCommand.mjs +0 -65
- package/esm2020/src/commands/ServerToClient/ClientRefreshCommand.mjs +0 -25
- package/esm2020/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +0 -27
- package/esm2020/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +0 -45
- package/esm2020/src/commands/ServerToClient/OpenURLCommand.mjs +0 -221
- package/esm2020/src/commands/ServerToClient/ResultCommand.mjs +0 -37
- package/esm2020/src/commands/ServerToClient/VerifyCommand.mjs +0 -83
- package/esm2020/src/communications/InteractiveCommunicationsFailureHandler.mjs +0 -17
- package/esm2020/src/data/DataView.mjs +0 -1610
- package/esm2020/src/data/DataviewManager.mjs +0 -28
- package/esm2020/src/data/DataviewManagerBase.mjs +0 -15
- package/esm2020/src/data/DvCache.mjs +0 -67
- package/esm2020/src/data/Field.mjs +0 -646
- package/esm2020/src/data/FieldBase.mjs +0 -18
- package/esm2020/src/data/FieldsTable.mjs +0 -103
- package/esm2020/src/data/Record.mjs +0 -846
- package/esm2020/src/data/RecordsTable.mjs +0 -267
- package/esm2020/src/env/EnvVariablesTable.mjs +0 -340
- package/esm2020/src/env/Environment.mjs +0 -489
- package/esm2020/src/env/LanguageData.mjs +0 -226
- package/esm2020/src/event/ActionManager.mjs +0 -91
- package/esm2020/src/event/Event.mjs +0 -1333
- package/esm2020/src/event/EventHandler.mjs +0 -766
- package/esm2020/src/event/EventHandlerPosition.mjs +0 -204
- package/esm2020/src/event/EventsManager.mjs +0 -2975
- package/esm2020/src/event/RunTimeEvent.mjs +0 -392
- package/esm2020/src/event/UserEventsTable.mjs +0 -47
- package/esm2020/src/exp/ExpTable.mjs +0 -59
- package/esm2020/src/exp/Expression.mjs +0 -200
- package/esm2020/src/exp/ExpressionDict.mjs +0 -727
- package/esm2020/src/exp/ExpressionEvaluator.mjs +0 -4208
- package/esm2020/src/exp/ExpressionLocalJpn.mjs +0 -314
- package/esm2020/src/exp/YesNoExp.mjs +0 -36
- package/esm2020/src/gui/CreatedFormVector.mjs +0 -23
- package/esm2020/src/gui/FormsTable.mjs +0 -66
- package/esm2020/src/gui/MgControl.mjs +0 -353
- package/esm2020/src/gui/MgForm.mjs +0 -1181
- package/esm2020/src/http/HttpManager.mjs +0 -97
- package/esm2020/src/http/client/HttpClientAsync.mjs +0 -67
- package/esm2020/src/http/client/HttpClientEvents.mjs +0 -39
- package/esm2020/src/http/client/HttpClientSync.mjs +0 -42
- package/esm2020/src/http/client/HttpUtility.mjs +0 -84
- package/esm2020/src/remote/RemoteCommandsProcessor.mjs +0 -880
- package/esm2020/src/remote/ServerError.mjs +0 -40
- package/esm2020/src/rt/Argument.mjs +0 -265
- package/esm2020/src/rt/ArgumentsList.mjs +0 -103
- package/esm2020/src/rt/Boundary.mjs +0 -152
- package/esm2020/src/rt/CompMainPrgTable.mjs +0 -65
- package/esm2020/src/rt/DataviewHeaderBase.mjs +0 -96
- package/esm2020/src/rt/DataviewHeaders.mjs +0 -53
- package/esm2020/src/rt/LastFocusedManager.mjs +0 -67
- package/esm2020/src/rt/Operation.mjs +0 -735
- package/esm2020/src/rt/OperationTable.mjs +0 -67
- package/esm2020/src/rt/Recompute.mjs +0 -355
- package/esm2020/src/rt/ResultValue.mjs +0 -12
- package/esm2020/src/rt/TableCache.mjs +0 -177
- package/esm2020/src/rt/TableCacheManager.mjs +0 -67
- package/esm2020/src/rt/Transaction.mjs +0 -53
- package/esm2020/src/security/UserDetails.mjs +0 -71
- package/esm2020/src/tasks/MGData.mjs +0 -552
- package/esm2020/src/tasks/MGDataCollection.mjs +0 -252
- package/esm2020/src/tasks/RCTimer.mjs +0 -63
- package/esm2020/src/tasks/Task.mjs +0 -2496
- package/esm2020/src/tasks/TaskBase.mjs +0 -87
- package/esm2020/src/tasks/TasksTable.mjs +0 -80
- package/esm2020/src/tasks/sort/Sort.mjs +0 -7
- package/esm2020/src/util/FlowMonitorQueue.mjs +0 -453
- package/esm2020/src/util/MgPriorityBlockingQueue.mjs +0 -74
- package/esm2020/src/util/MgPriorityQueue.mjs +0 -66
- package/esm2020/src/util/PrmMap.mjs +0 -151
- package/esm2020/src/util/ReturnResult.mjs +0 -46
- package/esm2020/src/util/ReturnResultBase.mjs +0 -18
- package/esm2020/src/util/Scrambler.mjs +0 -89
- package/esm2020/src/util/UniqueIDUtils.mjs +0 -12
- package/fesm2015/magic-xpa-engine.mjs +0 -30837
- package/fesm2015/magic-xpa-engine.mjs.map +0 -1
- package/fesm2020/magic-xpa-engine.mjs.map +0 -1
@@ -1,252 +0,0 @@
|
|
1
|
-
import { ApplicationException, Debug, List } from "@magic-xpa/mscorelib";
|
2
|
-
import { InternalInterface, XMLConstants } from "@magic-xpa/utils";
|
3
|
-
import { Commands } from "@magic-xpa/gui";
|
4
|
-
import { FlowMonitorQueue } from "../util/FlowMonitorQueue";
|
5
|
-
import { LastFocusedManager } from "../rt/LastFocusedManager";
|
6
|
-
import { CommandsProcessorBase_SendingInstruction, CommandsProcessorBase_SessionStage } from "../CommandsProcessorBase";
|
7
|
-
import { CommandsProcessorManager } from "../CommandsProcessorManager";
|
8
|
-
import { AccessHelper } from "../AccessHelper";
|
9
|
-
import { ConstInterface } from "../ConstInterface";
|
10
|
-
export class MGDataCollection {
|
11
|
-
constructor() {
|
12
|
-
this._mgDataTab = new List();
|
13
|
-
this._iteratorMgdIdx = 0;
|
14
|
-
this._iteratorTaskIdx = 0;
|
15
|
-
this.currMgdID = 0;
|
16
|
-
this.StartupMgData = null;
|
17
|
-
this._lastRouteSentToServer = "";
|
18
|
-
}
|
19
|
-
GetTaskByID(id) {
|
20
|
-
let task = null;
|
21
|
-
for (let i = 0; i < this.getSize() && task == null; i++) {
|
22
|
-
let mgd = this.getMGData(i);
|
23
|
-
if (mgd == null)
|
24
|
-
continue;
|
25
|
-
task = mgd.getTask(id);
|
26
|
-
}
|
27
|
-
return task;
|
28
|
-
}
|
29
|
-
static get Instance() {
|
30
|
-
if (MGDataCollection._instance == null) {
|
31
|
-
if (MGDataCollection._instance == null)
|
32
|
-
MGDataCollection._instance = new MGDataCollection();
|
33
|
-
}
|
34
|
-
return MGDataCollection._instance;
|
35
|
-
}
|
36
|
-
async addMGData(mgd, idx, isStartup) {
|
37
|
-
if (idx < 0 || idx > this.getSize())
|
38
|
-
throw new ApplicationException("Illegal MGData requested");
|
39
|
-
if (isStartup)
|
40
|
-
this.StartupMgData = mgd;
|
41
|
-
if (idx === this.getSize())
|
42
|
-
this._mgDataTab.push(mgd);
|
43
|
-
else {
|
44
|
-
let oldMgd = this.getMGData(idx);
|
45
|
-
if (oldMgd != null && !oldMgd.IsAborting) {
|
46
|
-
await oldMgd.getFirstTask().stop();
|
47
|
-
oldMgd.abort();
|
48
|
-
}
|
49
|
-
this._mgDataTab.set_Item(idx, mgd);
|
50
|
-
}
|
51
|
-
}
|
52
|
-
getMGData(idx) {
|
53
|
-
let mgd = null;
|
54
|
-
if (idx >= 0 && idx < this.getSize()) {
|
55
|
-
mgd = this._mgDataTab.get_Item(idx);
|
56
|
-
}
|
57
|
-
return mgd;
|
58
|
-
}
|
59
|
-
getAvailableIdx() {
|
60
|
-
let i;
|
61
|
-
for (i = 0; i < this._mgDataTab.length; i = i + 1) {
|
62
|
-
if (this._mgDataTab.get_Item(i) === null)
|
63
|
-
break;
|
64
|
-
}
|
65
|
-
return i;
|
66
|
-
}
|
67
|
-
getMgDataIdx(mgd) {
|
68
|
-
return this._mgDataTab.indexOf(mgd);
|
69
|
-
}
|
70
|
-
deleteMGDataTree(index) {
|
71
|
-
let mgd, childMgd;
|
72
|
-
let i;
|
73
|
-
if (index < 0 || index >= this.getSize())
|
74
|
-
throw new ApplicationException("in deleteMGData() illegal index: " + index);
|
75
|
-
mgd = this.getMGData(index);
|
76
|
-
if (mgd != null) {
|
77
|
-
if (index > 0 && mgd.getParentMGdata() != null) {
|
78
|
-
this._mgDataTab.set_Item(index, null);
|
79
|
-
}
|
80
|
-
LastFocusedManager.Instance.clean(index);
|
81
|
-
for (i = 0; i < this.getSize(); i++) {
|
82
|
-
childMgd = this.getMGData(i);
|
83
|
-
if (childMgd != null && childMgd.getParentMGdata() === mgd)
|
84
|
-
this.deleteMGDataTree(i);
|
85
|
-
}
|
86
|
-
}
|
87
|
-
}
|
88
|
-
getCurrMGData() {
|
89
|
-
return this.getMGData(this.currMgdID);
|
90
|
-
}
|
91
|
-
GetMainProgByCtlIdx(contextIDOrCtlIdx, ctlIdx) {
|
92
|
-
if (arguments.length === 2)
|
93
|
-
return this.GetMainProgByCtlIdx_0(ctlIdx);
|
94
|
-
else
|
95
|
-
return this.GetMainProgByCtlIdx_1(contextIDOrCtlIdx);
|
96
|
-
}
|
97
|
-
GetMainProgByCtlIdx_0(ctlIdx) {
|
98
|
-
let task = null;
|
99
|
-
for (let i = 0; i < this.getSize() && task == null; i++) {
|
100
|
-
let mgd = this.getMGData(i);
|
101
|
-
if (mgd == null)
|
102
|
-
continue;
|
103
|
-
task = mgd.getMainProg(ctlIdx);
|
104
|
-
}
|
105
|
-
return task;
|
106
|
-
}
|
107
|
-
GetMainProgByCtlIdx_1(ctlIdx) {
|
108
|
-
return this.GetMainProgByCtlIdx(-1, ctlIdx);
|
109
|
-
}
|
110
|
-
startTasksIteration() {
|
111
|
-
this._iteratorMgdIdx = 0;
|
112
|
-
this._iteratorTaskIdx = 0;
|
113
|
-
}
|
114
|
-
getNextTask() {
|
115
|
-
let task;
|
116
|
-
let mgd = this.getMGData(this._iteratorMgdIdx);
|
117
|
-
if (mgd == null)
|
118
|
-
return null;
|
119
|
-
task = mgd.getTask(this._iteratorTaskIdx);
|
120
|
-
if (task == null) {
|
121
|
-
do {
|
122
|
-
this._iteratorMgdIdx++;
|
123
|
-
} while (this._iteratorMgdIdx < this.getSize() && this.getMGData(this._iteratorMgdIdx) == null);
|
124
|
-
this._iteratorTaskIdx = 0;
|
125
|
-
return this.getNextTask();
|
126
|
-
}
|
127
|
-
this._iteratorTaskIdx++;
|
128
|
-
return task;
|
129
|
-
}
|
130
|
-
async buildXML(message, serializeTasks) {
|
131
|
-
let lastRoute = Commands.getLastRoute();
|
132
|
-
if (lastRoute !== this._lastRouteSentToServer) {
|
133
|
-
message.Append(XMLConstants.START_TAG + ConstInterface.MG_TAG_LAST_ROUTE);
|
134
|
-
message.Append(" " + ConstInterface.MG_ATTR_ENV_VALUE + "=\"" + lastRoute + "\"");
|
135
|
-
message.Append(XMLConstants.TAG_TERM);
|
136
|
-
this._lastRouteSentToServer = lastRoute;
|
137
|
-
}
|
138
|
-
for (let i = 0; i < this.getSize(); i = i + 1) {
|
139
|
-
let mgd = this.getMGData(i);
|
140
|
-
if (mgd !== null && !mgd.IsAborting) {
|
141
|
-
await mgd.buildXML(message, serializeTasks);
|
142
|
-
}
|
143
|
-
}
|
144
|
-
FlowMonitorQueue.Instance.buildXML(message);
|
145
|
-
}
|
146
|
-
getSize() {
|
147
|
-
return this._mgDataTab.length;
|
148
|
-
}
|
149
|
-
async processRecovery() {
|
150
|
-
for (let i = 0; i < this.getSize(); i = i + 1) {
|
151
|
-
let mgd = this.getMGData(i);
|
152
|
-
if (mgd !== null) {
|
153
|
-
for (let j = 0; j < mgd.getTasksCount(); j = j + 1) {
|
154
|
-
let task = mgd.getTask(j);
|
155
|
-
if (task !== null)
|
156
|
-
await task.DataView.processRecovery();
|
157
|
-
}
|
158
|
-
}
|
159
|
-
}
|
160
|
-
}
|
161
|
-
getTriggeredTasks(triggeringTask) {
|
162
|
-
let list = new List();
|
163
|
-
let task;
|
164
|
-
let tag = triggeringTask.getTaskTag();
|
165
|
-
this.startTasksIteration();
|
166
|
-
while ((task = this.getNextTask()) !== null) {
|
167
|
-
if (tag === task.PreviouslyActiveTaskId)
|
168
|
-
list.push(task);
|
169
|
-
}
|
170
|
-
return list;
|
171
|
-
}
|
172
|
-
GetTasks(p) {
|
173
|
-
let taskList = new List();
|
174
|
-
this._mgDataTab.forEach(mgd => {
|
175
|
-
if (mgd !== null && !mgd.IsAborting) {
|
176
|
-
for (let i = 0; i < mgd.getTasksCount(); i = i + 1) {
|
177
|
-
let task = mgd.getTask(i);
|
178
|
-
if (task !== null && p(task)) {
|
179
|
-
taskList.push(task);
|
180
|
-
}
|
181
|
-
}
|
182
|
-
}
|
183
|
-
});
|
184
|
-
return taskList;
|
185
|
-
}
|
186
|
-
getTaskIdById(taskId) {
|
187
|
-
let task = this.GetTaskByID(taskId);
|
188
|
-
let tag = taskId;
|
189
|
-
if (task != null)
|
190
|
-
tag = task.getTaskTag();
|
191
|
-
return tag;
|
192
|
-
}
|
193
|
-
GetTopMostForms() {
|
194
|
-
let task;
|
195
|
-
let forms = new List();
|
196
|
-
this.startTasksIteration();
|
197
|
-
while ((task = this.getNextTask()) != null) {
|
198
|
-
let form = task.getForm();
|
199
|
-
if (!task.isAborting() && form != null && !form.isSubForm())
|
200
|
-
forms.push(form);
|
201
|
-
}
|
202
|
-
return forms;
|
203
|
-
}
|
204
|
-
GetMGDataForStartupProgram() {
|
205
|
-
Debug.Assert(this._mgDataTab.length > 0, "The main program must be processed before invoking this method.");
|
206
|
-
let mainProgByCtlIdx = this.GetMainProgByCtlIdx(0);
|
207
|
-
Debug.Assert(mainProgByCtlIdx !== null, "The main program must be processed before invoking this method.");
|
208
|
-
Debug.Assert(mainProgByCtlIdx.getMgdID() === 0, "Main program is expected to be on MGData 0. Is this an error?");
|
209
|
-
return this._mgDataTab.get_Item(0);
|
210
|
-
}
|
211
|
-
async execRequestWithSubformRecordCycle(cmdsToServer, cmdToServer, exp) {
|
212
|
-
this.cleanDoSubformPrefixSuffix();
|
213
|
-
cmdsToServer.Add(cmdToServer);
|
214
|
-
if (!(MGDataCollection.Instance.StartupMgData.getFirstTask().InEndTask && MGDataCollection.Instance.StartupMgData.getFirstTask().ClosingFormUI))
|
215
|
-
await CommandsProcessorManager.GetCommandsProcessor().Execute(CommandsProcessorBase_SendingInstruction.TASKS_AND_COMMANDS, CommandsProcessorBase_SessionStage.NORMAL, exp);
|
216
|
-
await this.execAllSubformRecordCycle();
|
217
|
-
}
|
218
|
-
cleanDoSubformPrefixSuffix() {
|
219
|
-
for (let i = 0; i < this.getSize(); i++) {
|
220
|
-
let mgd = this.getMGData(i);
|
221
|
-
if (mgd === null || mgd.IsAborting)
|
222
|
-
continue;
|
223
|
-
let tasksCount = mgd.getTasksCount();
|
224
|
-
for (let j = 0; j < tasksCount; j++) {
|
225
|
-
let task = mgd.getTask(j);
|
226
|
-
task.DoSubformPrefixSuffix = false;
|
227
|
-
}
|
228
|
-
}
|
229
|
-
}
|
230
|
-
async execAllSubformRecordCycle() {
|
231
|
-
for (let i = 0; i < this.getSize(); i = i + 1) {
|
232
|
-
let mgd = this.getMGData(i);
|
233
|
-
if (mgd === null || mgd.IsAborting)
|
234
|
-
continue;
|
235
|
-
let tasksCount = mgd.getTasksCount();
|
236
|
-
for (let j = 0; j < tasksCount; j = j + 1) {
|
237
|
-
let task = mgd.getTask(j);
|
238
|
-
if (task.IsSubForm && task.DoSubformPrefixSuffix) {
|
239
|
-
task.PerformParentRecordPrefix = false;
|
240
|
-
AccessHelper.eventsManager.pushNewExecStacks();
|
241
|
-
await AccessHelper.eventsManager.handleInternalEventWithTaskAndSubformRefresh(task, InternalInterface.MG_ACT_REC_PREFIX, true);
|
242
|
-
if (!AccessHelper.eventsManager.GetStopExecutionFlag())
|
243
|
-
await AccessHelper.eventsManager.handleInternalEventWithTask(task, InternalInterface.MG_ACT_REC_SUFFIX);
|
244
|
-
AccessHelper.eventsManager.popNewExecStacks();
|
245
|
-
task.PerformParentRecordPrefix = true;
|
246
|
-
}
|
247
|
-
}
|
248
|
-
}
|
249
|
-
}
|
250
|
-
}
|
251
|
-
MGDataCollection._instance = null;
|
252
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTUdEYXRhQ29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvdGFza3MvTUdEYXRhQ29sbGVjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBZ0IsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RixPQUFPLEVBQUMsaUJBQWlCLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFDLFFBQVEsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUsxRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsd0NBQXdDLEVBQUUsa0NBQWtDLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUd0SCxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNyRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBTWpELE1BQU0sT0FBTyxnQkFBZ0I7SUFlM0I7UUFiUSxlQUFVLEdBQWlCLElBQUksSUFBSSxFQUFVLENBQUM7UUFHOUMsb0JBQWUsR0FBVyxDQUFDLENBQUM7UUFDNUIscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBQ3JDLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFDdEIsa0JBQWEsR0FBVyxJQUFJLENBQUM7UUFFckIsMkJBQXNCLEdBQVcsRUFBRSxDQUFDO0lBTTVDLENBQUM7SUFNRCxXQUFXLENBQUMsRUFBVTtRQUNwQixJQUFJLElBQUksR0FBUyxJQUFJLENBQUM7UUFFdEIsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9ELElBQUksR0FBRyxHQUFXLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFcEMsSUFBSSxHQUFHLElBQUksSUFBSTtnQkFFYixTQUFTO1lBRVgsSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFLRCxNQUFNLEtBQUssUUFBUTtRQUNqQixJQUFJLGdCQUFnQixDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDcEMsSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLElBQUksSUFBSTtnQkFDcEMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztTQUN6RDtRQUVELE9BQU8sZ0JBQWdCLENBQUMsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFPRCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQVcsRUFBRSxHQUFXLEVBQUUsU0FBa0I7UUFDMUQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2pDLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRTdELElBQUksU0FBUztZQUNYLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1FBRTNCLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDdkI7WUFDSCxJQUFJLE1BQU0sR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXpDLElBQUksTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7Z0JBQ3hDLE1BQU0sTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNuQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDaEI7WUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDO0lBS0QsU0FBUyxDQUFDLEdBQVc7UUFDbkIsSUFBSSxHQUFHLEdBQVcsSUFBSSxDQUFDO1FBRXZCLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3BDLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNyQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUtELGVBQWU7UUFDYixJQUFJLENBQVMsQ0FBQztRQUVkLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDakQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJO2dCQUN0QyxNQUFNO1NBQ1Q7UUFFRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFNRCxZQUFZLENBQUMsR0FBVztRQUN0QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFPRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzVCLElBQUksR0FBVyxFQUFFLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQVMsQ0FBQztRQUVkLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN0QyxNQUFNLElBQUksb0JBQW9CLENBQUMsbUNBQW1DLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFFOUUsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO1lBR2YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxJQUFJLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQzthQUN2QztZQUNELGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFekMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ25DLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixJQUFJLFFBQVEsSUFBSSxJQUFJLElBQUksUUFBUSxDQUFDLGVBQWUsRUFBRSxLQUFLLEdBQUc7b0JBQ3hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM1QjtTQUNGO0lBQ0gsQ0FBQztJQU1ELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxpQkFBc0IsRUFBRSxNQUFlO1FBQ3pELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDOztZQUUxQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFPTyxxQkFBcUIsQ0FBRSxNQUFjO1FBQzNDLElBQUksSUFBSSxHQUFTLElBQUksQ0FBQztRQUV0QixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDL0QsSUFBSSxHQUFHLEdBQVcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVwQyxJQUFJLEdBQUcsSUFBSSxJQUFJO2dCQUViLFNBQVM7WUFFWCxJQUFJLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNoQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE1BQWM7UUFDMUMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUtELG1CQUFtQjtRQUNqQixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFLRCxXQUFXO1FBQ1QsSUFBSSxJQUFVLENBQUM7UUFFZixJQUFJLEdBQUcsR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RCxJQUFJLEdBQUcsSUFBSSxJQUFJO1lBQ2IsT0FBTyxJQUFJLENBQUM7UUFFZCxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUxQyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUU7WUFDaEIsR0FBRztnQkFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7YUFDeEIsUUFDTSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxJQUFJLEVBQUU7WUFDOUYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMzQjtRQUVELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQVFELEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBc0IsRUFBRSxjQUF1QjtRQUM1RCxJQUFJLFNBQVMsR0FBVyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFaEQsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQzdDLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsR0FBRyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMxRSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxjQUFjLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxHQUFHLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNsRixPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV0QyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsU0FBUyxDQUFDO1NBQ3pDO1FBRUQsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNyRCxJQUFJLEdBQUcsR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXBDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUU7Z0JBQ25DLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7YUFDN0M7U0FDRjtRQUVELGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQVFELE9BQU87UUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFLRCxLQUFLLENBQUMsZUFBZTtRQUNuQixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JELElBQUksR0FBRyxHQUFXLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFcEMsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO2dCQUNoQixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMxRCxJQUFJLElBQUksR0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoQyxJQUFJLElBQUksS0FBSyxJQUFJO3dCQUNmLE1BQWlCLElBQUksQ0FBQyxRQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7aUJBQ3JEO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFPRCxpQkFBaUIsQ0FBQyxjQUFvQjtRQUNwQyxJQUFJLElBQUksR0FBZSxJQUFJLElBQUksRUFBUSxDQUFDO1FBQ3hDLElBQUksSUFBVSxDQUFDO1FBQ2YsSUFBSSxHQUFHLEdBQVcsY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRTlDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRTNCLE9BQU8sQ0FBQyxJQUFJLEdBQVMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2pELElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxzQkFBc0I7Z0JBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFPRCxRQUFRLENBQUMsQ0FBeUI7UUFDaEMsSUFBSSxRQUFRLEdBQWUsSUFBSSxJQUFJLEVBQVEsQ0FBQztRQUU1QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1QixJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFO2dCQUNuQyxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO29CQUMxRCxJQUFJLElBQUksR0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoQyxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUM1QixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNyQjtpQkFDRjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBU0QsYUFBYSxDQUFDLE1BQWM7UUFHMUIsSUFBSSxJQUFJLEdBQVUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQyxJQUFJLEdBQUcsR0FBVyxNQUFNLENBQUM7UUFFekIsSUFBSSxJQUFJLElBQUksSUFBSTtZQUNkLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFMUIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBS0QsZUFBZTtRQUNiLElBQUksSUFBVSxDQUFDO1FBQ2YsSUFBSSxLQUFLLEdBQUcsSUFBSSxJQUFJLEVBQWMsQ0FBQztRQUduQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUUzQixPQUFPLENBQUMsSUFBSSxHQUFTLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLElBQUksRUFBRTtZQUNoRCxJQUFJLElBQUksR0FBZSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDekQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQU9ELDBCQUEwQjtRQUN4QixLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxpRUFBaUUsQ0FBQyxDQUFDO1FBRTVHLElBQUksZ0JBQWdCLEdBQVMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pELEtBQUssQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxFQUFFLGlFQUFpRSxDQUFDLENBQUM7UUFFM0csS0FBSyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsK0RBQStELENBQUMsQ0FBQztRQUdqSCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFTRCxLQUFLLENBQUMsaUNBQWlDLENBQUMsWUFBMkIsRUFBRSxXQUEyQixFQUFFLEdBQWU7UUFDL0csSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUc5QixJQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUM1SSxNQUFNLHdCQUF3QixDQUFDLG9CQUFvQixFQUFFLENBQUMsT0FBTyxDQUFDLHdDQUF3QyxDQUFDLGtCQUFrQixFQUFFLGtDQUFrQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztRQUU3SyxNQUFNLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFHRCwwQkFBMEI7UUFDeEIsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMvQyxJQUFJLEdBQUcsR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRXBDLElBQUksR0FBRyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsVUFBVTtnQkFDaEMsU0FBUztZQUVYLElBQUksVUFBVSxHQUFXLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM3QyxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUMzQyxJQUFJLElBQUksR0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO2FBQ3BDO1NBQ0Y7SUFDSCxDQUFDO0lBSUQsS0FBSyxDQUFDLHlCQUF5QjtRQUU3QixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3JELElBQUksR0FBRyxHQUFXLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFcEMsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxVQUFVO2dCQUNoQyxTQUFTO1lBRVgsSUFBSSxVQUFVLEdBQVcsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2pELElBQUksSUFBSSxHQUFTLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7b0JBR2hELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxLQUFLLENBQUM7b0JBQ3ZDLFlBQVksQ0FBQyxhQUFhLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFDL0MsTUFBTSxZQUFZLENBQUMsYUFBYSxDQUFDLDRDQUE0QyxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFFL0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUU7d0JBQ3BELE1BQU0sWUFBWSxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztvQkFFMUcsWUFBWSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO29CQUM5QyxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO2lCQUN2QzthQUNGO1NBQ0Y7SUFDSCxDQUFDOztBQTFhYywwQkFBUyxHQUFxQixJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FwcGxpY2F0aW9uRXhjZXB0aW9uLCBEZWJ1ZywgTGlzdCwgU3RyaW5nQnVpbGRlcn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7SW50ZXJuYWxJbnRlcmZhY2UsIFhNTENvbnN0YW50c30gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtDb21tYW5kcywgSVRhc2ssIE1nRm9ybUJhc2V9IGZyb20gXCJAbWFnaWMteHBhL2d1aVwiO1xyXG5pbXBvcnQge01HRGF0YX0gZnJvbSBcIi4vTUdEYXRhXCI7XHJcbmltcG9ydCB7Rmxvd01vbml0b3JRdWV1ZX0gZnJvbSBcIi4uL3V0aWwvRmxvd01vbml0b3JRdWV1ZVwiO1xyXG5pbXBvcnQge1Rhc2t9IGZyb20gXCIuL1Rhc2tcIlxyXG5pbXBvcnQge0RhdGFWaWV3fSBmcm9tIFwiLi4vZGF0YS9EYXRhVmlld1wiXHJcbmltcG9ydCB7SU1HRGF0YUNvbGxlY3Rpb259IGZyb20gXCIuL0lNR0RhdGFDb2xsZWN0aW9uXCI7XHJcbmltcG9ydCB7Q29tbWFuZHNUYWJsZX0gZnJvbSBcIi4uL0NvbW1hbmRzVGFibGVcIjtcclxuaW1wb3J0IHtMYXN0Rm9jdXNlZE1hbmFnZXJ9IGZyb20gXCIuLi9ydC9MYXN0Rm9jdXNlZE1hbmFnZXJcIjtcclxuaW1wb3J0IHtDb21tYW5kc1Byb2Nlc3NvckJhc2VfU2VuZGluZ0luc3RydWN0aW9uLCBDb21tYW5kc1Byb2Nlc3NvckJhc2VfU2Vzc2lvblN0YWdlfSBmcm9tIFwiLi4vQ29tbWFuZHNQcm9jZXNzb3JCYXNlXCI7XHJcbmltcG9ydCB7SUNsaWVudENvbW1hbmR9IGZyb20gXCIuLi9jb21tYW5kcy9JQ2xpZW50Q29tbWFuZFwiO1xyXG5pbXBvcnQge0V4cHJlc3Npb259IGZyb20gXCIuLi9leHAvRXhwcmVzc2lvblwiO1xyXG5pbXBvcnQge0NvbW1hbmRzUHJvY2Vzc29yTWFuYWdlcn0gZnJvbSBcIi4uL0NvbW1hbmRzUHJvY2Vzc29yTWFuYWdlclwiO1xyXG5pbXBvcnQge0FjY2Vzc0hlbHBlcn0gZnJvbSBcIi4uL0FjY2Vzc0hlbHBlclwiO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tIFwiLi4vQ29uc3RJbnRlcmZhY2VcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgdGhpcyBjbGFzcyBoYW5kbGVzIGEgdGFibGUgb2YgTUdEYXRhIG9iamVjdHNcclxuLy8vIDwvc3VtbWFyeT5cclxuLy8gQGR5bmFtaWNcclxuZXhwb3J0IGNsYXNzIE1HRGF0YUNvbGxlY3Rpb24gaW1wbGVtZW50cyBJTUdEYXRhQ29sbGVjdGlvbiB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBNR0RhdGFDb2xsZWN0aW9uID0gbnVsbDsgICAgICAvLyBzaW5nbGV0b25cclxuICBwcml2YXRlIF9tZ0RhdGFUYWI6IExpc3Q8TUdEYXRhPiA9IG5ldyBMaXN0PE1HRGF0YT4oKTtcclxuXHJcbiAgLy8gdGhlIGN1cnJlbnQgTUdEQVRBXHJcbiAgcHJpdmF0ZSBfaXRlcmF0b3JNZ2RJZHg6IG51bWJlciA9IDA7XHJcbiAgcHJpdmF0ZSBfaXRlcmF0b3JUYXNrSWR4OiBudW1iZXIgPSAwO1xyXG4gIGN1cnJNZ2RJRDogbnVtYmVyID0gMDtcclxuICBTdGFydHVwTWdEYXRhOiBNR0RhdGEgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIF9sYXN0Um91dGVTZW50VG9TZXJ2ZXI6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2luZ2xldG9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZWFyY2hlcyBhbGwgdGhlIE1HRGF0YSBvYmplY3RzIHRpbGwgaXQgZmluZHMgdGhlIHRhc2sgd2l0aCB0aGUgZ2l2ZW4gaWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaWRcIj50aGUgaWQgb2YgdGhlIHJlcXVlc3RlZCB0YXNrPC9wYXJhbT5cclxuICBHZXRUYXNrQnlJRChpZDogc3RyaW5nKTogSVRhc2sge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSBudWxsO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLmdldFNpemUoKSAmJiB0YXNrID09IG51bGw7IGkrKykge1xyXG4gICAgICBsZXQgbWdkOiBNR0RhdGEgPSB0aGlzLmdldE1HRGF0YShpKTtcclxuXHJcbiAgICAgIGlmIChtZ2QgPT0gbnVsbClcclxuICAgICAgLy8gdGhlIHdpbmRvdyBjb25uZWN0ZWQgdG8gdGhlIE1HRGF0YSB3YXMgY2xvc2VkXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICB0YXNrID0gbWdkLmdldFRhc2soaWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0YXNrO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzaW5nbGV0b25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogTUdEYXRhQ29sbGVjdGlvbiB7XHJcbiAgICBpZiAoTUdEYXRhQ29sbGVjdGlvbi5faW5zdGFuY2UgPT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChNR0RhdGFDb2xsZWN0aW9uLl9pbnN0YW5jZSA9PSBudWxsKVxyXG4gICAgICAgICAgTUdEYXRhQ29sbGVjdGlvbi5faW5zdGFuY2UgPSBuZXcgTUdEYXRhQ29sbGVjdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBNR0RhdGFDb2xsZWN0aW9uLl9pbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBhZGQgTUdEYXRhIG9iamVjdCB0byB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibWdkXCI+dGhlIE1HRGF0YSBvYmplY3QgdG8gYWRkPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImlkeFwiPnRoZSBpbmRleCB3aXRoaW4gdGhlIHRhYmxlIGZvciB0aGUgbmV3IE1HRGF0YTwvcGFyYW0+XHJcbiAgYXN5bmMgYWRkTUdEYXRhKG1nZDogTUdEYXRhLCBpZHg6IG51bWJlciwgaXNTdGFydHVwOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoaWR4IDwgMCB8fCBpZHggPiB0aGlzLmdldFNpemUoKSlcclxuICAgICAgdGhyb3cgbmV3IEFwcGxpY2F0aW9uRXhjZXB0aW9uKFwiSWxsZWdhbCBNR0RhdGEgcmVxdWVzdGVkXCIpO1xyXG5cclxuICAgIGlmIChpc1N0YXJ0dXApXHJcbiAgICAgIHRoaXMuU3RhcnR1cE1nRGF0YSA9IG1nZDtcclxuXHJcbiAgICBpZiAoaWR4ID09PSB0aGlzLmdldFNpemUoKSlcclxuICAgICAgdGhpcy5fbWdEYXRhVGFiLnB1c2gobWdkKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgb2xkTWdkOiBNR0RhdGEgPSB0aGlzLmdldE1HRGF0YShpZHgpO1xyXG5cclxuICAgICAgaWYgKG9sZE1nZCAhPSBudWxsICYmICFvbGRNZ2QuSXNBYm9ydGluZykge1xyXG4gICAgICAgIGF3YWl0IG9sZE1nZC5nZXRGaXJzdFRhc2soKS5zdG9wKCk7XHJcbiAgICAgICAgb2xkTWdkLmFib3J0KCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX21nRGF0YVRhYi5zZXRfSXRlbShpZHgsIG1nZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyBNR0RhdGEgb2JqZWN0IGJ5IGl0cyBpbmRleFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TUdEYXRhKGlkeDogbnVtYmVyKTogTUdEYXRhIHtcclxuICAgIGxldCBtZ2Q6IE1HRGF0YSA9IG51bGw7XHJcblxyXG4gICAgaWYgKGlkeCA+PSAwICYmIGlkeCA8IHRoaXMuZ2V0U2l6ZSgpKSB7XHJcbiAgICAgIG1nZCA9IHRoaXMuX21nRGF0YVRhYi5nZXRfSXRlbShpZHgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtZ2Q7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyBhdmFpbGFibGUgaW5kZXhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldEF2YWlsYWJsZUlkeCgpOiBudW1iZXIge1xyXG4gICAgbGV0IGk6IG51bWJlcjtcclxuXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5fbWdEYXRhVGFiLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGlmICh0aGlzLl9tZ0RhdGFUYWIuZ2V0X0l0ZW0oaSkgPT09IG51bGwpXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgaW5kZXggb2YgTUdEYXRhIGluIE1HRGF0YVRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1nZFwiPnRvIGZpbmQgaW50byB0YWJsZTwvcGFyYW0+XHJcbiAgZ2V0TWdEYXRhSWR4KG1nZDogTUdEYXRhKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9tZ0RhdGFUYWIuaW5kZXhPZihtZ2QpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGZyZWUgbWVtb3J5IGZyb20gdW5uZWVkZWQgTUdEYXRhIGFuZCBpdHMgZGVzY2VuZGFudCBNR0RzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImluZGV4XCI+bnVtYmVyIG9mIE1HRGF0YS93aW5kb3cgdG8gYmUgZGVsZXRlZDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBkZWxldGVNR0RhdGFUcmVlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGxldCBtZ2Q6IE1HRGF0YSwgY2hpbGRNZ2Q7XHJcbiAgICBsZXQgaTogbnVtYmVyO1xyXG5cclxuICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gdGhpcy5nZXRTaXplKCkpXHJcbiAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihcImluIGRlbGV0ZU1HRGF0YSgpIGlsbGVnYWwgaW5kZXg6IFwiICsgaW5kZXgpO1xyXG5cclxuICAgIG1nZCA9IHRoaXMuZ2V0TUdEYXRhKGluZGV4KTtcclxuICAgIGlmIChtZ2QgIT0gbnVsbCkge1xyXG4gICAgICAvLyBUT0RPOiB3aGVuIGNsb3NpbmcgYSBmcmFtZXNldCB3ZSBzaG91bGQgY2xlYXIgdGhlIE1HRHMgb2YgdGhlIGZyYW1lc1xyXG4gICAgICAvLyBmcm9tIHRoZSBNR0RUYWJcclxuICAgICAgaWYgKGluZGV4ID4gMCAmJiBtZ2QuZ2V0UGFyZW50TUdkYXRhKCkgIT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuX21nRGF0YVRhYi5zZXRfSXRlbShpbmRleCwgbnVsbCk7XHJcbiAgICAgIH1cclxuICAgICAgTGFzdEZvY3VzZWRNYW5hZ2VyLkluc3RhbmNlLmNsZWFuKGluZGV4KTtcclxuXHJcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmdldFNpemUoKTsgaSsrKSB7XHJcbiAgICAgICAgY2hpbGRNZ2QgPSB0aGlzLmdldE1HRGF0YShpKTtcclxuICAgICAgICBpZiAoY2hpbGRNZ2QgIT0gbnVsbCAmJiBjaGlsZE1nZC5nZXRQYXJlbnRNR2RhdGEoKSA9PT0gbWdkKVxyXG4gICAgICAgICAgdGhpcy5kZWxldGVNR0RhdGFUcmVlKGkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0IHRoZSBjdXJyZW50IE1HRGF0YVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBNR0RhdGEgb2JqZWN0PC9yZXR1cm5zPlxyXG4gIGdldEN1cnJNR0RhdGEoKTogTUdEYXRhIHtcclxuICAgIHJldHVybiB0aGlzLmdldE1HRGF0YSh0aGlzLmN1cnJNZ2RJRCk7XHJcbiAgfVxyXG5cclxuICBHZXRNYWluUHJvZ0J5Q3RsSWR4KGNvbnRleHRJRE9yQ3RsSWR4OiBhbnksIGN0bElkeD86IG51bWJlcik6IFRhc2sge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpXHJcbiAgICAgIHJldHVybiB0aGlzLkdldE1haW5Qcm9nQnlDdGxJZHhfMChjdGxJZHgpO1xyXG4gICAgZWxzZVxyXG4gICAgICByZXR1cm4gdGhpcy5HZXRNYWluUHJvZ0J5Q3RsSWR4XzEoY29udGV4dElET3JDdGxJZHgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNlYXJjaGVzIGFsbCB0aGUgTUdEYXRhIG9iamVjdHMgdGlsbCBpdCBmaW5kcyBhIG1haW4gcHJvZ3JhbSB3aXRoIHRoZSBnaXZlbiBjdGwgaWR4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNvbnRleHRJRFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdGxJZHhcIj50aGUgaWR4IG9mIHRoZSByZXF1ZXN0ZWQgY29tcG9uZW50PC9wYXJhbT5cclxuICBwcml2YXRlIEdldE1haW5Qcm9nQnlDdGxJZHhfMCggY3RsSWR4OiBudW1iZXIpOiBUYXNrIHtcclxuICAgIGxldCB0YXNrOiBUYXNrID0gbnVsbDtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5nZXRTaXplKCkgJiYgdGFzayA9PSBudWxsOyBpKyspIHtcclxuICAgICAgbGV0IG1nZDogTUdEYXRhID0gdGhpcy5nZXRNR0RhdGEoaSk7XHJcblxyXG4gICAgICBpZiAobWdkID09IG51bGwpXHJcbiAgICAgICAgLy8gdGhlIHdpbmRvdyBjb25uZWN0ZWQgdG8gdGhlIE1HRGF0YSB3YXMgY2xvc2VkXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICB0YXNrID0gbWdkLmdldE1haW5Qcm9nKGN0bElkeCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRhc2s7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIEdldE1haW5Qcm9nQnlDdGxJZHhfMShjdGxJZHg6IG51bWJlcik6IFRhc2sge1xyXG4gICAgcmV0dXJuIHRoaXMuR2V0TWFpblByb2dCeUN0bElkeCgtMSwgY3RsSWR4KTsgICAgLy8gVE9ETyAoLTEpOiBSQyBpcyB1bmF3YXJlIHRvIGNvbnRleHQgaWRzIGF0IHRoZSBtb21lbnRcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzdGFydCB0aGUgdGFza3MgaXRlcmF0b3JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXJ0VGFza3NJdGVyYXRpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pdGVyYXRvck1nZElkeCA9IDA7XHJcbiAgICB0aGlzLl9pdGVyYXRvclRhc2tJZHggPSAwO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgbmV4dCB0YXNrIHVzaW5nIHRoZSB0YXNrcyBpdGVyYXRvclxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TmV4dFRhc2soKTogSVRhc2sge1xyXG4gICAgbGV0IHRhc2s6IFRhc2s7XHJcblxyXG4gICAgbGV0IG1nZDogTUdEYXRhID0gdGhpcy5nZXRNR0RhdGEodGhpcy5faXRlcmF0b3JNZ2RJZHgpO1xyXG4gICAgaWYgKG1nZCA9PSBudWxsKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICB0YXNrID0gbWdkLmdldFRhc2sodGhpcy5faXRlcmF0b3JUYXNrSWR4KTtcclxuXHJcbiAgICBpZiAodGFzayA9PSBudWxsKSB7XHJcbiAgICAgIGRvIHtcclxuICAgICAgICB0aGlzLl9pdGVyYXRvck1nZElkeCsrO1xyXG4gICAgICB9XHJcbiAgICAgIHdoaWxlICh0aGlzLl9pdGVyYXRvck1nZElkeCA8IHRoaXMuZ2V0U2l6ZSgpICYmIHRoaXMuZ2V0TUdEYXRhKHRoaXMuX2l0ZXJhdG9yTWdkSWR4KSA9PSBudWxsKTtcclxuICAgICAgdGhpcy5faXRlcmF0b3JUYXNrSWR4ID0gMDtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV4dFRhc2soKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9pdGVyYXRvclRhc2tJZHgrKztcclxuICAgIHJldHVybiB0YXNrO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGJ1aWxkIFhNTCBzdHJpbmcgb2YgdGhlIE1HRGF0YVRBQkxFIG9iamVjdCxcclxuICAvLy8gICBBTEwgTUdEYXRhIGluIHRoZSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibWVzc2FnZVwiPmEgbWVzc2FnZSBiZWluZyBwcmVwYXJlZC48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNlcmlhbGl6ZVRhc2tzXCI+aWYgdHJ1ZSwgdGFza3MgaW4gdGhlIGN1cnJlbnQgZXhlY3V0aW9uIHdpbGwgYWxzbyBiZSBzZXJpYWxpemVkLjwvcGFyYW0+XHJcbiAgYXN5bmMgYnVpbGRYTUwobWVzc2FnZTogU3RyaW5nQnVpbGRlciwgc2VyaWFsaXplVGFza3M6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCBsYXN0Um91dGU6IHN0cmluZyA9IENvbW1hbmRzLmdldExhc3RSb3V0ZSgpO1xyXG4gICAgLy8gb3B0aW1pemF0aW9uOiBEbyBub3Qgc2VuZCB0aGUgbGFzdFJvdXRlLCBpZiBpdCBpcyB0aGUgc2FtZSB3aGljaCB3YXMgbGFzdCBzZW50IHRvIHRoZSBzZXJ2ZXJcclxuICAgIGlmIChsYXN0Um91dGUgIT09IHRoaXMuX2xhc3RSb3V0ZVNlbnRUb1NlcnZlcikge1xyXG4gICAgICBtZXNzYWdlLkFwcGVuZChYTUxDb25zdGFudHMuU1RBUlRfVEFHICsgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0xBU1RfUk9VVEUpO1xyXG4gICAgICBtZXNzYWdlLkFwcGVuZChcIiBcIiArIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfRU5WX1ZBTFVFICsgXCI9XFxcIlwiICsgbGFzdFJvdXRlICsgXCJcXFwiXCIpO1xyXG4gICAgICBtZXNzYWdlLkFwcGVuZChYTUxDb25zdGFudHMuVEFHX1RFUk0pO1xyXG5cclxuICAgICAgdGhpcy5fbGFzdFJvdXRlU2VudFRvU2VydmVyID0gbGFzdFJvdXRlO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLmdldFNpemUoKTsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGxldCBtZ2Q6IE1HRGF0YSA9IHRoaXMuZ2V0TUdEYXRhKGkpO1xyXG5cclxuICAgICAgaWYgKG1nZCAhPT0gbnVsbCAmJiAhbWdkLklzQWJvcnRpbmcpIHtcclxuICAgICAgICBhd2FpdCBtZ2QuYnVpbGRYTUwobWVzc2FnZSwgc2VyaWFsaXplVGFza3MpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgRmxvd01vbml0b3JRdWV1ZS5JbnN0YW5jZS5idWlsZFhNTChtZXNzYWdlKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCBzaXplIG9mIE1HRGF0YSB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiBzaXplIG9mIHRhYmxlPC9yZXR1cm5zPlxyXG4gIGdldFNpemUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9tZ0RhdGFUYWIubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHBlcmZvcm0gYW55IGRhdGEgZXJyb3IgcmVjb3ZlcnkgYWN0aW9uIG9uIGFsbCBkYXRhdmlld3NcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIHByb2Nlc3NSZWNvdmVyeSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCB0aGlzLmdldFNpemUoKTsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGxldCBtZ2Q6IE1HRGF0YSA9IHRoaXMuZ2V0TUdEYXRhKGkpO1xyXG5cclxuICAgICAgaWYgKG1nZCAhPT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAobGV0IGo6IG51bWJlciA9IDA7IGogPCBtZ2QuZ2V0VGFza3NDb3VudCgpOyBqID0gaiArIDEpIHtcclxuICAgICAgICAgIGxldCB0YXNrOiBUYXNrID0gbWdkLmdldFRhc2soaik7XHJcbiAgICAgICAgICBpZiAodGFzayAhPT0gbnVsbClcclxuICAgICAgICAgICAgYXdhaXQgKDxEYXRhVmlldz50YXNrLkRhdGFWaWV3KS5wcm9jZXNzUmVjb3ZlcnkoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBmaW5kIGFsbCB0YXNrcyB3aGljaCB3ZXJlIHRyaWdnZXJlZCBieSBhIHNwZWNpZmljIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidHJpZ2dlcmluZ1Rhc2tcIj50aGUgdGFzayB3aG8gdHJpZ2dlcmVkIGFsbCBvdGhlciB0YXNrcy48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdmVjdG9yIGNvbnRhaW5pbmcgYWxsIHRhc2tzIHdoaWNoIHdlcmUgdHJpZ2dlcmVkIGJ5IHRoZSBwYXJhbWV0ZXIgdGFzazwvcmV0dXJucz5cclxuICBnZXRUcmlnZ2VyZWRUYXNrcyh0cmlnZ2VyaW5nVGFzazogVGFzayk6IExpc3Q8VGFzaz4ge1xyXG4gICAgbGV0IGxpc3Q6IExpc3Q8VGFzaz4gPSBuZXcgTGlzdDxUYXNrPigpO1xyXG4gICAgbGV0IHRhc2s6IFRhc2s7XHJcbiAgICBsZXQgdGFnOiBzdHJpbmcgPSB0cmlnZ2VyaW5nVGFzay5nZXRUYXNrVGFnKCk7XHJcblxyXG4gICAgdGhpcy5zdGFydFRhc2tzSXRlcmF0aW9uKCk7XHJcblxyXG4gICAgd2hpbGUgKCh0YXNrID0gPFRhc2s+dGhpcy5nZXROZXh0VGFzaygpKSAhPT0gbnVsbCkge1xyXG4gICAgICBpZiAodGFnID09PSB0YXNrLlByZXZpb3VzbHlBY3RpdmVUYXNrSWQpXHJcbiAgICAgICAgbGlzdC5wdXNoKHRhc2spO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXR1cm5zIHRhc2sgbGlzdCBhY2NvcmRpbmcgdG8gdGhlIHByZWRpY2F0ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRUYXNrcyhwOiAob2JqOiBUYXNrKSA9PiBib29sZWFuKTogTGlzdDxUYXNrPiB7XHJcbiAgICBsZXQgdGFza0xpc3Q6IExpc3Q8VGFzaz4gPSBuZXcgTGlzdDxUYXNrPigpO1xyXG5cclxuICAgIHRoaXMuX21nRGF0YVRhYi5mb3JFYWNoKG1nZCA9PiB7XHJcbiAgICAgIGlmIChtZ2QgIT09IG51bGwgJiYgIW1nZC5Jc0Fib3J0aW5nKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IG1nZC5nZXRUYXNrc0NvdW50KCk7IGkgPSBpICsgMSkge1xyXG4gICAgICAgICAgbGV0IHRhc2s6IFRhc2sgPSBtZ2QuZ2V0VGFzayhpKTtcclxuICAgICAgICAgIGlmICh0YXNrICE9PSBudWxsICYmIHAodGFzaykpIHtcclxuICAgICAgICAgICAgdGFza0xpc3QucHVzaCh0YXNrKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0YXNrTGlzdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSBjdXJyZW50IGlkIG9mIGEgdGFzayBhY2NvcmRpbmcgdG8gaXRzIG9yaWdpbmFsIGlkXHJcbiAgLy8vICAgaXQgd2lsbCB1c3VhbGx5IHJldHVybiB0aGUgc2FtZSBpZCBhcyBzZW50IHRvIGl0LCBidXQgZm9yIHN1YmZvcm0gYWZ0ZXIgZXJyb3IgYW5kIHJldHJ5IGl0IHdpbGxcclxuICAvLy8gICBjb252ZXJ0IHRoZSBvcmlnaW5hbCBpZCB0byB0aGUgY3VycmVudC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza0lkXCI+LSBvcmlnaW5hbCB0YXNrIGlkPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRoZSBjdXJyZW50IHRhc2tpZCBmb3IgdGhpcyB0YXNrPC9yZXR1cm5zPlxyXG4gIGdldFRhc2tJZEJ5SWQodGFza0lkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgLy8gUUNSICM5ODA0NTQgLSB0aGUgdGFzayBpZCBtYXkgY2hhbmdlIGR1cmluZyB0aGUgdGFzaydzIGxpZmV0aW1lLCBzbyB0YXNrSWQgbWlnaHRcclxuICAgIC8vIGJlIGhvbGRpbmcgdGhlIG9sZCBvbmUgLSBmaW5kIHRoZSB0YXNrIGFuZCByZWZldGNoIGl0cyBjdXJyZW50IElELlxyXG4gICAgbGV0IHRhc2s6IElUYXNrID0gdGhpcy5HZXRUYXNrQnlJRCh0YXNrSWQpO1xyXG4gICAgbGV0IHRhZzogc3RyaW5nID0gdGFza0lkO1xyXG5cclxuICAgIGlmICh0YXNrICE9IG51bGwpXHJcbiAgICAgIHRhZyA9IHRhc2suZ2V0VGFza1RhZygpO1xyXG5cclxuICAgIHJldHVybiB0YWc7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIGFsbCB0b3AgbGV2ZWwgZm9ybXMgdGhhdCBleGlzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0VG9wTW9zdEZvcm1zKCk6IExpc3Q8TWdGb3JtQmFzZT4ge1xyXG4gICAgbGV0IHRhc2s6IFRhc2s7XHJcbiAgICBsZXQgZm9ybXMgPSBuZXcgTGlzdDxNZ0Zvcm1CYXNlPigpO1xyXG5cclxuICAgIC8vIG1vdmUgb24gdGhlIHRhc2tzIGFuZCBhZGQgdGhlIGZvcm1zIHRvIHRoZSBhcnJheUxpc3RcclxuICAgIHRoaXMuc3RhcnRUYXNrc0l0ZXJhdGlvbigpO1xyXG5cclxuICAgIHdoaWxlICgodGFzayA9IDxUYXNrPnRoaXMuZ2V0TmV4dFRhc2soKSkgIT0gbnVsbCkge1xyXG4gICAgICBsZXQgZm9ybTogTWdGb3JtQmFzZSA9IHRhc2suZ2V0Rm9ybSgpO1xyXG5cclxuICAgICAgaWYgKCF0YXNrLmlzQWJvcnRpbmcoKSAmJiBmb3JtICE9IG51bGwgJiYgIWZvcm0uaXNTdWJGb3JtKCkpXHJcbiAgICAgICAgZm9ybXMucHVzaChmb3JtKTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JtcztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0cyB0aGUgTUdEYXRhIHRoYXQgaG9sZHMvc2hvdWxkIGhvbGQgdGhlIHN0YXJ0dXAgcHJvZ3JhbS5cclxuICAvLy8gVGhlIG1ldGhvZCB0YWtlcyBpbnRvIGNvbnNpZGVyYXRpb24gd2hldGhlciB0aGUgYXBwbGljYXRpb24gdXNlcyBNREkgb3Igbm90LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRNR0RhdGFGb3JTdGFydHVwUHJvZ3JhbSgpOiBNR0RhdGEge1xyXG4gICAgRGVidWcuQXNzZXJ0KHRoaXMuX21nRGF0YVRhYi5sZW5ndGggPiAwLCBcIlRoZSBtYWluIHByb2dyYW0gbXVzdCBiZSBwcm9jZXNzZWQgYmVmb3JlIGludm9raW5nIHRoaXMgbWV0aG9kLlwiKTtcclxuXHJcbiAgICBsZXQgbWFpblByb2dCeUN0bElkeDogVGFzayA9IHRoaXMuR2V0TWFpblByb2dCeUN0bElkeCgwKTtcclxuICAgIERlYnVnLkFzc2VydChtYWluUHJvZ0J5Q3RsSWR4ICE9PSBudWxsLCBcIlRoZSBtYWluIHByb2dyYW0gbXVzdCBiZSBwcm9jZXNzZWQgYmVmb3JlIGludm9raW5nIHRoaXMgbWV0aG9kLlwiKTtcclxuXHJcbiAgICBEZWJ1Zy5Bc3NlcnQobWFpblByb2dCeUN0bElkeC5nZXRNZ2RJRCgpID09PSAwLCBcIk1haW4gcHJvZ3JhbSBpcyBleHBlY3RlZCB0byBiZSBvbiBNR0RhdGEgMC4gSXMgdGhpcyBhbiBlcnJvcj9cIik7XHJcblxyXG4gICAgLy8gaWYgdGhlIG1haW4gcHJvZ3JhbSBkb2VzIG5vdCBoYXZlIE1ESSBmcmFtZSwgdGhlIHN0YXJ0dXAgTUdEYXRhIGluZGV4IGlzIDAuXHJcbiAgICByZXR1cm4gdGhpcy5fbWdEYXRhVGFiLmdldF9JdGVtKDApO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEFkZCBjb21tYW5kLCBleGVjdXRlIHJlcXVlc3QgYW5kIGRvIHJlY29yZCBjeWNsZSBmb3Igc3ViZm9ybXMgdGhhdCB0aGUgc2VydmVyIHNlbnQgdGhlaXIgbmV3IGRhdGF2aWV3XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjbWRzVG9TZXJ2ZXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNtZFRvU2VydmVyXCI+YWRkaXRpb25hbCBjb21tYW5kIHRvIHRoZSBTZXJ2ZXI8L3BhcmFtPlxyXG4gIGFzeW5jIGV4ZWNSZXF1ZXN0V2l0aFN1YmZvcm1SZWNvcmRDeWNsZShjbWRzVG9TZXJ2ZXI6IENvbW1hbmRzVGFibGUsIGNtZFRvU2VydmVyOiBJQ2xpZW50Q29tbWFuZCwgZXhwOiBFeHByZXNzaW9uKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmNsZWFuRG9TdWJmb3JtUHJlZml4U3VmZml4KCk7XHJcbiAgICBjbWRzVG9TZXJ2ZXIuQWRkKGNtZFRvU2VydmVyKTtcclxuXHJcbiAgICAvLyBBdm9pZCBpbW1lZGlhdGUgZXhlY3V0aW9uIG9mIHNlcnZlciBvcGVyYXRpb24gZHVyaW5nIGJyb3dzZXIgY2xvc2UgdG8gYWxsb3cgY2xvc2luZyBvZiBjb250ZXh0IGxhdGVyIGJ5IHNlbmRpbmcgQnJvd3NlckVzYyBjb21tYW5kIHRvIHNlcnZlci5cclxuICAgIGlmKCEoTUdEYXRhQ29sbGVjdGlvbi5JbnN0YW5jZS5TdGFydHVwTWdEYXRhLmdldEZpcnN0VGFzaygpLkluRW5kVGFzayAmJiBNR0RhdGFDb2xsZWN0aW9uLkluc3RhbmNlLlN0YXJ0dXBNZ0RhdGEuZ2V0Rmlyc3RUYXNrKCkuQ2xvc2luZ0Zvcm1VSSkpXHJcbiAgICAgIGF3YWl0IENvbW1hbmRzUHJvY2Vzc29yTWFuYWdlci5HZXRDb21tYW5kc1Byb2Nlc3NvcigpLkV4ZWN1dGUoQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbi5UQVNLU19BTkRfQ09NTUFORFMsIENvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZXNzaW9uU3RhZ2UuTk9STUFMLCBleHApO1xyXG5cclxuICAgIGF3YWl0IHRoaXMuZXhlY0FsbFN1YmZvcm1SZWNvcmRDeWNsZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBDbGVhbiBmbGFnIGZvciBTdWJmb3JtIHJlY29yZCBjeWNsZSA8L3N1bW1hcnk+XHJcbiAgY2xlYW5Eb1N1YmZvcm1QcmVmaXhTdWZmaXgoKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5nZXRTaXplKCk7IGkrKykge1xyXG4gICAgICBsZXQgbWdkOiBNR0RhdGEgPSB0aGlzLmdldE1HRGF0YShpKTtcclxuXHJcbiAgICAgIGlmIChtZ2QgPT09IG51bGwgfHwgbWdkLklzQWJvcnRpbmcpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBsZXQgdGFza3NDb3VudDogbnVtYmVyID0gbWdkLmdldFRhc2tzQ291bnQoKTtcclxuICAgICAgZm9yIChsZXQgajogbnVtYmVyID0gMDsgaiA8IHRhc2tzQ291bnQ7IGorKykge1xyXG4gICAgICAgIGxldCB0YXNrOiBUYXNrID0gbWdkLmdldFRhc2soaik7XHJcbiAgICAgICAgdGFzay5Eb1N1YmZvcm1QcmVmaXhTdWZmaXggPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gRXhlY3V0ZSBSZWNvcmQgY3ljbGUgZm9yIGFsbCBzdWJmb3JtcyB0aGF0IHRoZWlyIGZsYWcgaXMgb24gPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIGV4ZWNBbGxTdWJmb3JtUmVjb3JkQ3ljbGUoKTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuZ2V0U2l6ZSgpOyBpID0gaSArIDEpIHtcclxuICAgICAgbGV0IG1nZDogTUdEYXRhID0gdGhpcy5nZXRNR0RhdGEoaSk7XHJcblxyXG4gICAgICBpZiAobWdkID09PSBudWxsIHx8IG1nZC5Jc0Fib3J0aW5nKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgbGV0IHRhc2tzQ291bnQ6IG51bWJlciA9IG1nZC5nZXRUYXNrc0NvdW50KCk7XHJcbiAgICAgIGZvciAobGV0IGo6IG51bWJlciA9IDA7IGogPCB0YXNrc0NvdW50OyBqID0gaiArIDEpIHtcclxuICAgICAgICBsZXQgdGFzazogVGFzayA9IG1nZC5nZXRUYXNrKGopO1xyXG4gICAgICAgIGlmICh0YXNrLklzU3ViRm9ybSAmJiB0YXNrLkRvU3ViZm9ybVByZWZpeFN1ZmZpeCkge1xyXG4gICAgICAgICAgLy8gSW4gdGhlIHJlY29yZCBwcmVmaXggb2YgdGhlIGN1cnJlbnQgdGFzayAoY29tbW9uSGFuZGxlckJlZm9yZSkgd2UgZXhlY3V0ZSByZWNvcmQgcHJlZml4IG9mIGFsbCBmYXRoZXJzLlxyXG4gICAgICAgICAgLy8gQnV0IHdoZW4gd2UgcmV0dXJuIGZyb20gdGhlIHNlcnZlciB3ZSBkbyBub3QgbmVlZCBpdC4gU28gd2UgcHJldmVudCBmYXRoZXIgcmVjb3JkIHByZWZpeCBleGVjdXRpb24uXHJcbiAgICAgICAgICB0YXNrLlBlcmZvcm1QYXJlbnRSZWNvcmRQcmVmaXggPSBmYWxzZTtcclxuICAgICAgICAgIEFjY2Vzc0hlbHBlci5ldmVudHNNYW5hZ2VyLnB1c2hOZXdFeGVjU3RhY2tzKCk7XHJcbiAgICAgICAgICBhd2FpdCBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5oYW5kbGVJbnRlcm5hbEV2ZW50V2l0aFRhc2tBbmRTdWJmb3JtUmVmcmVzaCh0YXNrLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVDX1BSRUZJWCwgdHJ1ZSk7XHJcblxyXG4gICAgICAgICAgaWYgKCFBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5HZXRTdG9wRXhlY3V0aW9uRmxhZygpKVxyXG4gICAgICAgICAgICBhd2FpdCBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5oYW5kbGVJbnRlcm5hbEV2ZW50V2l0aFRhc2sodGFzaywgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19TVUZGSVgpO1xyXG5cclxuICAgICAgICAgIEFjY2Vzc0hlbHBlci5ldmVudHNNYW5hZ2VyLnBvcE5ld0V4ZWNTdGFja3MoKTtcclxuICAgICAgICAgIHRhc2suUGVyZm9ybVBhcmVudFJlY29yZFByZWZpeCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|
@@ -1,63 +0,0 @@
|
|
1
|
-
import { Dictionary, List } from '@magic-xpa/mscorelib';
|
2
|
-
import { MgTimer } from '@magic-xpa/gui';
|
3
|
-
class TimerObjectCollection {
|
4
|
-
}
|
5
|
-
TimerObjectCollection.MgDataToTimerObjList = new Dictionary();
|
6
|
-
export class RCTimer extends MgTimer {
|
7
|
-
get TimerIntervalMiliSeconds() {
|
8
|
-
return this._timerIntervalMilliSeconds;
|
9
|
-
}
|
10
|
-
set IsIdleTimer(value) {
|
11
|
-
this._isIdle = value;
|
12
|
-
}
|
13
|
-
get IsIdleTimer() {
|
14
|
-
return this._isIdle;
|
15
|
-
}
|
16
|
-
constructor(mgData, milliseconds, isIdle) {
|
17
|
-
super(milliseconds);
|
18
|
-
this._mgData = null;
|
19
|
-
this._isIdle = false;
|
20
|
-
this._mgData = mgData;
|
21
|
-
this.IsIdleTimer = isIdle;
|
22
|
-
let mgDataId = this._mgData.GetId().toString();
|
23
|
-
if (!TimerObjectCollection.MgDataToTimerObjList.ContainsKey(mgDataId))
|
24
|
-
TimerObjectCollection.MgDataToTimerObjList.Add(mgDataId, new List());
|
25
|
-
TimerObjectCollection.MgDataToTimerObjList.get_Item(mgDataId).push(this);
|
26
|
-
}
|
27
|
-
GetMgdata() {
|
28
|
-
return this._mgData;
|
29
|
-
}
|
30
|
-
static StopTimer(mgData, milliseconds, isIdle) {
|
31
|
-
let timers = null;
|
32
|
-
let timer = null;
|
33
|
-
let mgDataId = mgData.GetId().toString();
|
34
|
-
if (TimerObjectCollection.MgDataToTimerObjList.ContainsKey(mgDataId)) {
|
35
|
-
timers = TimerObjectCollection.MgDataToTimerObjList.get_Item(mgDataId);
|
36
|
-
timer = timers.find(rcTimer => {
|
37
|
-
return (rcTimer !== null) && (rcTimer._timerIntervalMilliSeconds === milliseconds && rcTimer._isIdle === isIdle);
|
38
|
-
});
|
39
|
-
if (timer != null) {
|
40
|
-
timer.Stop();
|
41
|
-
timers.Remove(timer);
|
42
|
-
}
|
43
|
-
if (timers.length === 0)
|
44
|
-
TimerObjectCollection.MgDataToTimerObjList.Remove(mgDataId);
|
45
|
-
}
|
46
|
-
}
|
47
|
-
static StopAll(mgData) {
|
48
|
-
let timers = null;
|
49
|
-
let mgDataId = mgData.GetId().toString();
|
50
|
-
if (TimerObjectCollection.MgDataToTimerObjList.ContainsKey(mgDataId))
|
51
|
-
timers = TimerObjectCollection.MgDataToTimerObjList.get_Item(mgDataId);
|
52
|
-
if (timers !== null) {
|
53
|
-
timers.forEach(rcTimer => {
|
54
|
-
if (rcTimer !== null) {
|
55
|
-
rcTimer.Stop();
|
56
|
-
}
|
57
|
-
});
|
58
|
-
timers.Clear();
|
59
|
-
TimerObjectCollection.MgDataToTimerObjList.Remove(mgDataId);
|
60
|
-
}
|
61
|
-
}
|
62
|
-
}
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUkNUaW1lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvdGFza3MvUkNUaW1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl6QyxNQUFNLHFCQUFxQjs7QUFDbEIsMENBQW9CLEdBQThCLElBQUksVUFBVSxFQUFpQixDQUFDO0FBRzNGLE1BQU0sT0FBTyxPQUFRLFNBQVEsT0FBTztJQUtsQyxJQUFJLHdCQUF3QjtRQUMxQixPQUFPLElBQUksQ0FBQywwQkFBMEIsQ0FBQztJQUN6QyxDQUFDO0lBR0QsSUFBSSxXQUFXLENBQUMsS0FBYztRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxZQUFZLE1BQWMsRUFBRSxZQUFvQixFQUFFLE1BQWU7UUFDL0QsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBbEJkLFlBQU8sR0FBVyxJQUFJLENBQUM7UUFDdkIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQWtCL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7UUFFMUIsSUFBSSxRQUFRLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV2RCxJQUFJLENBQUMscUJBQXFCLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztZQUNuRSxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxFQUFXLENBQUMsQ0FBQztRQUVoRixxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFJRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFNRCxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQWMsRUFBRSxZQUFvQixFQUFFLE1BQWU7UUFDcEUsSUFBSSxNQUFNLEdBQWtCLElBQUksQ0FBQztRQUNqQyxJQUFJLEtBQUssR0FBWSxJQUFJLENBQUM7UUFDMUIsSUFBSSxRQUFRLEdBQVcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpELElBQUkscUJBQXFCLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3BFLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFdkUsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzVCLE9BQU8sQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBRSxPQUFPLENBQUMsMEJBQTBCLEtBQUssWUFBWSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssTUFBTSxDQUFDLENBQUE7WUFDbkgsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7Z0JBRWpCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFFYixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3RCO1lBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQ3JCLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7SUFJRCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQWM7UUFDM0IsSUFBSSxNQUFNLEdBQWtCLElBQUksQ0FBQztRQUNqQyxJQUFJLFFBQVEsR0FBVyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakQsSUFBSSxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO1lBQ2xFLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekUsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3ZCLElBQUksT0FBTyxLQUFLLElBQUksRUFBRTtvQkFFcEIsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNoQjtZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBR2YscUJBQXFCLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzdEO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSwgTGlzdCB9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHsgTWdUaW1lciB9IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHsgTUdEYXRhIH0gZnJvbSAnLi9NR0RhdGEnO1xyXG5cclxuLy8vPHN1bW1hcnk+bWFwcGluZyBiZXR3ZWVuIGVhY2ggTWdEYXRhIHRvIGl0cyBsaXN0IG9mIHRpbWVyIG9iamVjdHMuPC9zdW1tYXJ5PlxyXG5jbGFzcyBUaW1lck9iamVjdENvbGxlY3Rpb24ge1xyXG4gIHN0YXRpYyBNZ0RhdGFUb1RpbWVyT2JqTGlzdDogRGljdGlvbmFyeTxMaXN0PFJDVGltZXI+PiA9IG5ldyBEaWN0aW9uYXJ5PExpc3Q8UkNUaW1lcj4+KCk7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSQ1RpbWVyIGV4dGVuZHMgTWdUaW1lciB7XHJcbiAgcHJpdmF0ZSBfbWdEYXRhOiBNR0RhdGEgPSBudWxsO1xyXG4gIHByaXZhdGUgX2lzSWRsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLy88c3VtbWFyeT5QdWJsaWMgcHJvcGVydHk6IHNldFxcZ2V0IFRpbWVySW50ZXJ2YWwgaW4gc2Vjb25kczwvc3VtbWFyeT5cclxuICBnZXQgVGltZXJJbnRlcnZhbE1pbGlTZWNvbmRzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGltZXJJbnRlcnZhbE1pbGxpU2Vjb25kcztcclxuICB9XHJcblxyXG4gIC8vLzxzdW1tYXJ5PlB1YmxpYyBwcm9wZXJ0eSByZXR1cm5pbmcgdHJ1ZSBpZiB0aW1lciBpcyBpZGxlIGVsc2UgZmFsc2UuPC9zdW1tYXJ5PlxyXG4gIHNldCBJc0lkbGVUaW1lcih2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5faXNJZGxlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgSXNJZGxlVGltZXIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNJZGxlO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IobWdEYXRhOiBNR0RhdGEsIG1pbGxpc2Vjb25kczogbnVtYmVyLCBpc0lkbGU6IGJvb2xlYW4pIHtcclxuICAgIHN1cGVyKG1pbGxpc2Vjb25kcyk7XHJcbiAgICB0aGlzLl9tZ0RhdGEgPSBtZ0RhdGE7XHJcbiAgICB0aGlzLklzSWRsZVRpbWVyID0gaXNJZGxlO1xyXG5cclxuICAgIGxldCBtZ0RhdGFJZDogc3RyaW5nID0gdGhpcy5fbWdEYXRhLkdldElkKCkudG9TdHJpbmcoKTtcclxuXHJcbiAgICBpZiAoIVRpbWVyT2JqZWN0Q29sbGVjdGlvbi5NZ0RhdGFUb1RpbWVyT2JqTGlzdC5Db250YWluc0tleShtZ0RhdGFJZCkpXHJcbiAgICAgIFRpbWVyT2JqZWN0Q29sbGVjdGlvbi5NZ0RhdGFUb1RpbWVyT2JqTGlzdC5BZGQobWdEYXRhSWQsIG5ldyBMaXN0PFJDVGltZXI+KCkpO1xyXG5cclxuICAgIFRpbWVyT2JqZWN0Q29sbGVjdGlvbi5NZ0RhdGFUb1RpbWVyT2JqTGlzdC5nZXRfSXRlbShtZ0RhdGFJZCkucHVzaCh0aGlzKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5yZXR1cm5zIE1nRGF0YS48L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBHZXRNZ2RhdGEoKTogTUdEYXRhIHtcclxuICAgIHJldHVybiB0aGlzLl9tZ0RhdGE7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+U3RvcHMgdGhlIHRpbWVyIGNvcnJlc3BvbmRpbmcgdG8gTUdEYXRhIHBhc3NlZCB3aXRoIHRoZSBpbnRlcnZhbCBzcGVjaWZpZWQgaW4gc2Vjb25kcy48L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibWdEYXRhXCI+TWdEYXRhIG9iamVjdDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic2Vjb25kc1wiPlRpbWVyIGludGVydmFsPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc0lkbGVcIj5JcyBpZGxlIHRpbWVyIG9yIG5vdDwvcGFyYW0+XHJcbiAgc3RhdGljIFN0b3BUaW1lcihtZ0RhdGE6IE1HRGF0YSwgbWlsbGlzZWNvbmRzOiBudW1iZXIsIGlzSWRsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IHRpbWVyczogTGlzdDxSQ1RpbWVyPiA9IG51bGw7XHJcbiAgICBsZXQgdGltZXI6IFJDVGltZXIgPSBudWxsO1xyXG4gICAgbGV0IG1nRGF0YUlkOiBzdHJpbmcgPSBtZ0RhdGEuR2V0SWQoKS50b1N0cmluZygpO1xyXG5cclxuICAgIGlmIChUaW1lck9iamVjdENvbGxlY3Rpb24uTWdEYXRhVG9UaW1lck9iakxpc3QuQ29udGFpbnNLZXkobWdEYXRhSWQpKSB7XHJcbiAgICAgIHRpbWVycyA9IFRpbWVyT2JqZWN0Q29sbGVjdGlvbi5NZ0RhdGFUb1RpbWVyT2JqTGlzdC5nZXRfSXRlbShtZ0RhdGFJZCk7XHJcblxyXG4gICAgICB0aW1lciA9IHRpbWVycy5maW5kKHJjVGltZXIgPT4ge1xyXG4gICAgICAgIHJldHVybiAocmNUaW1lciAhPT0gbnVsbCkgJiYgKCByY1RpbWVyLl90aW1lckludGVydmFsTWlsbGlTZWNvbmRzID09PSBtaWxsaXNlY29uZHMgJiYgcmNUaW1lci5faXNJZGxlID09PSBpc0lkbGUpXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRpbWVyICE9IG51bGwpIHtcclxuICAgICAgICAvLyBQbGFjaW5nIFNUT1BfVElNRVIgY29tbWFuZCBpbiBxdWV1ZS5cclxuICAgICAgICB0aW1lci5TdG9wKCk7XHJcblxyXG4gICAgICAgIHRpbWVycy5SZW1vdmUodGltZXIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGltZXJzLmxlbmd0aCA9PT0gMClcclxuICAgICAgICBUaW1lck9iamVjdENvbGxlY3Rpb24uTWdEYXRhVG9UaW1lck9iakxpc3QuUmVtb3ZlKG1nRGF0YUlkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5TdG9wcyBhbGwgdGhlIHRpbWVycy48L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiTWdEYXRhXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgU3RvcEFsbChtZ0RhdGE6IE1HRGF0YSk6IHZvaWQge1xyXG4gICAgbGV0IHRpbWVyczogTGlzdDxSQ1RpbWVyPiA9IG51bGw7XHJcbiAgICBsZXQgbWdEYXRhSWQ6IHN0cmluZyA9IG1nRGF0YS5HZXRJZCgpLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgaWYgKFRpbWVyT2JqZWN0Q29sbGVjdGlvbi5NZ0RhdGFUb1RpbWVyT2JqTGlzdC5Db250YWluc0tleShtZ0RhdGFJZCkpXHJcbiAgICAgIHRpbWVycyA9IFRpbWVyT2JqZWN0Q29sbGVjdGlvbi5NZ0RhdGFUb1RpbWVyT2JqTGlzdC5nZXRfSXRlbShtZ0RhdGFJZCk7XHJcblxyXG4gICAgaWYgKHRpbWVycyAhPT0gbnVsbCkge1xyXG4gICAgICB0aW1lcnMuZm9yRWFjaChyY1RpbWVyID0+IHtcclxuICAgICAgICBpZiAocmNUaW1lciAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgLy8gUGxhY2luZyBTVE9QX1RJTUVSIGNvbW1hbmQgaW4gcXVldWUuXHJcbiAgICAgICAgICByY1RpbWVyLlN0b3AoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGltZXJzLkNsZWFyKCk7XHJcblxyXG4gICAgICAvLyBSZW1vdmluZyB0aGUga2V5IGZyb20gdGhlIGhhc2ggdGFibGUsIGFmdGVyIHRoZSBsaXN0IG9mIHRpbWVyIG9iamVjdHMgYXJlIGNsZWFyZWQuXHJcbiAgICAgIFRpbWVyT2JqZWN0Q29sbGVjdGlvbi5NZ0RhdGFUb1RpbWVyT2JqTGlzdC5SZW1vdmUobWdEYXRhSWQpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|