@kontur.candy/tools 2.153.0 → 2.155.0

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 (272) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/distr/Common/AsyncUtils.js +1 -3
  3. package/distr/Common/CandyApiClient/CandyApiClient.js +25 -138
  4. package/distr/Common/CandyApiClient/CandyApiClientContext.js +1 -8
  5. package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js +1 -1
  6. package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js +1 -1
  7. package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js +1 -2
  8. package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js +1 -1
  9. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +1 -16
  10. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +1 -12
  11. package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +1 -12
  12. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js +1 -1
  13. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +1 -13
  14. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js +1 -3
  15. package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js +1 -1
  16. package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +1 -8
  17. package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +1 -7
  18. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js +9 -12
  19. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js +1 -1
  20. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestResponse.js +1 -1
  21. package/distr/Common/CandyApiClient/FakeCandyApiClient.js +4 -72
  22. package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -1
  23. package/distr/Common/CandyApiClient/IsBuffer.js +1 -2
  24. package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js +1 -1
  25. package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js +1 -1
  26. package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js +1 -1
  27. package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js +1 -1
  28. package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js +1 -1
  29. package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js +12 -7
  30. package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js +1 -1
  31. package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +1 -1
  32. package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js +1 -3
  33. package/distr/Common/CandyApiClient/Types/DraftFullId.js +1 -1
  34. package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js +5 -6
  35. package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js +9 -12
  36. package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js +5 -6
  37. package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js +1 -1
  38. package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js +1 -1
  39. package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js +5 -6
  40. package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js +1 -1
  41. package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js +1 -3
  42. package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js +1 -1
  43. package/distr/Common/CandyApiClient/Types/Guid.js +1 -1
  44. package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js +1 -1
  45. package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js +1 -1
  46. package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js +6 -0
  47. package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js +5 -6
  48. package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js +1 -1
  49. package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js +1 -1
  50. package/distr/Common/CandyApiClient/Types/Print/PrintType.js +5 -6
  51. package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js +1 -1
  52. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js +1 -1
  53. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js +1 -1
  54. package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js +1 -1
  55. package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js +1 -1
  56. package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js +5 -6
  57. package/distr/Common/CandyApiClient/Types/TestClassification.js +1 -1
  58. package/distr/Common/CollectionUtils.js +1 -3
  59. package/distr/Common/CommonConstants/SectionNames.js +1 -3
  60. package/distr/Common/Comparers.js +2 -16
  61. package/distr/Common/EmotionStorybookWorkaroundViaAliases.js +1 -5
  62. package/distr/Common/EndPoints.js +1 -2
  63. package/distr/Common/Enums/ButtonSettingsTypeEnum.js +5 -6
  64. package/distr/Common/Errors.js +1 -19
  65. package/distr/Common/FormActionHandlers/ContextualActionNames.js +1 -3
  66. package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js +1 -1
  67. package/distr/Common/Funcs.js +1 -5
  68. package/distr/Common/GFV.js +1 -1
  69. package/distr/Common/Hooks/UseLocalStorage.js +3 -10
  70. package/distr/Common/HttpClient/AuthenticationMode.js +3 -7
  71. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js +1 -3
  72. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js +1 -3
  73. package/distr/Common/HttpClient/FetchImplementation/Fetch.js +1 -1
  74. package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js +1 -1
  75. package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js +6 -11
  76. package/distr/Common/HttpClient/HttpClient.js +9 -80
  77. package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js +1 -1
  78. package/distr/Common/HttpClient/IHttpClient.js +1 -1
  79. package/distr/Common/IndentString.js +1 -3
  80. package/distr/Common/IntRangeUtils.js +3 -10
  81. package/distr/Common/IterableUtils.js +3 -76
  82. package/distr/Common/KCLangRuntimeUtils.js +1 -87
  83. package/distr/Common/ModelPath/BuildIterationSequence.js +1 -5
  84. package/distr/Common/ModelPath/EachCurrentCollision.js +5 -6
  85. package/distr/Common/ModelPath/IEquatable.js +1 -1
  86. package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js +1 -8
  87. package/distr/Common/ModelPath/Map/Map2.js +2 -24
  88. package/distr/Common/ModelPath/Map/ModelPathMap.js +1 -8
  89. package/distr/Common/ModelPath/ModelPath.js +16 -140
  90. package/distr/Common/ModelPath/ModelPathBuilder.js +1 -14
  91. package/distr/Common/ModelPath/ModelPathHelper.js +1 -2
  92. package/distr/Common/ModelPath/PathMatcher.js +5 -24
  93. package/distr/Common/ModelPath/PathSplitHelper.js +1 -6
  94. package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js +1 -10
  95. package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js +1 -10
  96. package/distr/Common/ModelPath/Set/ModelPathSet.js +1 -10
  97. package/distr/Common/ModelPath/Set/Set2.js +1 -16
  98. package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js +1 -9
  99. package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js +1 -1
  100. package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js +1 -3
  101. package/distr/Common/NidusClient/Fakes/FakeNidusClient.js +1 -17
  102. package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js +1 -30
  103. package/distr/Common/NidusClient/INidusClient.js +1 -3
  104. package/distr/Common/NidusClient/NidusClientContext.js +1 -14
  105. package/distr/Common/NidusClient/NidusClientImpl.js +1 -18
  106. package/distr/Common/PathConstants.js +1 -3
  107. package/distr/Common/StringArrayKey.js +1 -8
  108. package/distr/Common/TypingUtils.js +7 -26
  109. package/distr/Common/UUID.js +1 -4
  110. package/distr/Common/UseAsyncEffect.js +3 -7
  111. package/distr/Common/UseShowOnce.js +1 -17
  112. package/distr/Common/UseTypedSelector.js +1 -3
  113. package/distr/Common/getRngSchemaFilename.js +18 -0
  114. package/distr/Common/hashUtils.js +1 -4
  115. package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js +1 -23
  116. package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js +3 -10
  117. package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js +1 -10
  118. package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +5 -23
  119. package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js +1 -27
  120. package/distr/Tools/src/BuildTasks/Engine/EngineSource.js +1 -2
  121. package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +3 -10
  122. package/distr/Tools/src/BuildTasks/EngineVersionUtils.js +1 -9
  123. package/distr/Tools/src/BuildTasks/FSTask.js +1 -19
  124. package/distr/Tools/src/BuildTasks/Form/CompileForm.js +1 -19
  125. package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +1 -16
  126. package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js +1 -11
  127. package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +1 -10
  128. package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +1 -10
  129. package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js +1 -10
  130. package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +5 -26
  131. package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +1 -38
  132. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +2 -42
  133. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +4 -39
  134. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js +4 -7
  135. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +4 -10
  136. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +9 -17
  137. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js +3 -5
  138. package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js +1 -13
  139. package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js +1 -20
  140. package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +3 -48
  141. package/distr/Tools/src/BuildTasks/ReadFormSource.js +7 -32
  142. package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +5 -32
  143. package/distr/Tools/src/BuildTasks/Version.js +1 -10
  144. package/distr/Tools/src/BuildTasks/WriteFormMeta.js +1 -10
  145. package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js +5 -9
  146. package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +1 -5
  147. package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +22 -71
  148. package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js +1 -12
  149. package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +1 -5
  150. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +1 -67
  151. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +3 -28
  152. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +3 -41
  153. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js +3 -23
  154. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +3 -20
  155. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +1 -23
  156. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js +1 -37
  157. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js +1 -13
  158. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js +1 -40
  159. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +8 -49
  160. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js +1 -13
  161. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js +1 -17
  162. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js +1 -4
  163. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +10 -19
  164. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js +12 -26
  165. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js +1 -5
  166. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js +1 -1
  167. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js +1 -1
  168. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js +10 -44
  169. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +1 -17
  170. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +1 -5
  171. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js +1 -1
  172. package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +1 -27
  173. package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js +11 -16
  174. package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js +1 -1
  175. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js +1 -1
  176. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js +1 -1
  177. package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js +1 -4
  178. package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +13 -34
  179. package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js +1 -4
  180. package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +1 -15
  181. package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js +3 -19
  182. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/autocalc/{gfv}.calc.js +1 -2
  183. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/helpers/setKppValue.js +1 -2
  184. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js +1 -6
  185. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js +1 -11
  186. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/validations/kppValue.js +3 -4
  187. package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js +1 -4
  188. package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +1 -23
  189. package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js +1 -4
  190. package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +7 -23
  191. package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js +26 -0
  192. package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +48 -0
  193. package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +1 -37
  194. package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js +1 -4
  195. package/distr/Tools/src/CandyCLI.js +7 -56
  196. package/distr/Tools/src/CheckNodeJsVersion.js +3 -10
  197. package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js +1 -10
  198. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js +4 -29
  199. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js +1 -6
  200. package/distr/Tools/src/Commons/ErrorUntyped.js +1 -1
  201. package/distr/Tools/src/Commons/EventObject.js +10 -20
  202. package/distr/Tools/src/Commons/ExecUtils.js +3 -9
  203. package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js +1 -7
  204. package/distr/Tools/src/Commons/FormGlobsUtils.js +1 -33
  205. package/distr/Tools/src/Commons/FsUtils.js +1 -12
  206. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +1 -8
  207. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js +4 -15
  208. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js +1 -4
  209. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js +1 -5
  210. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js +1 -1
  211. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js +1 -4
  212. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js +1 -5
  213. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js +2 -5
  214. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js +1 -5
  215. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js +1 -14
  216. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js +1 -4
  217. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js +1 -5
  218. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js +1 -4
  219. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js +1 -4
  220. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js +1 -1
  221. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js +1 -4
  222. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js +1 -4
  223. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +1 -36
  224. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js +1 -9
  225. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js +5 -35
  226. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js +9 -11
  227. package/distr/Tools/src/Commons/Locks/Lock.js +1 -8
  228. package/distr/Tools/src/Commons/Locks/LockHandle.js +1 -5
  229. package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js +1 -9
  230. package/distr/Tools/src/Commons/Logging/ELKLogger.js +17 -22
  231. package/distr/Tools/src/Commons/Logging/ILogger.js +1 -5
  232. package/distr/Tools/src/Commons/Logging/InMemoryLogger.js +3 -21
  233. package/distr/Tools/src/Commons/Logging/Logger.js +9 -29
  234. package/distr/Tools/src/Commons/Logging/StaticLogger.js +11 -15
  235. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js +1 -1
  236. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +3 -37
  237. package/distr/Tools/src/Commons/PathPattern.js +1 -13
  238. package/distr/Tools/src/Commons/TasksCore/AggregatedError.js +1 -4
  239. package/distr/Tools/src/Commons/TasksCore/BuildTask.js +1 -1
  240. package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +13 -200
  241. package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +1 -20
  242. package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js +7 -10
  243. package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js +1 -15
  244. package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js +1 -15
  245. package/distr/Tools/src/Commons/TasksCore/Observe.js +1 -13
  246. package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js +5 -11
  247. package/distr/Tools/src/Commons/TimingUtils.js +1 -2
  248. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +13 -51
  249. package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +4 -14
  250. package/distr/Tools/src/GenerateReadMe.js +1 -13
  251. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
  252. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js.LICENSE.txt +10 -1
  253. package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
  254. package/distr/Tools/src/LocalServerFrontEndDist/index.js.LICENSE.txt +10 -1
  255. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
  256. package/distr/Tools/src/Options/CandyToolOptions.js +3 -11
  257. package/distr/Tools/src/ReadFarmConfig.js +1 -5
  258. package/distr/Tools/src/SelfUpdate.js +4 -28
  259. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +1506 -1257
  260. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.LICENSE.txt +1 -0
  261. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
  262. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +843 -623
  263. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.LICENSE.txt +1 -0
  264. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
  265. package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js +777 -1117
  266. package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js +1665 -2015
  267. package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js +9 -55
  268. package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js +777 -1117
  269. package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js +1665 -2015
  270. package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js +9 -55
  271. package/package.json +10 -10
  272. /package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/schemas/{{gfv}.rng.xml → {gfv}.0.rng.xml} +0 -0
@@ -1,1358 +1,1610 @@
1
1
  "use strict";
2
2
 
3
+ /*! For license information please see client.js.LICENSE.txt */
3
4
  (function () {
4
5
  "use strict";
5
6
 
6
7
  var __webpack_modules__ = {
7
- 730: function (e, r, t) {
8
- var o, n, i;
9
-
10
- function a(e) {
11
- return "v1/ns/".concat(e.ns, "/drafts/").concat(e.draftId, "/client-draft-info");
12
- }
13
-
14
- t.d(r, {
15
- m: function () {
16
- return a;
17
- }
18
- }), e = t.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature, (n = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && n.register(a, "getClientDraftInfoUrl", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\CandyApiClient\\ClientDraftInfo\\GetClientDraftInfoUrl.ts"), (i = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && i(e);
19
- },
20
- 556: function (module, __webpack_exports__, __webpack_require__) {
21
- function _typeof(e) {
22
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
23
- return typeof e;
24
- } : function (e) {
25
- return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
26
- }, _typeof(e);
27
- }
28
-
29
- var enterModule;
30
-
31
- function _classCallCheck(e, r) {
32
- if (!(e instanceof r)) throw new TypeError("Cannot call a class as a function");
33
- }
34
-
35
- function _defineProperties(e, r) {
36
- for (var t = 0; t < r.length; t++) {
37
- var o = r[t];
38
- o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o);
8
+ 730: function (e, r, t) {
9
+ var o, n, i;
10
+ function a(e) {
11
+ return "v1/ns/".concat(e.ns, "/drafts/").concat(e.draftId, "/client-draft-info");
39
12
  }
40
- }
41
-
42
- function _createClass(e, r, t) {
43
- return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), e;
44
- }
45
-
46
- function _inherits(e, r) {
47
- if ("function" != typeof r && null !== r) throw new TypeError("Super expression must either be null or a function");
48
- e.prototype = Object.create(r && r.prototype, {
49
- constructor: {
50
- value: e,
51
- writable: !0,
52
- configurable: !0
13
+ t.d(r, {
14
+ m: function () {
15
+ return a;
53
16
  }
54
- }), r && _setPrototypeOf(e, r);
55
- }
56
-
57
- function _createSuper(e) {
58
- var r = _isNativeReflectConstruct();
59
-
60
- return function () {
61
- var t,
62
- o = _getPrototypeOf(e);
63
-
64
- if (r) {
65
- var n = _getPrototypeOf(this).constructor;
66
-
67
- t = Reflect.construct(o, arguments, n);
68
- } else t = o.apply(this, arguments);
69
-
70
- return _possibleConstructorReturn(this, t);
71
- };
72
- }
73
-
74
- function _possibleConstructorReturn(e, r) {
75
- if (r && ("object" === _typeof(r) || "function" == typeof r)) return r;
76
- if (void 0 !== r) throw new TypeError("Derived constructors may only return object or undefined");
77
- return _assertThisInitialized(e);
78
- }
79
-
80
- function _assertThisInitialized(e) {
81
- if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
82
- return e;
83
- }
84
-
85
- function _wrapNativeSuper(e) {
86
- var r = "function" == typeof Map ? new Map() : void 0;
87
- return _wrapNativeSuper = function (e) {
88
- if (null === e || !_isNativeFunction(e)) return e;
89
- if ("function" != typeof e) throw new TypeError("Super expression must either be null or a function");
90
-
91
- if (void 0 !== r) {
92
- if (r.has(e)) return r.get(e);
93
- r.set(e, t);
17
+ }), e = t.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature, (n = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && n.register(a, "getClientDraftInfoUrl", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\CandyApiClient\\ClientDraftInfo\\GetClientDraftInfoUrl.ts"), (i = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && i(e);
18
+ },
19
+ 556: function (module, __webpack_exports__, __webpack_require__) {
20
+ function _typeof(e) {
21
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
22
+ return typeof e;
23
+ } : function (e) {
24
+ return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
25
+ }, _typeof(e);
26
+ }
27
+ var enterModule;
28
+ function _classCallCheck(e, r) {
29
+ if (!(e instanceof r)) throw new TypeError("Cannot call a class as a function");
30
+ }
31
+ function _defineProperties(e, r) {
32
+ for (var t = 0; t < r.length; t++) {
33
+ var o = r[t];
34
+ o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);
94
35
  }
95
-
96
- function t() {
97
- return _construct(e, arguments, _getPrototypeOf(this).constructor);
36
+ }
37
+ function _createClass(e, r, t) {
38
+ return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
39
+ writable: !1
40
+ }), e;
41
+ }
42
+ function _toPropertyKey(e) {
43
+ var r = _toPrimitive(e, "string");
44
+ return "symbol" === _typeof(r) ? r : String(r);
45
+ }
46
+ function _toPrimitive(e, r) {
47
+ if ("object" !== _typeof(e) || null === e) return e;
48
+ var t = e[Symbol.toPrimitive];
49
+ if (void 0 !== t) {
50
+ var o = t.call(e, r || "default");
51
+ if ("object" !== _typeof(o)) return o;
52
+ throw new TypeError("@@toPrimitive must return a primitive value.");
98
53
  }
99
-
100
- return t.prototype = Object.create(e.prototype, {
54
+ return ("string" === r ? String : Number)(e);
55
+ }
56
+ function _inherits(e, r) {
57
+ if ("function" != typeof r && null !== r) throw new TypeError("Super expression must either be null or a function");
58
+ e.prototype = Object.create(r && r.prototype, {
101
59
  constructor: {
102
- value: t,
103
- enumerable: !1,
60
+ value: e,
104
61
  writable: !0,
105
62
  configurable: !0
106
63
  }
107
- }), _setPrototypeOf(t, e);
108
- }, _wrapNativeSuper(e);
109
- }
110
-
111
- function _construct(e, r, t) {
112
- return _construct = _isNativeReflectConstruct() ? Reflect.construct : function (e, r, t) {
113
- var o = [null];
114
- o.push.apply(o, r);
115
- var n = new (Function.bind.apply(e, o))();
116
- return t && _setPrototypeOf(n, t.prototype), n;
117
- }, _construct.apply(null, arguments);
118
- }
119
-
120
- function _isNativeReflectConstruct() {
121
- if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
122
- if (Reflect.construct.sham) return !1;
123
- if ("function" == typeof Proxy) return !0;
124
-
125
- try {
126
- return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0;
127
- } catch (e) {
128
- return !1;
64
+ }), Object.defineProperty(e, "prototype", {
65
+ writable: !1
66
+ }), r && _setPrototypeOf(e, r);
129
67
  }
130
- }
131
-
132
- function _isNativeFunction(e) {
133
- return -1 !== Function.toString.call(e).indexOf("[native code]");
134
- }
135
-
136
- function _setPrototypeOf(e, r) {
137
- return _setPrototypeOf = Object.setPrototypeOf || function (e, r) {
138
- return e.__proto__ = r, e;
139
- }, _setPrototypeOf(e, r);
140
- }
141
-
142
- function _getPrototypeOf(e) {
143
- return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
144
- return e.__proto__ || Object.getPrototypeOf(e);
145
- }, _getPrototypeOf(e);
146
- }
147
-
148
- __webpack_require__.d(__webpack_exports__, {
149
- nj: function () {
150
- return NotImplementedError;
68
+ function _createSuper(e) {
69
+ var r = _isNativeReflectConstruct();
70
+ return function () {
71
+ var t,
72
+ o = _getPrototypeOf(e);
73
+ if (r) {
74
+ var n = _getPrototypeOf(this).constructor;
75
+ t = Reflect.construct(o, arguments, n);
76
+ } else t = o.apply(this, arguments);
77
+ return _possibleConstructorReturn(this, t);
78
+ };
151
79
  }
152
- }), module = __webpack_require__.hmd(module), enterModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0, enterModule && enterModule(module);
153
-
154
- var __signature__ = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default.signature : function (e) {
155
- return e;
156
- },
157
- ApplicationError = function (_Error) {
158
- _inherits(ApplicationError, _Error);
159
-
160
- var _super = _createSuper(ApplicationError);
161
-
162
- function ApplicationError(e) {
163
- var r;
164
- return _classCallCheck(this, ApplicationError), (r = _super.call(this, e)).name = r.constructor.name, r;
80
+ function _possibleConstructorReturn(e, r) {
81
+ if (r && ("object" === _typeof(r) || "function" == typeof r)) return r;
82
+ if (void 0 !== r) throw new TypeError("Derived constructors may only return object or undefined");
83
+ return _assertThisInitialized(e);
165
84
  }
166
-
167
- return _createClass(ApplicationError, [{
168
- key: "__reactstandin__regenerateByEval",
169
- value: function __reactstandin__regenerateByEval(key, code) {
170
- this[key] = eval(code);
171
- }
172
- }]), ApplicationError;
173
- }(_wrapNativeSuper(Error)),
174
- NotImplementedError = function (_ApplicationError) {
175
- _inherits(NotImplementedError, _ApplicationError);
176
-
177
- var _super2 = _createSuper(NotImplementedError);
178
-
179
- function NotImplementedError() {
180
- return _classCallCheck(this, NotImplementedError), _super2.call(this, "Operation not implemented");
85
+ function _assertThisInitialized(e) {
86
+ if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
87
+ return e;
181
88
  }
182
-
183
- return _createClass(NotImplementedError, [{
184
- key: "__reactstandin__regenerateByEval",
185
- value: function __reactstandin__regenerateByEval(key, code) {
186
- this[key] = eval(code);
187
- }
188
- }]), NotImplementedError;
189
- }(ApplicationError),
190
- NotSupportedError = function (_ApplicationError2) {
191
- _inherits(NotSupportedError, _ApplicationError2);
192
-
193
- var _super3 = _createSuper(NotSupportedError);
194
-
195
- function NotSupportedError(e) {
196
- return _classCallCheck(this, NotSupportedError), _super3.call(this, null != e ? e : "Operation not supported");
89
+ function _wrapNativeSuper(e) {
90
+ var r = "function" == typeof Map ? new Map() : void 0;
91
+ return _wrapNativeSuper = function (e) {
92
+ if (null === e || !_isNativeFunction(e)) return e;
93
+ if ("function" != typeof e) throw new TypeError("Super expression must either be null or a function");
94
+ if (void 0 !== r) {
95
+ if (r.has(e)) return r.get(e);
96
+ r.set(e, t);
97
+ }
98
+ function t() {
99
+ return _construct(e, arguments, _getPrototypeOf(this).constructor);
100
+ }
101
+ return t.prototype = Object.create(e.prototype, {
102
+ constructor: {
103
+ value: t,
104
+ enumerable: !1,
105
+ writable: !0,
106
+ configurable: !0
107
+ }
108
+ }), _setPrototypeOf(t, e);
109
+ }, _wrapNativeSuper(e);
197
110
  }
198
-
199
- return _createClass(NotSupportedError, [{
200
- key: "__reactstandin__regenerateByEval",
201
- value: function __reactstandin__regenerateByEval(key, code) {
202
- this[key] = eval(code);
203
- }
204
- }]), NotSupportedError;
205
- }(ApplicationError),
206
- InvalidProgramStateError = function (_ApplicationError3) {
207
- _inherits(InvalidProgramStateError, _ApplicationError3);
208
-
209
- var _super4 = _createSuper(InvalidProgramStateError);
210
-
211
- function InvalidProgramStateError(e) {
212
- return _classCallCheck(this, InvalidProgramStateError), _super4.call(this, "Invalid program state" + (null != e ? ": " + e : ""));
111
+ function _construct(e, r, t) {
112
+ return _construct = _isNativeReflectConstruct() ? Reflect.construct.bind() : function (e, r, t) {
113
+ var o = [null];
114
+ o.push.apply(o, r);
115
+ var n = new (Function.bind.apply(e, o))();
116
+ return t && _setPrototypeOf(n, t.prototype), n;
117
+ }, _construct.apply(null, arguments);
213
118
  }
214
-
215
- return _createClass(InvalidProgramStateError, [{
216
- key: "__reactstandin__regenerateByEval",
217
- value: function __reactstandin__regenerateByEval(key, code) {
218
- this[key] = eval(code);
119
+ function _isNativeReflectConstruct() {
120
+ if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
121
+ if (Reflect.construct.sham) return !1;
122
+ if ("function" == typeof Proxy) return !0;
123
+ try {
124
+ return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0;
125
+ } catch (e) {
126
+ return !1;
219
127
  }
220
- }]), InvalidProgramStateError;
221
- }(ApplicationError),
222
- InvalidArgumentError = function (_ApplicationError4) {
223
- _inherits(InvalidArgumentError, _ApplicationError4);
224
-
225
- var _super5 = _createSuper(InvalidArgumentError);
226
-
227
- function InvalidArgumentError(e, r) {
228
- return _classCallCheck(this, InvalidArgumentError), _super5.call(this, null != r ? "".concat(r, " (argument: ").concat(e, ")") : "Invalid argument value: ".concat(e));
229
128
  }
230
-
231
- return _createClass(InvalidArgumentError, [{
232
- key: "__reactstandin__regenerateByEval",
233
- value: function __reactstandin__regenerateByEval(key, code) {
234
- this[key] = eval(code);
235
- }
236
- }]), InvalidArgumentError;
237
- }(ApplicationError),
238
- TypingError = function (_ApplicationError5) {
239
- _inherits(TypingError, _ApplicationError5);
240
-
241
- var _super6 = _createSuper(TypingError);
242
-
243
- function TypingError() {
244
- return _classCallCheck(this, TypingError), _super6.call(this, "Invalid typing");
129
+ function _isNativeFunction(e) {
130
+ return -1 !== Function.toString.call(e).indexOf("[native code]");
245
131
  }
246
-
247
- return _createClass(TypingError, [{
248
- key: "__reactstandin__regenerateByEval",
249
- value: function __reactstandin__regenerateByEval(key, code) {
250
- this[key] = eval(code);
132
+ function _setPrototypeOf(e, r) {
133
+ return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (e, r) {
134
+ return e.__proto__ = r, e;
135
+ }, _setPrototypeOf(e, r);
136
+ }
137
+ function _getPrototypeOf(e) {
138
+ return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (e) {
139
+ return e.__proto__ || Object.getPrototypeOf(e);
140
+ }, _getPrototypeOf(e);
141
+ }
142
+ __webpack_require__.d(__webpack_exports__, {
143
+ nj: function () {
144
+ return NotImplementedError;
251
145
  }
252
- }]), TypingError;
253
- }(ApplicationError),
146
+ }), module = __webpack_require__.hmd(module), enterModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0, enterModule && enterModule(module);
147
+ var __signature__ = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default.signature : function (e) {
148
+ return e;
149
+ },
150
+ ApplicationError = function (_Error) {
151
+ _inherits(ApplicationError, _Error);
152
+ var _super = _createSuper(ApplicationError);
153
+ function ApplicationError(e) {
154
+ var r;
155
+ return _classCallCheck(this, ApplicationError), (r = _super.call(this, e)).name = r.constructor.name, r;
156
+ }
157
+ return _createClass(ApplicationError, [{
158
+ key: "__reactstandin__regenerateByEval",
159
+ value: function __reactstandin__regenerateByEval(key, code) {
160
+ this[key] = eval(code);
161
+ }
162
+ }]), ApplicationError;
163
+ }(_wrapNativeSuper(Error)),
164
+ NotImplementedError = function (_ApplicationError) {
165
+ _inherits(NotImplementedError, _ApplicationError);
166
+ var _super2 = _createSuper(NotImplementedError);
167
+ function NotImplementedError() {
168
+ return _classCallCheck(this, NotImplementedError), _super2.call(this, "Operation not implemented");
169
+ }
170
+ return _createClass(NotImplementedError, [{
171
+ key: "__reactstandin__regenerateByEval",
172
+ value: function __reactstandin__regenerateByEval(key, code) {
173
+ this[key] = eval(code);
174
+ }
175
+ }]), NotImplementedError;
176
+ }(ApplicationError),
177
+ NotSupportedError = function (_ApplicationError2) {
178
+ _inherits(NotSupportedError, _ApplicationError2);
179
+ var _super3 = _createSuper(NotSupportedError);
180
+ function NotSupportedError(e) {
181
+ return _classCallCheck(this, NotSupportedError), _super3.call(this, null != e ? e : "Operation not supported");
182
+ }
183
+ return _createClass(NotSupportedError, [{
184
+ key: "__reactstandin__regenerateByEval",
185
+ value: function __reactstandin__regenerateByEval(key, code) {
186
+ this[key] = eval(code);
187
+ }
188
+ }]), NotSupportedError;
189
+ }(ApplicationError),
190
+ InvalidProgramStateError = function (_ApplicationError3) {
191
+ _inherits(InvalidProgramStateError, _ApplicationError3);
192
+ var _super4 = _createSuper(InvalidProgramStateError);
193
+ function InvalidProgramStateError(e) {
194
+ return _classCallCheck(this, InvalidProgramStateError), _super4.call(this, "Invalid program state" + (null != e ? ": " + e : ""));
195
+ }
196
+ return _createClass(InvalidProgramStateError, [{
197
+ key: "__reactstandin__regenerateByEval",
198
+ value: function __reactstandin__regenerateByEval(key, code) {
199
+ this[key] = eval(code);
200
+ }
201
+ }]), InvalidProgramStateError;
202
+ }(ApplicationError),
203
+ InvalidArgumentError = function (_ApplicationError4) {
204
+ _inherits(InvalidArgumentError, _ApplicationError4);
205
+ var _super5 = _createSuper(InvalidArgumentError);
206
+ function InvalidArgumentError(e, r) {
207
+ return _classCallCheck(this, InvalidArgumentError), _super5.call(this, null != r ? "".concat(r, " (argument: ").concat(e, ")") : "Invalid argument value: ".concat(e));
208
+ }
209
+ return _createClass(InvalidArgumentError, [{
210
+ key: "__reactstandin__regenerateByEval",
211
+ value: function __reactstandin__regenerateByEval(key, code) {
212
+ this[key] = eval(code);
213
+ }
214
+ }]), InvalidArgumentError;
215
+ }(ApplicationError),
216
+ TypingError = function (_ApplicationError5) {
217
+ _inherits(TypingError, _ApplicationError5);
218
+ var _super6 = _createSuper(TypingError);
219
+ function TypingError() {
220
+ return _classCallCheck(this, TypingError), _super6.call(this, "Invalid typing");
221
+ }
222
+ return _createClass(TypingError, [{
223
+ key: "__reactstandin__regenerateByEval",
224
+ value: function __reactstandin__regenerateByEval(key, code) {
225
+ this[key] = eval(code);
226
+ }
227
+ }]), TypingError;
228
+ }(ApplicationError),
254
229
  reactHotLoader,
255
230
  leaveModule;
256
-
257
- reactHotLoader = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0, reactHotLoader && (reactHotLoader.register(ApplicationError, "ApplicationError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts"), reactHotLoader.register(NotImplementedError, "NotImplementedError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts"), reactHotLoader.register(NotSupportedError, "NotSupportedError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts"), reactHotLoader.register(InvalidProgramStateError, "InvalidProgramStateError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts"), reactHotLoader.register(InvalidArgumentError, "InvalidArgumentError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts"), reactHotLoader.register(TypingError, "TypingError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts")), leaveModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0, leaveModule && leaveModule(module);
258
- },
259
- 255: function (e, r, t) {
260
- var o, n, i;
261
-
262
- function a(e) {
263
- return a = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
264
- return typeof e;
265
- } : function (e) {
266
- return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
267
- }, a(e);
268
- }
269
-
270
- function s(e) {
271
- return null != e;
272
- }
273
-
274
- function u(e) {
275
- throw "string" == typeof e || null == e ? new Error(null != e ? e : "Undefined is not allowed") : e;
276
- }
277
-
278
- function l(e, r) {
279
- return e.length >= r;
280
- }
281
-
282
- function c(e, r) {
283
- return e.length === r;
284
- }
285
-
286
- function d(e) {
287
- return e.length > 0;
288
- }
289
-
290
- function f(e) {
291
- return null == e || "" === e;
292
- }
293
-
294
- t.d(r, {
295
- d1: function () {
296
- return u;
297
- }
298
- }), e = t.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature, (n = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (n.register(s, "isNotNullOrUndefined", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
299
- return "object" === a(e) && (null == e ? void 0 : e.message);
300
- }, "stringifyUnknownError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
301
- if (!s(e)) throw new Error("Value must be defined");
302
- }, "ensureNotNullOrUndefined", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function () {}, "noop", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(u, "reject", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(l, "isLengthGreaterThenOrEqual", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e, r) {
303
- if (l(e, r)) return e;
304
- }, "minLengthOrUndefined", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(c, "arrayHasLength", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(d, "arrayIsNotEmpty", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
305
- return e.length > 0;
306
- }, "arrayHasAtLeastOneItem", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
307
- if (!d(e)) throw new Error("Array must be not empty");
308
- }, "ensureArrayIsNotEmpty", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e, r) {
309
- if (!c(e, r)) throw new Error("Array should has length ".concat(r));
310
- }, "ensureArrayHasLength", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e, r) {
311
- if (!l(e, r)) throw new Error("Array must have minimal length ".concat(r));
312
- }, "ensureArrayLengthGreaterThenOrEqual", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {}, "ensureNever", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
313
- return "".concat(e);
314
- }, "ensureAndGetString", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
315
- e();
316
- }, "runAsyncAction", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(f, "isNullOrEmpty", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
317
- return !f(e);
318
- }, "isNotNullOrEmpty", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
319
- return null == e || "" === e.trim();
320
- }, "isNullOrWhiteSpace", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
321
- return "/" === e.slice(-1) ? e.slice(0, -1) : e;
322
- }, "trimLastSlash", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {}, "assertIs", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts")), (i = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && i(e);
323
- },
324
- 133: function (e, r, t) {
325
- var o = "undefined" != typeof globalThis && globalThis || "undefined" != typeof self && self || void 0 !== o && o,
231
+ reactHotLoader = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0, reactHotLoader && (reactHotLoader.register(ApplicationError, "ApplicationError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts"), reactHotLoader.register(NotImplementedError, "NotImplementedError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts"), reactHotLoader.register(NotSupportedError, "NotSupportedError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts"), reactHotLoader.register(InvalidProgramStateError, "InvalidProgramStateError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts"), reactHotLoader.register(InvalidArgumentError, "InvalidArgumentError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts"), reactHotLoader.register(TypingError, "TypingError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\Errors.ts")), leaveModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0, leaveModule && leaveModule(module);
232
+ },
233
+ 255: function (e, r, t) {
234
+ var o, n, i;
235
+ function a(e) {
236
+ return a = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
237
+ return typeof e;
238
+ } : function (e) {
239
+ return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
240
+ }, a(e);
241
+ }
242
+ function u(e) {
243
+ return null != e;
244
+ }
245
+ function s(e) {
246
+ throw "string" == typeof e || null == e ? new Error(null != e ? e : "Undefined is not allowed") : e;
247
+ }
248
+ function l(e, r) {
249
+ return e.length >= r;
250
+ }
251
+ function c(e, r) {
252
+ return e.length === r;
253
+ }
254
+ function f(e) {
255
+ return e.length > 0;
256
+ }
257
+ function d(e) {
258
+ return null == e || "" === e;
259
+ }
260
+ t.d(r, {
261
+ d1: function () {
262
+ return s;
263
+ }
264
+ }), e = t.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature, (n = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (n.register(u, "isNotNullOrUndefined", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
265
+ return "object" === a(e) && (null == e ? void 0 : e.message);
266
+ }, "stringifyUnknownError", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
267
+ if (!u(e)) throw new Error("Value must be defined");
268
+ }, "ensureNotNullOrUndefined", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function () {}, "noop", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(s, "reject", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(l, "isLengthGreaterThenOrEqual", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e, r) {
269
+ if (l(e, r)) return e;
270
+ }, "minLengthOrUndefined", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(c, "arrayHasLength", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(f, "arrayIsNotEmpty", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
271
+ return e.length > 0;
272
+ }, "arrayHasAtLeastOneItem", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
273
+ if (!f(e)) throw new Error("Array must be not empty");
274
+ }, "ensureArrayIsNotEmpty", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e, r) {
275
+ if (!c(e, r)) throw new Error("Array should has length ".concat(r));
276
+ }, "ensureArrayHasLength", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e, r) {
277
+ if (!l(e, r)) throw new Error("Array must have minimal length ".concat(r));
278
+ }, "ensureArrayLengthGreaterThenOrEqual", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {}, "ensureNever", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
279
+ return "".concat(e);
280
+ }, "ensureAndGetString", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
281
+ e();
282
+ }, "runAsyncAction", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(d, "isNullOrEmpty", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
283
+ return !d(e);
284
+ }, "isNotNullOrEmpty", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
285
+ return null == e || "" === e.trim();
286
+ }, "isNullOrWhiteSpace", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {
287
+ return "/" === e.slice(-1) ? e.slice(0, -1) : e;
288
+ }, "trimLastSlash", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts"), n.register(function (e) {}, "assertIs", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Common\\TypingUtils.ts")), (i = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && i(e);
289
+ },
290
+ 133: function (e, r, t) {
291
+ var o = "undefined" != typeof globalThis && globalThis || "undefined" != typeof self && self || void 0 !== o && o,
326
292
  n = ("URLSearchParams" in o),
327
293
  i = "Symbol" in o && "iterator" in Symbol,
328
294
  a = "FileReader" in o && "Blob" in o && function () {
329
- try {
330
- return new Blob(), !0;
331
- } catch (e) {
332
- return !1;
333
- }
334
- }(),
335
- s = ("FormData" in o),
336
- u = ("ArrayBuffer" in o);
337
-
338
- if (u) var l = ["[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]"],
295
+ try {
296
+ return new Blob(), !0;
297
+ } catch (e) {
298
+ return !1;
299
+ }
300
+ }(),
301
+ u = ("FormData" in o),
302
+ s = ("ArrayBuffer" in o);
303
+ if (s) var l = ["[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]"],
339
304
  c = ArrayBuffer.isView || function (e) {
340
- return e && l.indexOf(Object.prototype.toString.call(e)) > -1;
341
- };
342
-
343
- function d(e) {
344
- if ("string" != typeof e && (e = String(e)), /[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(e) || "" === e) throw new TypeError('Invalid character in header field name: "' + e + '"');
345
- return e.toLowerCase();
346
- }
347
-
348
- function f(e) {
349
- return "string" != typeof e && (e = String(e)), e;
350
- }
351
-
352
- function p(e) {
353
- var r = {
354
- next: function () {
355
- var r = e.shift();
356
- return {
357
- done: void 0 === r,
358
- value: r
359
- };
360
- }
361
- };
362
- return i && (r[Symbol.iterator] = function () {
363
- return r;
364
- }), r;
365
- }
366
-
367
- function y(e) {
368
- this.map = {}, e instanceof y ? e.forEach(function (e, r) {
369
- this.append(r, e);
370
- }, this) : Array.isArray(e) ? e.forEach(function (e) {
371
- this.append(e[0], e[1]);
372
- }, this) : e && Object.getOwnPropertyNames(e).forEach(function (r) {
373
- this.append(r, e[r]);
374
- }, this);
375
- }
376
-
377
- function m(e) {
378
- if (e.bodyUsed) return Promise.reject(new TypeError("Already read"));
379
- e.bodyUsed = !0;
380
- }
381
-
382
- function h(e) {
383
- return new Promise(function (r, t) {
384
- e.onload = function () {
385
- r(e.result);
386
- }, e.onerror = function () {
387
- t(e.error);
305
+ return e && l.indexOf(Object.prototype.toString.call(e)) > -1;
388
306
  };
389
- });
390
- }
391
-
392
- function _(e) {
393
- var r = new FileReader(),
307
+ function f(e) {
308
+ if ("string" != typeof e && (e = String(e)), /[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(e) || "" === e) throw new TypeError('Invalid character in header field name: "' + e + '"');
309
+ return e.toLowerCase();
310
+ }
311
+ function d(e) {
312
+ return "string" != typeof e && (e = String(e)), e;
313
+ }
314
+ function p(e) {
315
+ var r = {
316
+ next: function () {
317
+ var r = e.shift();
318
+ return {
319
+ done: void 0 === r,
320
+ value: r
321
+ };
322
+ }
323
+ };
324
+ return i && (r[Symbol.iterator] = function () {
325
+ return r;
326
+ }), r;
327
+ }
328
+ function y(e) {
329
+ this.map = {}, e instanceof y ? e.forEach(function (e, r) {
330
+ this.append(r, e);
331
+ }, this) : Array.isArray(e) ? e.forEach(function (e) {
332
+ this.append(e[0], e[1]);
333
+ }, this) : e && Object.getOwnPropertyNames(e).forEach(function (r) {
334
+ this.append(r, e[r]);
335
+ }, this);
336
+ }
337
+ function m(e) {
338
+ if (e.bodyUsed) return Promise.reject(new TypeError("Already read"));
339
+ e.bodyUsed = !0;
340
+ }
341
+ function h(e) {
342
+ return new Promise(function (r, t) {
343
+ e.onload = function () {
344
+ r(e.result);
345
+ }, e.onerror = function () {
346
+ t(e.error);
347
+ };
348
+ });
349
+ }
350
+ function g(e) {
351
+ var r = new FileReader(),
394
352
  t = h(r);
395
- return r.readAsArrayBuffer(e), t;
396
- }
397
-
398
- function g(e) {
399
- if (e.slice) return e.slice(0);
400
- var r = new Uint8Array(e.byteLength);
401
- return r.set(new Uint8Array(e)), r.buffer;
402
- }
403
-
404
- function v() {
405
- return this.bodyUsed = !1, this._initBody = function (e) {
406
- var r;
407
- this.bodyUsed = this.bodyUsed, this._bodyInit = e, e ? "string" == typeof e ? this._bodyText = e : a && Blob.prototype.isPrototypeOf(e) ? this._bodyBlob = e : s && FormData.prototype.isPrototypeOf(e) ? this._bodyFormData = e : n && URLSearchParams.prototype.isPrototypeOf(e) ? this._bodyText = e.toString() : u && a && (r = e) && DataView.prototype.isPrototypeOf(r) ? (this._bodyArrayBuffer = g(e.buffer), this._bodyInit = new Blob([this._bodyArrayBuffer])) : u && (ArrayBuffer.prototype.isPrototypeOf(e) || c(e)) ? this._bodyArrayBuffer = g(e) : this._bodyText = e = Object.prototype.toString.call(e) : this._bodyText = "", this.headers.get("content-type") || ("string" == typeof e ? this.headers.set("content-type", "text/plain;charset=UTF-8") : this._bodyBlob && this._bodyBlob.type ? this.headers.set("content-type", this._bodyBlob.type) : n && URLSearchParams.prototype.isPrototypeOf(e) && this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"));
408
- }, a && (this.blob = function () {
409
- var e = m(this);
410
- if (e) return e;
411
- if (this._bodyBlob) return Promise.resolve(this._bodyBlob);
412
- if (this._bodyArrayBuffer) return Promise.resolve(new Blob([this._bodyArrayBuffer]));
413
- if (this._bodyFormData) throw new Error("could not read FormData body as blob");
414
- return Promise.resolve(new Blob([this._bodyText]));
415
- }, this.arrayBuffer = function () {
416
- return this._bodyArrayBuffer ? m(this) || (ArrayBuffer.isView(this._bodyArrayBuffer) ? Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset, this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength)) : Promise.resolve(this._bodyArrayBuffer)) : this.blob().then(_);
417
- }), this.text = function () {
418
- var e,
353
+ return r.readAsArrayBuffer(e), t;
354
+ }
355
+ function _(e) {
356
+ if (e.slice) return e.slice(0);
357
+ var r = new Uint8Array(e.byteLength);
358
+ return r.set(new Uint8Array(e)), r.buffer;
359
+ }
360
+ function v() {
361
+ return this.bodyUsed = !1, this._initBody = function (e) {
362
+ var r;
363
+ this.bodyUsed = this.bodyUsed, this._bodyInit = e, e ? "string" == typeof e ? this._bodyText = e : a && Blob.prototype.isPrototypeOf(e) ? this._bodyBlob = e : u && FormData.prototype.isPrototypeOf(e) ? this._bodyFormData = e : n && URLSearchParams.prototype.isPrototypeOf(e) ? this._bodyText = e.toString() : s && a && (r = e) && DataView.prototype.isPrototypeOf(r) ? (this._bodyArrayBuffer = _(e.buffer), this._bodyInit = new Blob([this._bodyArrayBuffer])) : s && (ArrayBuffer.prototype.isPrototypeOf(e) || c(e)) ? this._bodyArrayBuffer = _(e) : this._bodyText = e = Object.prototype.toString.call(e) : this._bodyText = "", this.headers.get("content-type") || ("string" == typeof e ? this.headers.set("content-type", "text/plain;charset=UTF-8") : this._bodyBlob && this._bodyBlob.type ? this.headers.set("content-type", this._bodyBlob.type) : n && URLSearchParams.prototype.isPrototypeOf(e) && this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8"));
364
+ }, a && (this.blob = function () {
365
+ var e = m(this);
366
+ if (e) return e;
367
+ if (this._bodyBlob) return Promise.resolve(this._bodyBlob);
368
+ if (this._bodyArrayBuffer) return Promise.resolve(new Blob([this._bodyArrayBuffer]));
369
+ if (this._bodyFormData) throw new Error("could not read FormData body as blob");
370
+ return Promise.resolve(new Blob([this._bodyText]));
371
+ }, this.arrayBuffer = function () {
372
+ return this._bodyArrayBuffer ? m(this) || (ArrayBuffer.isView(this._bodyArrayBuffer) ? Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset, this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength)) : Promise.resolve(this._bodyArrayBuffer)) : this.blob().then(g);
373
+ }), this.text = function () {
374
+ var e,
419
375
  r,
420
376
  t,
421
377
  o = m(this);
422
- if (o) return o;
423
- if (this._bodyBlob) return e = this._bodyBlob, t = h(r = new FileReader()), r.readAsText(e), t;
424
- if (this._bodyArrayBuffer) return Promise.resolve(function (e) {
425
- for (var r = new Uint8Array(e), t = new Array(r.length), o = 0; o < r.length; o++) t[o] = String.fromCharCode(r[o]);
426
-
427
- return t.join("");
428
- }(this._bodyArrayBuffer));
429
- if (this._bodyFormData) throw new Error("could not read FormData body as text");
430
- return Promise.resolve(this._bodyText);
431
- }, s && (this.formData = function () {
432
- return this.text().then(w);
433
- }), this.json = function () {
434
- return this.text().then(JSON.parse);
435
- }, this;
436
- }
437
-
438
- y.prototype.append = function (e, r) {
439
- e = d(e), r = f(r);
440
- var t = this.map[e];
441
- this.map[e] = t ? t + ", " + r : r;
442
- }, y.prototype.delete = function (e) {
443
- delete this.map[d(e)];
444
- }, y.prototype.get = function (e) {
445
- return e = d(e), this.has(e) ? this.map[e] : null;
446
- }, y.prototype.has = function (e) {
447
- return this.map.hasOwnProperty(d(e));
448
- }, y.prototype.set = function (e, r) {
449
- this.map[d(e)] = f(r);
450
- }, y.prototype.forEach = function (e, r) {
451
- for (var t in this.map) this.map.hasOwnProperty(t) && e.call(r, this.map[t], t, this);
452
- }, y.prototype.keys = function () {
453
- var e = [];
454
- return this.forEach(function (r, t) {
455
- e.push(t);
456
- }), p(e);
457
- }, y.prototype.values = function () {
458
- var e = [];
459
- return this.forEach(function (r) {
460
- e.push(r);
461
- }), p(e);
462
- }, y.prototype.entries = function () {
463
- var e = [];
464
- return this.forEach(function (r, t) {
465
- e.push([t, r]);
466
- }), p(e);
467
- }, i && (y.prototype[Symbol.iterator] = y.prototype.entries);
468
- var b = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"];
469
-
470
- function E(e, r) {
471
- if (!(this instanceof E)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
472
- var t,
378
+ if (o) return o;
379
+ if (this._bodyBlob) return e = this._bodyBlob, t = h(r = new FileReader()), r.readAsText(e), t;
380
+ if (this._bodyArrayBuffer) return Promise.resolve(function (e) {
381
+ for (var r = new Uint8Array(e), t = new Array(r.length), o = 0; o < r.length; o++) t[o] = String.fromCharCode(r[o]);
382
+ return t.join("");
383
+ }(this._bodyArrayBuffer));
384
+ if (this._bodyFormData) throw new Error("could not read FormData body as text");
385
+ return Promise.resolve(this._bodyText);
386
+ }, u && (this.formData = function () {
387
+ return this.text().then(E);
388
+ }), this.json = function () {
389
+ return this.text().then(JSON.parse);
390
+ }, this;
391
+ }
392
+ y.prototype.append = function (e, r) {
393
+ e = f(e), r = d(r);
394
+ var t = this.map[e];
395
+ this.map[e] = t ? t + ", " + r : r;
396
+ }, y.prototype.delete = function (e) {
397
+ delete this.map[f(e)];
398
+ }, y.prototype.get = function (e) {
399
+ return e = f(e), this.has(e) ? this.map[e] : null;
400
+ }, y.prototype.has = function (e) {
401
+ return this.map.hasOwnProperty(f(e));
402
+ }, y.prototype.set = function (e, r) {
403
+ this.map[f(e)] = d(r);
404
+ }, y.prototype.forEach = function (e, r) {
405
+ for (var t in this.map) this.map.hasOwnProperty(t) && e.call(r, this.map[t], t, this);
406
+ }, y.prototype.keys = function () {
407
+ var e = [];
408
+ return this.forEach(function (r, t) {
409
+ e.push(t);
410
+ }), p(e);
411
+ }, y.prototype.values = function () {
412
+ var e = [];
413
+ return this.forEach(function (r) {
414
+ e.push(r);
415
+ }), p(e);
416
+ }, y.prototype.entries = function () {
417
+ var e = [];
418
+ return this.forEach(function (r, t) {
419
+ e.push([t, r]);
420
+ }), p(e);
421
+ }, i && (y.prototype[Symbol.iterator] = y.prototype.entries);
422
+ var b = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"];
423
+ function w(e, r) {
424
+ if (!(this instanceof w)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
425
+ var t,
473
426
  o,
474
427
  n = (r = r || {}).body;
475
-
476
- if (e instanceof E) {
477
- if (e.bodyUsed) throw new TypeError("Already read");
478
- this.url = e.url, this.credentials = e.credentials, r.headers || (this.headers = new y(e.headers)), this.method = e.method, this.mode = e.mode, this.signal = e.signal, n || null == e._bodyInit || (n = e._bodyInit, e.bodyUsed = !0);
479
- } else this.url = String(e);
480
-
481
- if (this.credentials = r.credentials || this.credentials || "same-origin", !r.headers && this.headers || (this.headers = new y(r.headers)), this.method = (o = (t = r.method || this.method || "GET").toUpperCase(), b.indexOf(o) > -1 ? o : t), this.mode = r.mode || this.mode || null, this.signal = r.signal || this.signal, this.referrer = null, ("GET" === this.method || "HEAD" === this.method) && n) throw new TypeError("Body not allowed for GET or HEAD requests");
482
-
483
- if (this._initBody(n), !("GET" !== this.method && "HEAD" !== this.method || "no-store" !== r.cache && "no-cache" !== r.cache)) {
484
- var i = /([?&])_=[^&]*/;
485
- i.test(this.url) ? this.url = this.url.replace(i, "$1_=" + new Date().getTime()) : this.url += (/\?/.test(this.url) ? "&" : "?") + "_=" + new Date().getTime();
428
+ if (e instanceof w) {
429
+ if (e.bodyUsed) throw new TypeError("Already read");
430
+ this.url = e.url, this.credentials = e.credentials, r.headers || (this.headers = new y(e.headers)), this.method = e.method, this.mode = e.mode, this.signal = e.signal, n || null == e._bodyInit || (n = e._bodyInit, e.bodyUsed = !0);
431
+ } else this.url = String(e);
432
+ if (this.credentials = r.credentials || this.credentials || "same-origin", !r.headers && this.headers || (this.headers = new y(r.headers)), this.method = (o = (t = r.method || this.method || "GET").toUpperCase(), b.indexOf(o) > -1 ? o : t), this.mode = r.mode || this.mode || null, this.signal = r.signal || this.signal, this.referrer = null, ("GET" === this.method || "HEAD" === this.method) && n) throw new TypeError("Body not allowed for GET or HEAD requests");
433
+ if (this._initBody(n), !("GET" !== this.method && "HEAD" !== this.method || "no-store" !== r.cache && "no-cache" !== r.cache)) {
434
+ var i = /([?&])_=[^&]*/;
435
+ i.test(this.url) ? this.url = this.url.replace(i, "$1_=" + new Date().getTime()) : this.url += (/\?/.test(this.url) ? "&" : "?") + "_=" + new Date().getTime();
436
+ }
486
437
  }
487
- }
488
-
489
- function w(e) {
490
- var r = new FormData();
491
- return e.trim().split("&").forEach(function (e) {
492
- if (e) {
493
- var t = e.split("="),
438
+ function E(e) {
439
+ var r = new FormData();
440
+ return e.trim().split("&").forEach(function (e) {
441
+ if (e) {
442
+ var t = e.split("="),
494
443
  o = t.shift().replace(/\+/g, " "),
495
444
  n = t.join("=").replace(/\+/g, " ");
496
- r.append(decodeURIComponent(o), decodeURIComponent(n));
497
- }
498
- }), r;
499
- }
500
-
501
- function C(e, r) {
502
- if (!(this instanceof C)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
503
- r || (r = {}), this.type = "default", this.status = void 0 === r.status ? 200 : r.status, this.ok = this.status >= 200 && this.status < 300, this.statusText = void 0 === r.statusText ? "" : "" + r.statusText, this.headers = new y(r.headers), this.url = r.url || "", this._initBody(e);
504
- }
505
-
506
- E.prototype.clone = function () {
507
- return new E(this, {
508
- body: this._bodyInit
509
- });
510
- }, v.call(E.prototype), v.call(C.prototype), C.prototype.clone = function () {
511
- return new C(this._bodyInit, {
512
- status: this.status,
513
- statusText: this.statusText,
514
- headers: new y(this.headers),
515
- url: this.url
516
- });
517
- }, C.error = function () {
518
- var e = new C(null, {
519
- status: 0,
520
- statusText: ""
521
- });
522
- return e.type = "error", e;
523
- };
524
- var k = [301, 302, 303, 307, 308];
525
-
526
- C.redirect = function (e, r) {
527
- if (-1 === k.indexOf(r)) throw new RangeError("Invalid status code");
528
- return new C(null, {
529
- status: r,
530
- headers: {
531
- location: e
532
- }
533
- });
534
- };
535
-
536
- var A = o.DOMException;
537
-
538
- try {
539
- new A();
540
- } catch (e) {
541
- (A = function (e, r) {
542
- this.message = e, this.name = r;
543
- var t = Error(e);
544
- this.stack = t.stack;
545
- }).prototype = Object.create(Error.prototype), A.prototype.constructor = A;
546
- }
547
-
548
- function P(e, r) {
549
- return new Promise(function (t, n) {
550
- var i = new E(e, r);
551
- if (i.signal && i.signal.aborted) return n(new A("Aborted", "AbortError"));
552
- var s = new XMLHttpRequest();
553
-
554
- function l() {
555
- s.abort();
556
- }
557
-
558
- s.onload = function () {
559
- var e,
445
+ r.append(decodeURIComponent(o), decodeURIComponent(n));
446
+ }
447
+ }), r;
448
+ }
449
+ function C(e, r) {
450
+ if (!(this instanceof C)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
451
+ r || (r = {}), this.type = "default", this.status = void 0 === r.status ? 200 : r.status, this.ok = this.status >= 200 && this.status < 300, this.statusText = void 0 === r.statusText ? "" : "" + r.statusText, this.headers = new y(r.headers), this.url = r.url || "", this._initBody(e);
452
+ }
453
+ w.prototype.clone = function () {
454
+ return new w(this, {
455
+ body: this._bodyInit
456
+ });
457
+ }, v.call(w.prototype), v.call(C.prototype), C.prototype.clone = function () {
458
+ return new C(this._bodyInit, {
459
+ status: this.status,
460
+ statusText: this.statusText,
461
+ headers: new y(this.headers),
462
+ url: this.url
463
+ });
464
+ }, C.error = function () {
465
+ var e = new C(null, {
466
+ status: 0,
467
+ statusText: ""
468
+ });
469
+ return e.type = "error", e;
470
+ };
471
+ var k = [301, 302, 303, 307, 308];
472
+ C.redirect = function (e, r) {
473
+ if (-1 === k.indexOf(r)) throw new RangeError("Invalid status code");
474
+ return new C(null, {
475
+ status: r,
476
+ headers: {
477
+ location: e
478
+ }
479
+ });
480
+ };
481
+ var P = o.DOMException;
482
+ try {
483
+ new P();
484
+ } catch (e) {
485
+ (P = function (e, r) {
486
+ this.message = e, this.name = r;
487
+ var t = Error(e);
488
+ this.stack = t.stack;
489
+ }).prototype = Object.create(Error.prototype), P.prototype.constructor = P;
490
+ }
491
+ function A(e, r) {
492
+ return new Promise(function (t, n) {
493
+ var i = new w(e, r);
494
+ if (i.signal && i.signal.aborted) return n(new P("Aborted", "AbortError"));
495
+ var u = new XMLHttpRequest();
496
+ function l() {
497
+ u.abort();
498
+ }
499
+ u.onload = function () {
500
+ var e,
560
501
  r,
561
502
  o = {
562
- status: s.status,
563
- statusText: s.statusText,
564
- headers: (e = s.getAllResponseHeaders() || "", r = new y(), e.replace(/\r?\n[\t ]+/g, " ").split("\r").map(function (e) {
565
- return 0 === e.indexOf("\n") ? e.substr(1, e.length) : e;
566
- }).forEach(function (e) {
567
- var t = e.split(":"),
568
- o = t.shift().trim();
569
-
570
- if (o) {
571
- var n = t.join(":").trim();
572
- r.append(o, n);
573
- }
574
- }), r)
575
- };
576
- o.url = "responseURL" in s ? s.responseURL : o.headers.get("X-Request-URL");
577
- var n = "response" in s ? s.response : s.responseText;
578
- setTimeout(function () {
579
- t(new C(n, o));
580
- }, 0);
581
- }, s.onerror = function () {
582
- setTimeout(function () {
583
- n(new TypeError("Network request failed"));
584
- }, 0);
585
- }, s.ontimeout = function () {
586
- setTimeout(function () {
587
- n(new TypeError("Network request failed"));
588
- }, 0);
589
- }, s.onabort = function () {
590
- setTimeout(function () {
591
- n(new A("Aborted", "AbortError"));
592
- }, 0);
593
- }, s.open(i.method, function (e) {
594
- try {
595
- return "" === e && o.location.href ? o.location.href : e;
596
- } catch (r) {
597
- return e;
598
- }
599
- }(i.url), !0), "include" === i.credentials ? s.withCredentials = !0 : "omit" === i.credentials && (s.withCredentials = !1), "responseType" in s && (a ? s.responseType = "blob" : u && i.headers.get("Content-Type") && -1 !== i.headers.get("Content-Type").indexOf("application/octet-stream") && (s.responseType = "arraybuffer")), !r || "object" != typeof r.headers || r.headers instanceof y ? i.headers.forEach(function (e, r) {
600
- s.setRequestHeader(r, e);
601
- }) : Object.getOwnPropertyNames(r.headers).forEach(function (e) {
602
- s.setRequestHeader(e, f(r.headers[e]));
603
- }), i.signal && (i.signal.addEventListener("abort", l), s.onreadystatechange = function () {
604
- 4 === s.readyState && i.signal.removeEventListener("abort", l);
605
- }), s.send(void 0 === i._bodyInit ? null : i._bodyInit);
606
- });
607
- }
608
-
609
- P.polyfill = !0, o.fetch || (o.fetch = P, o.Headers = y, o.Request = E, o.Response = C);
610
- var O,
503
+ status: u.status,
504
+ statusText: u.statusText,
505
+ headers: (e = u.getAllResponseHeaders() || "", r = new y(), e.replace(/\r?\n[\t ]+/g, " ").split("\r").map(function (e) {
506
+ return 0 === e.indexOf("\n") ? e.substr(1, e.length) : e;
507
+ }).forEach(function (e) {
508
+ var t = e.split(":"),
509
+ o = t.shift().trim();
510
+ if (o) {
511
+ var n = t.join(":").trim();
512
+ r.append(o, n);
513
+ }
514
+ }), r)
515
+ };
516
+ o.url = "responseURL" in u ? u.responseURL : o.headers.get("X-Request-URL");
517
+ var n = "response" in u ? u.response : u.responseText;
518
+ setTimeout(function () {
519
+ t(new C(n, o));
520
+ }, 0);
521
+ }, u.onerror = function () {
522
+ setTimeout(function () {
523
+ n(new TypeError("Network request failed"));
524
+ }, 0);
525
+ }, u.ontimeout = function () {
526
+ setTimeout(function () {
527
+ n(new TypeError("Network request failed"));
528
+ }, 0);
529
+ }, u.onabort = function () {
530
+ setTimeout(function () {
531
+ n(new P("Aborted", "AbortError"));
532
+ }, 0);
533
+ }, u.open(i.method, function (e) {
534
+ try {
535
+ return "" === e && o.location.href ? o.location.href : e;
536
+ } catch (r) {
537
+ return e;
538
+ }
539
+ }(i.url), !0), "include" === i.credentials ? u.withCredentials = !0 : "omit" === i.credentials && (u.withCredentials = !1), "responseType" in u && (a ? u.responseType = "blob" : s && i.headers.get("Content-Type") && -1 !== i.headers.get("Content-Type").indexOf("application/octet-stream") && (u.responseType = "arraybuffer")), !r || "object" != typeof r.headers || r.headers instanceof y ? i.headers.forEach(function (e, r) {
540
+ u.setRequestHeader(r, e);
541
+ }) : Object.getOwnPropertyNames(r.headers).forEach(function (e) {
542
+ u.setRequestHeader(e, d(r.headers[e]));
543
+ }), i.signal && (i.signal.addEventListener("abort", l), u.onreadystatechange = function () {
544
+ 4 === u.readyState && i.signal.removeEventListener("abort", l);
545
+ }), u.send(void 0 === i._bodyInit ? null : i._bodyInit);
546
+ });
547
+ }
548
+ A.polyfill = !0, o.fetch || (o.fetch = A, o.Headers = y, o.Request = w, o.Response = C);
549
+ var O,
611
550
  L = t(255),
612
- B = t(412),
613
- T = t(730),
614
- S = t(68),
615
- I = t(152);
616
-
617
- function j(e, r) {
618
- var t = Object.keys(e);
619
-
620
- if (Object.getOwnPropertySymbols) {
621
- var o = Object.getOwnPropertySymbols(e);
622
- r && (o = o.filter(function (r) {
623
- return Object.getOwnPropertyDescriptor(e, r).enumerable;
624
- })), t.push.apply(t, o);
551
+ S = t(412),
552
+ B = t(730),
553
+ T = t(68),
554
+ j = t(152);
555
+ function I(e) {
556
+ return I = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
557
+ return typeof e;
558
+ } : function (e) {
559
+ return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
560
+ }, I(e);
625
561
  }
626
-
627
- return t;
628
- }
629
-
630
- function H(e) {
631
- for (var r = 1; r < arguments.length; r++) {
632
- var t = null != arguments[r] ? arguments[r] : {};
633
- r % 2 ? j(Object(t), !0).forEach(function (r) {
634
- U(e, r, t[r]);
635
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : j(Object(t)).forEach(function (r) {
636
- Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
637
- });
562
+ function F(e, r) {
563
+ var t = Object.keys(e);
564
+ if (Object.getOwnPropertySymbols) {
565
+ var o = Object.getOwnPropertySymbols(e);
566
+ r && (o = o.filter(function (r) {
567
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
568
+ })), t.push.apply(t, o);
569
+ }
570
+ return t;
638
571
  }
639
-
640
- return e;
641
- }
642
-
643
- function U(e, r, t) {
644
- return r in e ? Object.defineProperty(e, r, {
645
- value: t,
646
- enumerable: !0,
647
- configurable: !0,
648
- writable: !0
649
- }) : e[r] = t, e;
650
- }
651
-
652
- function F(e, r) {
653
- (null == r || r > e.length) && (r = e.length);
654
-
655
- for (var t = 0, o = new Array(r); t < r; t++) o[t] = e[t];
656
-
657
- return o;
658
- }
659
-
660
- function M() {}
661
-
662
- function D(e) {
663
- return "string" == typeof e ? "false" !== e && "true" === e : Boolean(e);
664
- }
665
-
666
- function G() {
667
- var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
572
+ function H(e) {
573
+ for (var r = 1; r < arguments.length; r++) {
574
+ var t = null != arguments[r] ? arguments[r] : {};
575
+ r % 2 ? F(Object(t), !0).forEach(function (r) {
576
+ U(e, r, t[r]);
577
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : F(Object(t)).forEach(function (r) {
578
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
579
+ });
580
+ }
581
+ return e;
582
+ }
583
+ function U(e, r, t) {
584
+ return (r = function (e) {
585
+ var r = function (e, r) {
586
+ if ("object" !== I(e) || null === e) return e;
587
+ var t = e[Symbol.toPrimitive];
588
+ if (void 0 !== t) {
589
+ var o = t.call(e, r);
590
+ if ("object" !== I(o)) return o;
591
+ throw new TypeError("@@toPrimitive must return a primitive value.");
592
+ }
593
+ return String(e);
594
+ }(e, "string");
595
+ return "symbol" === I(r) ? r : String(r);
596
+ }(r)) in e ? Object.defineProperty(e, r, {
597
+ value: t,
598
+ enumerable: !0,
599
+ configurable: !0,
600
+ writable: !0
601
+ }) : e[r] = t, e;
602
+ }
603
+ function M(e, r) {
604
+ (null == r || r > e.length) && (r = e.length);
605
+ for (var t = 0, o = new Array(r); t < r; t++) o[t] = e[t];
606
+ return o;
607
+ }
608
+ function G() {}
609
+ function x(e) {
610
+ return "string" == typeof e ? "false" !== e && "true" === e : Boolean(e);
611
+ }
612
+ function D() {
613
+ var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
668
614
  r = t.g.CF.keformsUrl || "";
669
- return "".concat(r, "/").concat(e).replace(/([^:])\/{2,}/g, "$1/");
670
- }
671
-
672
- function R(e, r) {
673
- if (void 0 === r) return e;
674
-
675
- for (var t = [], o = 0, n = Object.keys(r); o < n.length; o++) {
676
- var i = n[o],
615
+ return "".concat(r, "/").concat(e).replace(/([^:])\/{2,}/g, "$1/");
616
+ }
617
+ function R(e, r) {
618
+ if (void 0 === r) return e;
619
+ for (var t = [], o = 0, n = Object.keys(r); o < n.length; o++) {
620
+ var i = n[o],
677
621
  a = r[i];
678
- null != a && t.push("".concat(i, "=").concat(encodeURIComponent(a)));
622
+ null != a && t.push("".concat(i, "=").concat(encodeURIComponent(a)));
623
+ }
624
+ return 0 === t.length ? e : e + "?" + t.join("&");
679
625
  }
680
-
681
- return 0 === t.length ? e : e + "?" + t.join("&");
682
- }
683
-
684
- function x(e) {
685
- return new RegExp("^(?:".concat(e.replace(/\./g, "\\.").replace(/\*/g, "[a-z0-9-.]+"), ")$")).test(t.g.location.host);
686
- }
687
-
688
- function N(e) {
689
- return (t.g.location.search.trim().replace(/^(\?|#|&)/, "").split("&").map(function (e) {
690
- return e.replace(/\+/g, " ").split("=").map(decodeURIComponent);
691
- }).find(function (r) {
692
- return (t = r, o = 1, function (e) {
693
- if (Array.isArray(e)) return e;
694
- }(t) || function (e, r) {
695
- var t = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
696
-
697
- if (null != t) {
698
- var o,
626
+ function N(e) {
627
+ return new RegExp("^(?:".concat(e.replace(/\./g, "\\.").replace(/\*/g, "[a-z0-9-.]+"), ")$")).test(t.g.location.host);
628
+ }
629
+ function V(e) {
630
+ return (t.g.location.search.trim().replace(/^(\?|#|&)/, "").split("&").map(function (e) {
631
+ return e.replace(/\+/g, " ").split("=").map(decodeURIComponent);
632
+ }).find(function (r) {
633
+ return (t = r, o = 1, function (e) {
634
+ if (Array.isArray(e)) return e;
635
+ }(t) || function (e, r) {
636
+ var t = null == e ? null : "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"];
637
+ if (null != t) {
638
+ var o,
699
639
  n,
700
- i = [],
701
- a = !0,
702
- s = !1;
703
-
704
- try {
705
- for (t = t.call(e); !(a = (o = t.next()).done) && (i.push(o.value), !r || i.length !== r); a = !0);
706
- } catch (e) {
707
- s = !0, n = e;
708
- } finally {
640
+ i,
641
+ a,
642
+ u = [],
643
+ s = !0,
644
+ l = !1;
709
645
  try {
710
- a || null == t.return || t.return();
646
+ if (i = (t = t.call(e)).next, 0 === r) {
647
+ if (Object(t) !== t) return;
648
+ s = !1;
649
+ } else for (; !(s = (o = i.call(t)).done) && (u.push(o.value), u.length !== r); s = !0);
650
+ } catch (e) {
651
+ l = !0, n = e;
711
652
  } finally {
712
- if (s) throw n;
653
+ try {
654
+ if (!s && null != t.return && (a = t.return(), Object(a) !== a)) return;
655
+ } finally {
656
+ if (l) throw n;
657
+ }
713
658
  }
659
+ return u;
714
660
  }
715
-
716
- return i;
717
- }
718
- }(t, o) || function (e, r) {
719
- if (e) {
720
- if ("string" == typeof e) return F(e, r);
721
- var t = Object.prototype.toString.call(e).slice(8, -1);
722
- return "Object" === t && e.constructor && (t = e.constructor.name), "Map" === t || "Set" === t ? Array.from(e) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? F(e, r) : void 0;
723
- }
724
- }(t, o) || function () {
725
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
726
- }())[0] == e;
727
- var t, o;
728
- }) || [])[1];
729
- }
730
-
731
- function V(e, r) {
732
- var t = 0;
733
- e.forEach(function (o) {
734
- o(function (o) {
735
- if (t !== e.length) {
736
- if (o) return t = e.length, void r(o);
737
- (t += 1) === e.length && r();
738
- }
661
+ }(t, o) || function (e, r) {
662
+ if (e) {
663
+ if ("string" == typeof e) return M(e, r);
664
+ var t = Object.prototype.toString.call(e).slice(8, -1);
665
+ return "Object" === t && e.constructor && (t = e.constructor.name), "Map" === t || "Set" === t ? Array.from(e) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? M(e, r) : void 0;
666
+ }
667
+ }(t, o) || function () {
668
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
669
+ }())[0] == e;
670
+ var t, o;
671
+ }) || [])[1];
672
+ }
673
+ function q(e, r) {
674
+ var t = 0;
675
+ e.forEach(function (o) {
676
+ o(function (o) {
677
+ if (t !== e.length) {
678
+ if (o) return t = e.length, void r(o);
679
+ (t += 1) === e.length && r();
680
+ }
681
+ });
739
682
  });
740
- });
741
- }
742
-
743
- function q(e, r) {
744
- var o = e.gfv,
683
+ }
684
+ function K(e, r) {
685
+ var o = e.gfv,
745
686
  n = e.engineVersion,
746
687
  i = e.resourcesVersion;
747
- if (t.g.CF.entryPoint[o]) r();else {
748
- var a = n && !t.g[n],
749
- s = "true" === N("debug") ? "" : ".min",
750
- u = [],
688
+ if (t.g.CF.entryPoint[o]) r();else {
689
+ var a = n && !t.g[n],
690
+ u = "true" === V("debug") ? "" : ".min",
691
+ s = [],
751
692
  l = {
752
- v: i,
753
- resourceZone: e.resourceZone
754
- };
755
- u.push(function (e) {
756
- return B.e.styleSheet(G(R("static/public/styles/".concat(o).concat(s, ".css"), l)), !0, e);
757
- }), u.push(function (e) {
758
- return B.e.script(G(R("static/public/scripts/".concat(o).concat(s, ".js"), l)), e);
759
- }), a && u.push(function (e) {
760
- return B.e.styleSheet(G(R("static/public/styles/candy_".concat(n).concat(s, ".css"), l)), !1, e);
761
- }, function (e) {
762
- return B.e.script(G(R("static/public/scripts/candy_".concat(n).concat(s, ".js"), l)), e);
763
- }), V(u, r);
693
+ v: i,
694
+ resourceZone: e.resourceZone
695
+ };
696
+ s.push(function (e) {
697
+ return S.e.styleSheet(D(R("static/public/styles/".concat(o).concat(u, ".css"), l)), !0, e);
698
+ }), s.push(function (e) {
699
+ return S.e.script(D(R("static/public/scripts/".concat(o).concat(u, ".js"), l)), e);
700
+ }), a && s.push(function (e) {
701
+ return S.e.styleSheet(D(R("static/public/styles/candy_".concat(n).concat(u, ".css"), l)), !1, e);
702
+ }, function (e) {
703
+ return S.e.script(D(R("static/public/scripts/candy_".concat(n).concat(u, ".js"), l)), e);
704
+ }), q(s, r);
705
+ }
764
706
  }
765
- }
766
-
767
- function Z(e, r, o) {
768
- var n;
769
- (null !== (n = t.g.CF.entryPoint[r.gfv]) && void 0 !== n ? n : (0, L.d1)("Form entry point ".concat(r.gfv, " not found.")))(e, r).then(function (e) {
770
- var r = e.publicForm || (0, I.P)(e);
771
- o(null, r);
772
- }).catch(o);
773
- }
774
-
775
- function K(e) {
776
- if (null != e) return t.g[e] && t.g[e].default;
777
- }
778
-
779
- function W(e, r) {
780
- var o,
707
+ function Z(e, r, o) {
708
+ var n;
709
+ (null !== (n = t.g.CF.entryPoint[r.gfv]) && void 0 !== n ? n : (0, L.d1)("Form entry point ".concat(r.gfv, " not found.")))(e, r).then(function (e) {
710
+ var r = e.publicForm || (0, j.P)(e);
711
+ o(null, r);
712
+ }).catch(o);
713
+ }
714
+ function W(e) {
715
+ if (null != e) return t.g[e] && t.g[e].default;
716
+ }
717
+ function z(e, r) {
718
+ var o,
781
719
  n,
782
- i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : M,
720
+ i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : G,
783
721
  a = null,
784
- s = r.ns,
785
- u = r.draftId;
786
- if (x(S.Z.konturDomains) ? S.Z.authorized ? u ? s || (a = new Error("options.ns is required")) : a = new Error("options.draftId is required") : a = new Error("user.unauthenticated") : a = new Error("domain.untrusted"), a) i(a);else {
787
- var l = null !== (o = r.resourceZone) && void 0 !== o ? o : N("resourceZone"),
788
- c = R(G((0, T.m)({
789
- ns: s,
790
- draftId: u
791
- })), {
792
- resourceZone: l
793
- }),
794
- d = {
795
- method: "GET"
796
- };
797
- if (null == r.authentication || "browser-credentials-include" === r.authentication) d.credentials = "include";else if ("authSid" in r.authentication && null != r.authentication.authSid) {
798
- var f;
799
- d.credentials = "omit", d.headers = null !== (f = d.headers) && void 0 !== f ? f : {}, d.headers.Authorization = "AUTH.SID ".concat(r.authentication.authSid);
800
- } else d.credentials = "omit";
801
- var p = null !== (n = r.fetch) && void 0 !== n ? n : P;
802
- p(c, d).then(function (e) {
803
- return e.json();
804
- }).then(function (o) {
805
- var n,
722
+ u = r.ns,
723
+ s = r.draftId;
724
+ if (N(T.Z.konturDomains) ? T.Z.authorized ? s ? u || (a = new Error("options.ns is required")) : a = new Error("options.draftId is required") : a = new Error("user.unauthenticated") : a = new Error("domain.untrusted"), a) i(a);else {
725
+ var l = null !== (o = r.resourceZone) && void 0 !== o ? o : V("resourceZone"),
726
+ c = R(D((0, B.m)({
727
+ ns: u,
728
+ draftId: s
729
+ })), {
730
+ resourceZone: l
731
+ }),
732
+ f = {
733
+ method: "GET"
734
+ };
735
+ if (null == r.authentication || "browser-credentials-include" === r.authentication) f.credentials = "include";else if ("authSid" in r.authentication && null != r.authentication.authSid) {
736
+ var d;
737
+ f.credentials = "omit", f.headers = null !== (d = f.headers) && void 0 !== d ? d : {}, f.headers.Authorization = "AUTH.SID ".concat(r.authentication.authSid);
738
+ } else f.credentials = "omit";
739
+ var p = null !== (n = r.fetch) && void 0 !== n ? n : A;
740
+ p(c, f).then(function (e) {
741
+ return e.json();
742
+ }).then(function (o) {
743
+ var n,
806
744
  a,
807
- s,
808
745
  u,
746
+ s,
809
747
  c = o.gfv,
810
- d = o.engineVersion,
811
- f = H(H(H({
812
- authorized: S.Z.authorized,
813
- cauldronApiUrl: S.Z.cauldronApiUrl,
814
- isTestServer: S.Z.isTestServer,
815
- renderCachingForIE8: S.Z.renderCachingForIE8,
816
- normalizationOnServer: S.Z.normalizationOnServer,
817
- normativeUrl: S.Z.normativeUrl,
818
- resourcesVersion: S.Z.resourcesVersion,
819
- konturDomains: S.Z.konturDomains
820
- }, r), o), {}, {
821
- gfv: c,
822
- engineVersion: d,
823
- feedbackEnabled: null !== (n = r.feedbackEnabled) && void 0 !== n ? n : o.feedbackEnabled,
824
- isDisabledCleanForm: null !== (a = r.isDisabledCleanForm) && void 0 !== a && a,
825
- isDisabledCloseButton: null !== (s = r.isDisabledCloseButton) && void 0 !== s && s,
826
- isDisabledCloseAndSaveButton: null !== (u = r.isDisabledCloseAndSaveButton) && void 0 !== u && u,
827
- resourceZone: l
828
- });
829
- q({
830
- gfv: f.gfv,
831
- engineVersion: f.engineVersion,
832
- resourceZone: f.resourceZone,
833
- resourcesVersion: f.resourcesVersion,
834
- theme: f.theme
835
- }, function (o) {
836
- if (!o && t.g.CF.entryPoint[c]) {
837
- var n = K(d);
838
- Z(e, H(H({}, f), {}, {
839
- templatesApi: r.templatesApi,
840
- renderForm: n
841
- }), i);
842
- } else i(new Error("dynamic loading is not supported for gfv ".concat(c)));
843
- });
844
- }).catch(i);
748
+ f = o.engineVersion,
749
+ d = H(H(H({
750
+ authorized: T.Z.authorized,
751
+ cauldronApiUrl: T.Z.cauldronApiUrl,
752
+ isTestServer: T.Z.isTestServer,
753
+ renderCachingForIE8: T.Z.renderCachingForIE8,
754
+ normalizationOnServer: T.Z.normalizationOnServer,
755
+ normativeUrl: T.Z.normativeUrl,
756
+ resourcesVersion: T.Z.resourcesVersion,
757
+ konturDomains: T.Z.konturDomains
758
+ }, r), o), {}, {
759
+ gfv: c,
760
+ engineVersion: f,
761
+ feedbackEnabled: null !== (n = r.feedbackEnabled) && void 0 !== n ? n : o.feedbackEnabled,
762
+ isDisabledCleanForm: null !== (a = r.isDisabledCleanForm) && void 0 !== a && a,
763
+ isDisabledCloseButton: null !== (u = r.isDisabledCloseButton) && void 0 !== u && u,
764
+ isDisabledCloseAndSaveButton: null !== (s = r.isDisabledCloseAndSaveButton) && void 0 !== s && s,
765
+ resourceZone: l
766
+ });
767
+ K({
768
+ gfv: d.gfv,
769
+ engineVersion: d.engineVersion,
770
+ resourceZone: d.resourceZone,
771
+ resourcesVersion: d.resourcesVersion,
772
+ theme: d.theme
773
+ }, function (o) {
774
+ if (!o && t.g.CF.entryPoint[c]) {
775
+ var n = W(f);
776
+ Z(e, H(H({}, d), {}, {
777
+ templatesApi: r.templatesApi,
778
+ renderForm: n
779
+ }), i);
780
+ } else i(new Error("dynamic loading is not supported for gfv ".concat(c)));
781
+ });
782
+ }).catch(i);
783
+ }
845
784
  }
846
- }
847
-
848
- e = t.hmd(e), (O = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && O(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
849
- var z,
850
- $,
851
- X = {
852
- start: W,
853
- entryPoint: {},
854
- partialRenderingForIE8: D("{partialRenderingForIE8}"),
855
- keformsUrl: "{keformsUrl}"
856
- };
857
- t.g.CF = X, (z = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (z.register(M, "defaultCallback", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), z.register(D, "parseBool", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), z.register(G, "url", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), z.register(R, "buildUrl", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), z.register(x, "isAllowed", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), z.register(N, "getParameterByName", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), z.register(V, "runParallel", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), z.register(function (e, r) {
858
- try {
859
- var t,
785
+ e = t.hmd(e), (O = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && O(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
786
+ var $,
787
+ X,
788
+ Y = {
789
+ start: z,
790
+ entryPoint: {},
791
+ partialRenderingForIE8: x("{partialRenderingForIE8}"),
792
+ keformsUrl: "{keformsUrl}"
793
+ };
794
+ t.g.CF = Y, ($ = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && ($.register(G, "defaultCallback", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(x, "parseBool", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(D, "url", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(R, "buildUrl", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(N, "isAllowed", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(V, "getParameterByName", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(q, "runParallel", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(function (e, r) {
795
+ try {
796
+ var t,
860
797
  o,
861
798
  n,
862
799
  i,
863
800
  a,
864
- s,
865
801
  u,
802
+ s,
866
803
  l,
867
804
  c,
868
- d,
869
- f = e.split(".").slice(0, 3).map(function (e) {
870
- return parseInt(e, 10);
871
- }),
805
+ f,
806
+ d = e.split(".").slice(0, 3).map(function (e) {
807
+ return parseInt(e, 10);
808
+ }),
872
809
  p = r.split(".").slice(0, 3).map(function (e) {
873
- return parseInt(e, 10);
874
- });
875
- return (null !== (t = f[0]) && void 0 !== t ? t : 0) > (null !== (o = p[0]) && void 0 !== o ? o : 0) || (null !== (n = f[0]) && void 0 !== n ? n : 0) === (null !== (i = p[0]) && void 0 !== i ? i : 0) && ((null !== (a = f[1]) && void 0 !== a ? a : 0) > (null !== (s = p[1]) && void 0 !== s ? s : 0) || (null !== (u = f[1]) && void 0 !== u ? u : 0) === (null !== (l = p[1]) && void 0 !== l ? l : 0) && (null !== (c = f[2]) && void 0 !== c ? c : 0) >= (null !== (d = p[2]) && void 0 !== d ? d : 0));
876
- } catch (e) {
877
- return !1;
878
- }
879
- }, "isEngineVersionGreaterThanOrEqual", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), z.register(q, "loadForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), z.register(Z, "renderForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), z.register(K, "getEngineEntryPoint", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), z.register(W, "start", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), z.register(X, "CandyClientExports", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts")), ($ = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && $(e);
880
- },
881
- 68: function (e, r, t) {
882
- var o;
883
-
884
- function n(e) {
885
- return "string" == typeof e ? "false" !== e && "true" === e : Boolean(e);
886
- }
887
-
888
- t.d(r, {
889
- Z: function () {
890
- return s;
810
+ return parseInt(e, 10);
811
+ });
812
+ return (null !== (t = d[0]) && void 0 !== t ? t : 0) > (null !== (o = p[0]) && void 0 !== o ? o : 0) || (null !== (n = d[0]) && void 0 !== n ? n : 0) === (null !== (i = p[0]) && void 0 !== i ? i : 0) && ((null !== (a = d[1]) && void 0 !== a ? a : 0) > (null !== (u = p[1]) && void 0 !== u ? u : 0) || (null !== (s = d[1]) && void 0 !== s ? s : 0) === (null !== (l = p[1]) && void 0 !== l ? l : 0) && (null !== (c = d[2]) && void 0 !== c ? c : 0) >= (null !== (f = p[2]) && void 0 !== f ? f : 0));
813
+ } catch (e) {
814
+ return !1;
815
+ }
816
+ }, "isEngineVersionGreaterThanOrEqual", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(K, "loadForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(Z, "renderForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(W, "getEngineEntryPoint", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(z, "start", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts"), $.register(Y, "CandyClientExports", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\Client.ts")), (X = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && X(e);
817
+ },
818
+ 68: function (e, r, t) {
819
+ var o;
820
+ function n(e) {
821
+ return "string" == typeof e ? "false" !== e && "true" === e : Boolean(e);
891
822
  }
892
- }), e = t.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
893
- var i,
823
+ t.d(r, {
824
+ Z: function () {
825
+ return u;
826
+ }
827
+ }), e = t.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
828
+ var i,
894
829
  a,
895
- s = {
896
- authorized: n("{authorized}"),
897
- cauldronApiUrl: "{cauldronApiUrl}",
898
- isTestServer: n("{isTestServer}"),
899
- renderCachingForIE8: n("{renderCachingForIE8}"),
900
- normalizationOnServer: n("{normalizationOnServer}"),
901
- normativeUrl: "{normativeUrl}",
902
- resourcesVersion: "{resourcesVersion}",
903
- konturDomains: "{konturDomains}"
904
- };
905
- (i = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (i.register(n, "parseBool", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\ClientSettings.ts"), i.register(s, "clientSettings", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\ClientSettings.ts")), (a = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && a(e);
906
- },
907
- 152: function (module, __webpack_exports__, __webpack_require__) {
908
- __webpack_require__.d(__webpack_exports__, {
909
- P: function () {
910
- return createLegacyPublicForm;
911
- }
912
- });
913
-
914
- var _Common_Errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(556),
915
- enterModule;
916
-
917
- function _typeof(e) {
918
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
919
- return typeof e;
920
- } : function (e) {
921
- return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
922
- }, _typeof(e);
923
- }
924
-
925
- function asyncGeneratorStep(e, r, t, o, n, i, a) {
926
- try {
927
- var s = e[i](a),
928
- u = s.value;
929
- } catch (e) {
930
- return void t(e);
931
- }
932
-
933
- s.done ? r(u) : Promise.resolve(u).then(o, n);
934
- }
935
-
936
- function _asyncToGenerator(e) {
937
- return function () {
938
- var r = this,
939
- t = arguments;
940
- return new Promise(function (o, n) {
941
- var i = e.apply(r, t);
942
-
943
- function a(e) {
944
- asyncGeneratorStep(i, o, n, a, s, "next", e);
945
- }
946
-
947
- function s(e) {
948
- asyncGeneratorStep(i, o, n, a, s, "throw", e);
949
- }
950
-
951
- a(void 0);
952
- });
953
- };
954
- }
955
-
956
- function _classCallCheck(e, r) {
957
- if (!(e instanceof r)) throw new TypeError("Cannot call a class as a function");
958
- }
959
-
960
- function _defineProperties(e, r) {
961
- for (var t = 0; t < r.length; t++) {
962
- var o = r[t];
963
- o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o);
964
- }
965
- }
966
-
967
- function _createClass(e, r, t) {
968
- return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), e;
969
- }
970
-
971
- function ownKeys(e, r) {
972
- var t = Object.keys(e);
973
-
974
- if (Object.getOwnPropertySymbols) {
975
- var o = Object.getOwnPropertySymbols(e);
976
- r && (o = o.filter(function (r) {
977
- return Object.getOwnPropertyDescriptor(e, r).enumerable;
978
- })), t.push.apply(t, o);
979
- }
980
-
981
- return t;
982
- }
983
-
984
- function _objectSpread(e) {
985
- for (var r = 1; r < arguments.length; r++) {
986
- var t = null != arguments[r] ? arguments[r] : {};
987
- r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
988
- _defineProperty(e, r, t[r]);
989
- }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
990
- Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
991
- });
992
- }
993
-
994
- return e;
995
- }
996
-
997
- function _defineProperty(e, r, t) {
998
- return r in e ? Object.defineProperty(e, r, {
999
- value: t,
1000
- enumerable: !0,
1001
- configurable: !0,
1002
- writable: !0
1003
- }) : e[r] = t, e;
1004
- }
1005
-
1006
- module = __webpack_require__.hmd(module), enterModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0, enterModule && enterModule(module);
1007
-
1008
- var __signature__ = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default.signature : function (e) {
1009
- return e;
1010
- };
1011
-
1012
- function modelChangeEventPath(e, r) {
1013
- if (null != r) {
1014
- if (null == e) throw new Error("Path must be defined");
1015
- return ["model", "change", e, r];
1016
- }
1017
-
1018
- return null != e ? ["model", "change", e] : ["model", "change"];
1019
- }
1020
-
1021
- function mapChunkValues(e) {
1022
- return Object.keys(e).filter(function (r) {
1023
- return e[r] && Object.prototype.hasOwnProperty.call(e[r], "value");
1024
- }).map(function (r) {
1025
- var t = e[r];
1026
- return null == t ? {} : _defineProperty({}, r, t.value);
830
+ u = {
831
+ authorized: n("{authorized}"),
832
+ cauldronApiUrl: "{cauldronApiUrl}",
833
+ isTestServer: n("{isTestServer}"),
834
+ renderCachingForIE8: n("{renderCachingForIE8}"),
835
+ normalizationOnServer: n("{normalizationOnServer}"),
836
+ normativeUrl: "{normativeUrl}",
837
+ resourcesVersion: "{resourcesVersion}",
838
+ konturDomains: "{konturDomains}"
839
+ };
840
+ (i = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (i.register(n, "parseBool", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\ClientSettings.ts"), i.register(u, "clientSettings", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\ClientSettings.ts")), (a = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && a(e);
841
+ },
842
+ 152: function (module, __webpack_exports__, __webpack_require__) {
843
+ __webpack_require__.d(__webpack_exports__, {
844
+ P: function () {
845
+ return createLegacyPublicForm;
846
+ }
1027
847
  });
1028
- }
1029
-
1030
- function reduceChunkValues(e) {
1031
- return e.reduce(function (e, r) {
1032
- return _objectSpread(_objectSpread({}, e), r);
1033
- }, {});
1034
- }
1035
-
1036
- var LegacyPublicForm = function () {
1037
- function LegacyPublicForm(e) {
1038
- _classCallCheck(this, LegacyPublicForm), this.form = void 0, this.form = e;
848
+ var _Common_Errors__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(556),
849
+ enterModule;
850
+ function _typeof(e) {
851
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
852
+ return typeof e;
853
+ } : function (e) {
854
+ return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
855
+ }, _typeof(e);
1039
856
  }
1040
-
1041
- var _validateChildrenByPath;
1042
-
1043
- return _createClass(LegacyPublicForm, [{
1044
- key: "batchUpdate",
1045
- value: function (e) {
1046
- throw new Error("Method not implemented.");
1047
- }
1048
- }, {
1049
- key: "runCheck",
1050
- value: function () {
1051
- throw new Error("Method not implemented.");
1052
- }
1053
- }, {
1054
- key: "setErrorLog",
1055
- value: function (e) {
1056
- throw new Error("Method not implemented.");
1057
- }
1058
- }, {
1059
- key: "validateChildrenByPath",
1060
- value: (_validateChildrenByPath = _asyncToGenerator(regeneratorRuntime.mark(function e(r) {
1061
- return regeneratorRuntime.wrap(function (e) {
1062
- for (;;) switch (e.prev = e.next) {
1063
- case 0:
1064
- throw new Error("Method not implemented.");
1065
-
1066
- case 1:
1067
- case "end":
1068
- return e.stop();
1069
- }
1070
- }, e);
1071
- })), function (e) {
1072
- return _validateChildrenByPath.apply(this, arguments);
1073
- })
1074
- }, {
1075
- key: "__INTERNAL__importFromEmployeeService",
1076
- value: function () {
1077
- throw new Error("Method not implemented.");
1078
- }
1079
- }, {
1080
- key: "importEmployees",
1081
- value: function (e, r) {
1082
- throw new Error("Method not implemented.");
1083
- }
1084
- }, {
1085
- key: "print",
1086
- value: function (e, r) {
1087
- throw new Error("Method not implemented.");
1088
- }
1089
- }, {
1090
- key: "runMassAction",
1091
- value: function (e, r) {
1092
- throw new Error("Method not implemented.");
1093
- }
1094
- }, {
1095
- key: "getByGId",
1096
- value: function (e, r) {
1097
- return this.form.picklistsProvider.getDigestApiPicklist(e).query(r);
1098
- }
1099
- }, {
1100
- key: "on",
1101
- value: function (e, r) {
1102
- this.form.eventManager.on(["form", e], r);
1103
- }
1104
- }, {
1105
- key: "off",
1106
- value: function (e, r) {
1107
- this.form.eventManager.off(["form", e], r);
1108
- }
1109
- }, {
1110
- key: "onModelChange",
1111
- value: function (e, r) {
1112
- throw Error("form.onModelChange() is not supported yet");
1113
- }
1114
- }, {
1115
- key: "save",
1116
- value: function () {
1117
- return this.form.changeSet.send();
1118
- }
1119
- }, {
1120
- key: "close",
1121
- value: function () {
1122
- return this.form.changeSet.stopAutosend(), this.form.unmount && this.form.unmount(), this.form.changeSet.send();
1123
- }
1124
- }, {
1125
- key: "getTourSteps",
1126
- value: function () {
1127
- return [];
1128
- }
1129
- }, {
1130
- key: "validate",
1131
- value: function () {
1132
- var e = Object.keys(this.form.model.getChunk(this.form.settings.formRoot));
1133
- return this.form.validator.validateAll(e);
1134
- }
1135
- }, {
1136
- key: "getAdditionalEmployeeInfo",
1137
- value: function (e) {
1138
- throw new Error("not implemented");
1139
- }
1140
- }, {
1141
- key: "getWorkingEventsForEmployee",
1142
- value: function (e) {
1143
- throw new Error("not implemented");
1144
- }
1145
- }, {
1146
- key: "hasErrors",
1147
- value: function () {
1148
- var e = this.form.model.get(this.form.settings.formRoot, "errorsCount");
1149
- return null != e && e > 0;
857
+ function _regeneratorRuntime() {
858
+ _regeneratorRuntime = function () {
859
+ return e;
860
+ };
861
+ var e = {},
862
+ r = Object.prototype,
863
+ t = r.hasOwnProperty,
864
+ o = Object.defineProperty || function (e, r, t) {
865
+ e[r] = t.value;
866
+ },
867
+ n = "function" == typeof Symbol ? Symbol : {},
868
+ i = n.iterator || "@@iterator",
869
+ a = n.asyncIterator || "@@asyncIterator",
870
+ u = n.toStringTag || "@@toStringTag";
871
+ function s(e, r, t) {
872
+ return Object.defineProperty(e, r, {
873
+ value: t,
874
+ enumerable: !0,
875
+ configurable: !0,
876
+ writable: !0
877
+ }), e[r];
1150
878
  }
1151
- }, {
1152
- key: "onErrorsCountChanged",
1153
- value: function (e) {
1154
- this.form.eventManager.on(modelChangeEventPath(this.form.settings.formRoot, "errorsCount"), e);
879
+ try {
880
+ s({}, "");
881
+ } catch (e) {
882
+ s = function (e, r, t) {
883
+ return e[r] = t;
884
+ };
1155
885
  }
1156
- }, {
1157
- key: "offErrorsCountChanged",
1158
- value: function (e) {
1159
- this.form.eventManager.off(modelChangeEventPath(this.form.settings.formRoot, "errorsCount"), e);
886
+ function l(e, r, t, n) {
887
+ var i = r && r.prototype instanceof d ? r : d,
888
+ a = Object.create(i.prototype),
889
+ u = new P(n || []);
890
+ return o(a, "_invoke", {
891
+ value: w(e, t, u)
892
+ }), a;
1160
893
  }
1161
- }, {
1162
- key: "set",
1163
- value: function (e, r) {
1164
- if (null === e || "string" == typeof e || "object" !== _typeof(e) || Array.isArray(e)) {
1165
- if ("string" != typeof e) throw new Error("form.set() parameter should be string path or object with path-value pairs");
1166
- this.form.model.set(e, "value", r);
1167
- } else {
1168
- var t = Object.keys(e).reduce(function (r, t) {
1169
- return _objectSpread(_defineProperty({}, t, {
1170
- value: e[t]
1171
- }), r);
1172
- }, {});
1173
- this.form.model.fill(t);
894
+ function c(e, r, t) {
895
+ try {
896
+ return {
897
+ type: "normal",
898
+ arg: e.call(r, t)
899
+ };
900
+ } catch (e) {
901
+ return {
902
+ type: "throw",
903
+ arg: e
904
+ };
1174
905
  }
1175
906
  }
1176
- }, {
1177
- key: "get",
1178
- value: function (e) {
1179
- var r = this;
1180
- if (Array.isArray(e)) return reduceChunkValues(e.map(function (e) {
1181
- return mapChunkValues(r.form.model.getChunk(e));
1182
- }).reduce(function (e, r) {
1183
- return e.concat(r);
1184
- }, []));
1185
- if ("string" == typeof e) return reduceChunkValues(mapChunkValues(this.form.model.getChunk(e)));
1186
- if (void 0 === e) return reduceChunkValues(mapChunkValues(this.form.model.getChunk(this.form.settings.formRoot)));
1187
- throw new Error("form.get() parameter should be string path or array of paths");
1188
- }
1189
- }, {
1190
- key: "getValue",
1191
- value: function (e) {
1192
- return this.form.model.get(e, "value");
1193
- }
1194
- }, {
1195
- key: "copySubtree",
1196
- value: function (e, r, t) {
1197
- throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1198
- }
1199
- }, {
1200
- key: "addInstance",
1201
- value: function (e) {
1202
- throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1203
- }
1204
- }, {
1205
- key: "getChildren",
1206
- value: function (e) {
1207
- throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1208
- }
1209
- }, {
1210
- key: "uuidGenerate",
1211
- value: function () {
1212
- throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
907
+ e.wrap = l;
908
+ var f = {};
909
+ function d() {}
910
+ function p() {}
911
+ function y() {}
912
+ var m = {};
913
+ s(m, i, function () {
914
+ return this;
915
+ });
916
+ var h = Object.getPrototypeOf,
917
+ g = h && h(h(A([])));
918
+ g && g !== r && t.call(g, i) && (m = g);
919
+ var _ = y.prototype = d.prototype = Object.create(m);
920
+ function v(e) {
921
+ ["next", "throw", "return"].forEach(function (r) {
922
+ s(e, r, function (e) {
923
+ return this._invoke(r, e);
924
+ });
925
+ });
1213
926
  }
1214
- }, {
1215
- key: "showModal",
1216
- value: function (e) {
1217
- throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
927
+ function b(e, r) {
928
+ function n(o, i, a, u) {
929
+ var s = c(e[o], e, i);
930
+ if ("throw" !== s.type) {
931
+ var l = s.arg,
932
+ f = l.value;
933
+ return f && "object" == _typeof(f) && t.call(f, "__await") ? r.resolve(f.__await).then(function (e) {
934
+ n("next", e, a, u);
935
+ }, function (e) {
936
+ n("throw", e, a, u);
937
+ }) : r.resolve(f).then(function (e) {
938
+ l.value = e, a(l);
939
+ }, function (e) {
940
+ return n("throw", e, a, u);
941
+ });
942
+ }
943
+ u(s.arg);
944
+ }
945
+ var i;
946
+ o(this, "_invoke", {
947
+ value: function (e, t) {
948
+ function o() {
949
+ return new r(function (r, o) {
950
+ n(e, t, r, o);
951
+ });
952
+ }
953
+ return i = i ? i.then(o, o) : o();
954
+ }
955
+ });
1218
956
  }
1219
- }, {
1220
- key: "addSection",
1221
- value: function (e) {
1222
- throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
957
+ function w(e, r, t) {
958
+ var o = "suspendedStart";
959
+ return function (n, i) {
960
+ if ("executing" === o) throw new Error("Generator is already running");
961
+ if ("completed" === o) {
962
+ if ("throw" === n) throw i;
963
+ return {
964
+ value: void 0,
965
+ done: !0
966
+ };
967
+ }
968
+ for (t.method = n, t.arg = i;;) {
969
+ var a = t.delegate;
970
+ if (a) {
971
+ var u = E(a, t);
972
+ if (u) {
973
+ if (u === f) continue;
974
+ return u;
975
+ }
976
+ }
977
+ if ("next" === t.method) t.sent = t._sent = t.arg;else if ("throw" === t.method) {
978
+ if ("suspendedStart" === o) throw o = "completed", t.arg;
979
+ t.dispatchException(t.arg);
980
+ } else "return" === t.method && t.abrupt("return", t.arg);
981
+ o = "executing";
982
+ var s = c(e, r, t);
983
+ if ("normal" === s.type) {
984
+ if (o = t.done ? "completed" : "suspendedYield", s.arg === f) continue;
985
+ return {
986
+ value: s.arg,
987
+ done: t.done
988
+ };
989
+ }
990
+ "throw" === s.type && (o = "completed", t.method = "throw", t.arg = s.arg);
991
+ }
992
+ };
1223
993
  }
1224
- }, {
1225
- key: "callInitSection",
1226
- value: function (e) {
1227
- throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
994
+ function E(e, r) {
995
+ var t = r.method,
996
+ o = e.iterator[t];
997
+ if (void 0 === o) return r.delegate = null, "throw" === t && e.iterator.return && (r.method = "return", r.arg = void 0, E(e, r), "throw" === r.method) || "return" !== t && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + t + "' method")), f;
998
+ var n = c(o, e.iterator, r.arg);
999
+ if ("throw" === n.type) return r.method = "throw", r.arg = n.arg, r.delegate = null, f;
1000
+ var i = n.arg;
1001
+ return i ? i.done ? (r[e.resultName] = i.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = void 0), r.delegate = null, f) : i : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, f);
1228
1002
  }
1229
- }, {
1230
- key: "createFiasApiClient",
1231
- value: function (e) {
1232
- throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1003
+ function C(e) {
1004
+ var r = {
1005
+ tryLoc: e[0]
1006
+ };
1007
+ 1 in e && (r.catchLoc = e[1]), 2 in e && (r.finallyLoc = e[2], r.afterLoc = e[3]), this.tryEntries.push(r);
1233
1008
  }
1234
- }, {
1235
- key: "openEmployeeEditor",
1236
- value: function (e) {
1237
- throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1009
+ function k(e) {
1010
+ var r = e.completion || {};
1011
+ r.type = "normal", delete r.arg, e.completion = r;
1238
1012
  }
1239
- }, {
1240
- key: "removeInstance",
1241
- value: function (e, r) {
1242
- throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1013
+ function P(e) {
1014
+ this.tryEntries = [{
1015
+ tryLoc: "root"
1016
+ }], e.forEach(C, this), this.reset(!0);
1243
1017
  }
1244
- }, {
1245
- key: "removeInstances",
1246
- value: function (e, r) {
1247
- throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1018
+ function A(e) {
1019
+ if (e) {
1020
+ var r = e[i];
1021
+ if (r) return r.call(e);
1022
+ if ("function" == typeof e.next) return e;
1023
+ if (!isNaN(e.length)) {
1024
+ var o = -1,
1025
+ n = function r() {
1026
+ for (; ++o < e.length;) if (t.call(e, o)) return r.value = e[o], r.done = !1, r;
1027
+ return r.value = void 0, r.done = !0, r;
1028
+ };
1029
+ return n.next = n;
1030
+ }
1031
+ }
1032
+ return {
1033
+ next: O
1034
+ };
1248
1035
  }
1249
- }, {
1250
- key: "focusOnControlIfExist",
1251
- value: function (e) {
1252
- throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1036
+ function O() {
1037
+ return {
1038
+ value: void 0,
1039
+ done: !0
1040
+ };
1253
1041
  }
1254
- }, {
1255
- key: "setAllCheckboxesFor113103",
1256
- value: function (e) {
1257
- return Promise.resolve(void 0);
1042
+ return p.prototype = y, o(_, "constructor", {
1043
+ value: y,
1044
+ configurable: !0
1045
+ }), o(y, "constructor", {
1046
+ value: p,
1047
+ configurable: !0
1048
+ }), p.displayName = s(y, u, "GeneratorFunction"), e.isGeneratorFunction = function (e) {
1049
+ var r = "function" == typeof e && e.constructor;
1050
+ return !!r && (r === p || "GeneratorFunction" === (r.displayName || r.name));
1051
+ }, e.mark = function (e) {
1052
+ return Object.setPrototypeOf ? Object.setPrototypeOf(e, y) : (e.__proto__ = y, s(e, u, "GeneratorFunction")), e.prototype = Object.create(_), e;
1053
+ }, e.awrap = function (e) {
1054
+ return {
1055
+ __await: e
1056
+ };
1057
+ }, v(b.prototype), s(b.prototype, a, function () {
1058
+ return this;
1059
+ }), e.AsyncIterator = b, e.async = function (r, t, o, n, i) {
1060
+ void 0 === i && (i = Promise);
1061
+ var a = new b(l(r, t, o, n), i);
1062
+ return e.isGeneratorFunction(t) ? a : a.next().then(function (e) {
1063
+ return e.done ? e.value : a.next();
1064
+ });
1065
+ }, v(_), s(_, u, "Generator"), s(_, i, function () {
1066
+ return this;
1067
+ }), s(_, "toString", function () {
1068
+ return "[object Generator]";
1069
+ }), e.keys = function (e) {
1070
+ var r = Object(e),
1071
+ t = [];
1072
+ for (var o in r) t.push(o);
1073
+ return t.reverse(), function e() {
1074
+ for (; t.length;) {
1075
+ var o = t.pop();
1076
+ if (o in r) return e.value = o, e.done = !1, e;
1077
+ }
1078
+ return e.done = !0, e;
1079
+ };
1080
+ }, e.values = A, P.prototype = {
1081
+ constructor: P,
1082
+ reset: function (e) {
1083
+ if (this.prev = 0, this.next = 0, this.sent = this._sent = void 0, this.done = !1, this.delegate = null, this.method = "next", this.arg = void 0, this.tryEntries.forEach(k), !e) for (var r in this) "t" === r.charAt(0) && t.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = void 0);
1084
+ },
1085
+ stop: function () {
1086
+ this.done = !0;
1087
+ var e = this.tryEntries[0].completion;
1088
+ if ("throw" === e.type) throw e.arg;
1089
+ return this.rval;
1090
+ },
1091
+ dispatchException: function (e) {
1092
+ if (this.done) throw e;
1093
+ var r = this;
1094
+ function o(t, o) {
1095
+ return a.type = "throw", a.arg = e, r.next = t, o && (r.method = "next", r.arg = void 0), !!o;
1096
+ }
1097
+ for (var n = this.tryEntries.length - 1; n >= 0; --n) {
1098
+ var i = this.tryEntries[n],
1099
+ a = i.completion;
1100
+ if ("root" === i.tryLoc) return o("end");
1101
+ if (i.tryLoc <= this.prev) {
1102
+ var u = t.call(i, "catchLoc"),
1103
+ s = t.call(i, "finallyLoc");
1104
+ if (u && s) {
1105
+ if (this.prev < i.catchLoc) return o(i.catchLoc, !0);
1106
+ if (this.prev < i.finallyLoc) return o(i.finallyLoc);
1107
+ } else if (u) {
1108
+ if (this.prev < i.catchLoc) return o(i.catchLoc, !0);
1109
+ } else {
1110
+ if (!s) throw new Error("try statement without catch or finally");
1111
+ if (this.prev < i.finallyLoc) return o(i.finallyLoc);
1112
+ }
1113
+ }
1114
+ }
1115
+ },
1116
+ abrupt: function (e, r) {
1117
+ for (var o = this.tryEntries.length - 1; o >= 0; --o) {
1118
+ var n = this.tryEntries[o];
1119
+ if (n.tryLoc <= this.prev && t.call(n, "finallyLoc") && this.prev < n.finallyLoc) {
1120
+ var i = n;
1121
+ break;
1122
+ }
1123
+ }
1124
+ i && ("break" === e || "continue" === e) && i.tryLoc <= r && r <= i.finallyLoc && (i = null);
1125
+ var a = i ? i.completion : {};
1126
+ return a.type = e, a.arg = r, i ? (this.method = "next", this.next = i.finallyLoc, f) : this.complete(a);
1127
+ },
1128
+ complete: function (e, r) {
1129
+ if ("throw" === e.type) throw e.arg;
1130
+ return "break" === e.type || "continue" === e.type ? this.next = e.arg : "return" === e.type ? (this.rval = this.arg = e.arg, this.method = "return", this.next = "end") : "normal" === e.type && r && (this.next = r), f;
1131
+ },
1132
+ finish: function (e) {
1133
+ for (var r = this.tryEntries.length - 1; r >= 0; --r) {
1134
+ var t = this.tryEntries[r];
1135
+ if (t.finallyLoc === e) return this.complete(t.completion, t.afterLoc), k(t), f;
1136
+ }
1137
+ },
1138
+ catch: function (e) {
1139
+ for (var r = this.tryEntries.length - 1; r >= 0; --r) {
1140
+ var t = this.tryEntries[r];
1141
+ if (t.tryLoc === e) {
1142
+ var o = t.completion;
1143
+ if ("throw" === o.type) {
1144
+ var n = o.arg;
1145
+ k(t);
1146
+ }
1147
+ return n;
1148
+ }
1149
+ }
1150
+ throw new Error("illegal catch attempt");
1151
+ },
1152
+ delegateYield: function (e, r, t) {
1153
+ return this.delegate = {
1154
+ iterator: A(e),
1155
+ resultName: r,
1156
+ nextLoc: t
1157
+ }, "next" === this.method && (this.arg = void 0), f;
1158
+ }
1159
+ }, e;
1160
+ }
1161
+ function asyncGeneratorStep(e, r, t, o, n, i, a) {
1162
+ try {
1163
+ var u = e[i](a),
1164
+ s = u.value;
1165
+ } catch (e) {
1166
+ return void t(e);
1258
1167
  }
1259
- }, {
1260
- key: "setAutoFieldsToAutoValue",
1261
- value: function (e) {
1262
- return Promise.resolve(void 0);
1168
+ u.done ? r(s) : Promise.resolve(s).then(o, n);
1169
+ }
1170
+ function _asyncToGenerator(e) {
1171
+ return function () {
1172
+ var r = this,
1173
+ t = arguments;
1174
+ return new Promise(function (o, n) {
1175
+ var i = e.apply(r, t);
1176
+ function a(e) {
1177
+ asyncGeneratorStep(i, o, n, a, u, "next", e);
1178
+ }
1179
+ function u(e) {
1180
+ asyncGeneratorStep(i, o, n, a, u, "throw", e);
1181
+ }
1182
+ a(void 0);
1183
+ });
1184
+ };
1185
+ }
1186
+ function _classCallCheck(e, r) {
1187
+ if (!(e instanceof r)) throw new TypeError("Cannot call a class as a function");
1188
+ }
1189
+ function _defineProperties(e, r) {
1190
+ for (var t = 0; t < r.length; t++) {
1191
+ var o = r[t];
1192
+ o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);
1263
1193
  }
1264
- }, {
1265
- key: "ensureInstanceFullyLoaded",
1266
- value: function (e) {
1267
- throw new Error("Method not implemented.");
1194
+ }
1195
+ function _createClass(e, r, t) {
1196
+ return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
1197
+ writable: !1
1198
+ }), e;
1199
+ }
1200
+ function ownKeys(e, r) {
1201
+ var t = Object.keys(e);
1202
+ if (Object.getOwnPropertySymbols) {
1203
+ var o = Object.getOwnPropertySymbols(e);
1204
+ r && (o = o.filter(function (r) {
1205
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
1206
+ })), t.push.apply(t, o);
1268
1207
  }
1269
- }, {
1270
- key: "customNormalize",
1271
- value: function (e, r) {
1272
- throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1208
+ return t;
1209
+ }
1210
+ function _objectSpread(e) {
1211
+ for (var r = 1; r < arguments.length; r++) {
1212
+ var t = null != arguments[r] ? arguments[r] : {};
1213
+ r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
1214
+ _defineProperty(e, r, t[r]);
1215
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
1216
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
1217
+ });
1273
1218
  }
1274
- }, {
1275
- key: "removeInstancesByRules",
1276
- value: function (e) {
1277
- throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1219
+ return e;
1220
+ }
1221
+ function _defineProperty(e, r, t) {
1222
+ return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
1223
+ value: t,
1224
+ enumerable: !0,
1225
+ configurable: !0,
1226
+ writable: !0
1227
+ }) : e[r] = t, e;
1228
+ }
1229
+ function _toPropertyKey(e) {
1230
+ var r = _toPrimitive(e, "string");
1231
+ return "symbol" === _typeof(r) ? r : String(r);
1232
+ }
1233
+ function _toPrimitive(e, r) {
1234
+ if ("object" !== _typeof(e) || null === e) return e;
1235
+ var t = e[Symbol.toPrimitive];
1236
+ if (void 0 !== t) {
1237
+ var o = t.call(e, r || "default");
1238
+ if ("object" !== _typeof(o)) return o;
1239
+ throw new TypeError("@@toPrimitive must return a primitive value.");
1278
1240
  }
1279
- }, {
1280
- key: "__reactstandin__regenerateByEval",
1281
- value: function __reactstandin__regenerateByEval(key, code) {
1282
- this[key] = eval(code);
1241
+ return ("string" === r ? String : Number)(e);
1242
+ }
1243
+ module = __webpack_require__.hmd(module), enterModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0, enterModule && enterModule(module);
1244
+ var __signature__ = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default.signature : function (e) {
1245
+ return e;
1246
+ };
1247
+ function modelChangeEventPath(e, r) {
1248
+ if (null != r) {
1249
+ if (null == e) throw new Error("Path must be defined");
1250
+ return ["model", "change", e, r];
1283
1251
  }
1284
- }]), LegacyPublicForm;
1285
- }(),
1286
- reactHotLoader,
1287
- leaveModule;
1288
-
1289
- function createLegacyPublicForm(e) {
1290
- return new LegacyPublicForm(e);
1291
- }
1292
-
1293
- reactHotLoader = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0, reactHotLoader && (reactHotLoader.register(modelChangeEventPath, "modelChangeEventPath", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(mapChunkValues, "mapChunkValues", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(reduceChunkValues, "reduceChunkValues", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(LegacyPublicForm, "LegacyPublicForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(createLegacyPublicForm, "createLegacyPublicForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts")), leaveModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0, leaveModule && leaveModule(module);
1294
- },
1295
- 412: function (e, r, t) {
1296
- var o;
1297
-
1298
- function n(e, r) {
1299
- for (var t = 0; t < r.length; t++) {
1300
- var o = r[t];
1301
- o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o);
1252
+ return null != e ? ["model", "change", e] : ["model", "change"];
1302
1253
  }
1303
- }
1304
-
1305
- t.d(r, {
1306
- e: function () {
1307
- return s;
1254
+ function mapChunkValues(e) {
1255
+ return Object.keys(e).filter(function (r) {
1256
+ return e[r] && Object.prototype.hasOwnProperty.call(e[r], "value");
1257
+ }).map(function (r) {
1258
+ var t = e[r];
1259
+ return null == t ? {} : _defineProperty({}, r, t.value);
1260
+ });
1308
1261
  }
1309
- }), e = t.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
1310
-
1311
- var i,
1312
- a,
1313
- s = function () {
1314
- function e() {
1315
- !function (e, r) {
1316
- if (!(e instanceof r)) throw new TypeError("Cannot call a class as a function");
1317
- }(this, e);
1262
+ function reduceChunkValues(e) {
1263
+ return e.reduce(function (e, r) {
1264
+ return _objectSpread(_objectSpread({}, e), r);
1265
+ }, {});
1318
1266
  }
1319
-
1320
- var r, t;
1321
- return r = e, t = [{
1322
- key: "script",
1323
- value: function (e, r) {
1324
- var t = !1,
1325
- o = document.getElementsByTagName("head")[0] || document.documentElement,
1326
- n = document.createElement("script");
1327
-
1328
- function i() {
1329
- t || n.readyState && "loaded" !== n.readyState && "complete" !== n.readyState || (t = !0, r());
1267
+ var LegacyPublicForm = function () {
1268
+ function LegacyPublicForm(e) {
1269
+ _classCallCheck(this, LegacyPublicForm), this.form = void 0, this.form = e;
1330
1270
  }
1331
-
1332
- n.onload = i, n.onreadystatechange = i, n.onerror = function () {
1333
- n.parentNode && n.parentNode.removeChild(n), r(new Error("Error while loading script."));
1334
- }, n.src = e, n.setAttribute("crossorigin", "use-credentials"), o.appendChild(n);
1271
+ var _reloadInner, _validateChildrenByPath;
1272
+ return _createClass(LegacyPublicForm, [{
1273
+ key: "batchUpdate",
1274
+ value: function (e) {
1275
+ throw new Error("Method not implemented.");
1276
+ }
1277
+ }, {
1278
+ key: "runCheck",
1279
+ value: function () {
1280
+ throw new Error("Method not implemented.");
1281
+ }
1282
+ }, {
1283
+ key: "setErrorLog",
1284
+ value: function (e) {
1285
+ throw new Error("Method not implemented.");
1286
+ }
1287
+ }, {
1288
+ key: "validateChildrenByPath",
1289
+ value: (_validateChildrenByPath = _asyncToGenerator(_regeneratorRuntime().mark(function e(r) {
1290
+ return _regeneratorRuntime().wrap(function (e) {
1291
+ for (;;) switch (e.prev = e.next) {
1292
+ case 0:
1293
+ throw new Error("Method not implemented.");
1294
+ case 1:
1295
+ case "end":
1296
+ return e.stop();
1297
+ }
1298
+ }, e);
1299
+ })), function (e) {
1300
+ return _validateChildrenByPath.apply(this, arguments);
1301
+ })
1302
+ }, {
1303
+ key: "__INTERNAL__importFromEmployeeService",
1304
+ value: function () {
1305
+ throw new Error("Method not implemented.");
1306
+ }
1307
+ }, {
1308
+ key: "importEmployees",
1309
+ value: function (e, r) {
1310
+ throw new Error("Method not implemented.");
1311
+ }
1312
+ }, {
1313
+ key: "print",
1314
+ value: function (e, r) {
1315
+ throw new Error("Method not implemented.");
1316
+ }
1317
+ }, {
1318
+ key: "runMassAction",
1319
+ value: function (e, r) {
1320
+ throw new Error("Method not implemented.");
1321
+ }
1322
+ }, {
1323
+ key: "getByGId",
1324
+ value: function (e, r) {
1325
+ return this.form.picklistsProvider.getDigestApiPicklist(e).query(r);
1326
+ }
1327
+ }, {
1328
+ key: "on",
1329
+ value: function (e, r) {
1330
+ this.form.eventManager.on(["form", e], r);
1331
+ }
1332
+ }, {
1333
+ key: "off",
1334
+ value: function (e, r) {
1335
+ this.form.eventManager.off(["form", e], r);
1336
+ }
1337
+ }, {
1338
+ key: "onModelChange",
1339
+ value: function (e, r) {
1340
+ throw Error("form.onModelChange() is not supported yet");
1341
+ }
1342
+ }, {
1343
+ key: "save",
1344
+ value: function () {
1345
+ return this.form.changeSet.send();
1346
+ }
1347
+ }, {
1348
+ key: "close",
1349
+ value: function () {
1350
+ return this.form.changeSet.stopAutosend(), this.form.unmount && this.form.unmount(), this.form.changeSet.send();
1351
+ }
1352
+ }, {
1353
+ key: "getTourSteps",
1354
+ value: function () {
1355
+ return [];
1356
+ }
1357
+ }, {
1358
+ key: "validate",
1359
+ value: function () {
1360
+ var e = Object.keys(this.form.model.getChunk(this.form.settings.formRoot));
1361
+ return this.form.validator.validateAll(e);
1362
+ }
1363
+ }, {
1364
+ key: "getAdditionalEmployeeInfo",
1365
+ value: function (e) {
1366
+ throw new Error("not implemented");
1367
+ }
1368
+ }, {
1369
+ key: "reloadInner",
1370
+ value: (_reloadInner = _asyncToGenerator(_regeneratorRuntime().mark(function e() {
1371
+ return _regeneratorRuntime().wrap(function (e) {
1372
+ for (;;) switch (e.prev = e.next) {
1373
+ case 0:
1374
+ throw new Error("not implemented");
1375
+ case 1:
1376
+ case "end":
1377
+ return e.stop();
1378
+ }
1379
+ }, e);
1380
+ })), function () {
1381
+ return _reloadInner.apply(this, arguments);
1382
+ })
1383
+ }, {
1384
+ key: "getWorkingEventsForEmployee",
1385
+ value: function (e) {
1386
+ throw new Error("not implemented");
1387
+ }
1388
+ }, {
1389
+ key: "hasErrors",
1390
+ value: function () {
1391
+ var e = this.form.model.get(this.form.settings.formRoot, "errorsCount");
1392
+ return null != e && e > 0;
1393
+ }
1394
+ }, {
1395
+ key: "onErrorsCountChanged",
1396
+ value: function (e) {
1397
+ this.form.eventManager.on(modelChangeEventPath(this.form.settings.formRoot, "errorsCount"), e);
1398
+ }
1399
+ }, {
1400
+ key: "offErrorsCountChanged",
1401
+ value: function (e) {
1402
+ this.form.eventManager.off(modelChangeEventPath(this.form.settings.formRoot, "errorsCount"), e);
1403
+ }
1404
+ }, {
1405
+ key: "set",
1406
+ value: function (e, r) {
1407
+ if (null === e || "string" == typeof e || "object" !== _typeof(e) || Array.isArray(e)) {
1408
+ if ("string" != typeof e) throw new Error("form.set() parameter should be string path or object with path-value pairs");
1409
+ this.form.model.set(e, "value", r);
1410
+ } else {
1411
+ var t = Object.keys(e).reduce(function (r, t) {
1412
+ return _objectSpread(_defineProperty({}, t, {
1413
+ value: e[t]
1414
+ }), r);
1415
+ }, {});
1416
+ this.form.model.fill(t);
1417
+ }
1418
+ }
1419
+ }, {
1420
+ key: "get",
1421
+ value: function (e) {
1422
+ var r = this;
1423
+ if (Array.isArray(e)) return reduceChunkValues(e.map(function (e) {
1424
+ return mapChunkValues(r.form.model.getChunk(e));
1425
+ }).reduce(function (e, r) {
1426
+ return e.concat(r);
1427
+ }, []));
1428
+ if ("string" == typeof e) return reduceChunkValues(mapChunkValues(this.form.model.getChunk(e)));
1429
+ if (void 0 === e) return reduceChunkValues(mapChunkValues(this.form.model.getChunk(this.form.settings.formRoot)));
1430
+ throw new Error("form.get() parameter should be string path or array of paths");
1431
+ }
1432
+ }, {
1433
+ key: "getValue",
1434
+ value: function (e) {
1435
+ return this.form.model.get(e, "value");
1436
+ }
1437
+ }, {
1438
+ key: "copySubtree",
1439
+ value: function (e, r, t) {
1440
+ throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1441
+ }
1442
+ }, {
1443
+ key: "addInstance",
1444
+ value: function (e) {
1445
+ throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1446
+ }
1447
+ }, {
1448
+ key: "getChildren",
1449
+ value: function (e) {
1450
+ throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1451
+ }
1452
+ }, {
1453
+ key: "uuidGenerate",
1454
+ value: function () {
1455
+ throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1456
+ }
1457
+ }, {
1458
+ key: "showModal",
1459
+ value: function (e) {
1460
+ throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1461
+ }
1462
+ }, {
1463
+ key: "addSection",
1464
+ value: function (e) {
1465
+ throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1466
+ }
1467
+ }, {
1468
+ key: "callInitSection",
1469
+ value: function (e) {
1470
+ throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1471
+ }
1472
+ }, {
1473
+ key: "createFiasApiClient",
1474
+ value: function (e) {
1475
+ throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1476
+ }
1477
+ }, {
1478
+ key: "openEmployeeEditor",
1479
+ value: function (e) {
1480
+ throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1481
+ }
1482
+ }, {
1483
+ key: "removeInstance",
1484
+ value: function (e, r) {
1485
+ throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1486
+ }
1487
+ }, {
1488
+ key: "removeInstances",
1489
+ value: function (e, r) {
1490
+ throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1491
+ }
1492
+ }, {
1493
+ key: "focusOnControlIfExist",
1494
+ value: function (e) {
1495
+ throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1496
+ }
1497
+ }, {
1498
+ key: "setAllCheckboxesFor113103",
1499
+ value: function (e) {
1500
+ return Promise.resolve(void 0);
1501
+ }
1502
+ }, {
1503
+ key: "setAutoFieldsToAutoValue",
1504
+ value: function (e) {
1505
+ return Promise.resolve(void 0);
1506
+ }
1507
+ }, {
1508
+ key: "ensureInstanceFullyLoaded",
1509
+ value: function (e) {
1510
+ throw new Error("Method not implemented.");
1511
+ }
1512
+ }, {
1513
+ key: "customNormalize",
1514
+ value: function (e, r) {
1515
+ throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1516
+ }
1517
+ }, {
1518
+ key: "removeInstancesByRules",
1519
+ value: function (e) {
1520
+ throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.nj();
1521
+ }
1522
+ }, {
1523
+ key: "__reactstandin__regenerateByEval",
1524
+ value: function __reactstandin__regenerateByEval(key, code) {
1525
+ this[key] = eval(code);
1526
+ }
1527
+ }]), LegacyPublicForm;
1528
+ }(),
1529
+ reactHotLoader,
1530
+ leaveModule;
1531
+ function createLegacyPublicForm(e) {
1532
+ return new LegacyPublicForm(e);
1533
+ }
1534
+ reactHotLoader = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0, reactHotLoader && (reactHotLoader.register(modelChangeEventPath, "modelChangeEventPath", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(mapChunkValues, "mapChunkValues", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(reduceChunkValues, "reduceChunkValues", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(LegacyPublicForm, "LegacyPublicForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts"), reactHotLoader.register(createLegacyPublicForm, "createLegacyPublicForm", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Forms\\Client\\LegacyPublicForm\\CreateLegacyPublicForm.ts")), leaveModule = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0, leaveModule && leaveModule(module);
1535
+ },
1536
+ 412: function (e, r, t) {
1537
+ var o;
1538
+ function n(e) {
1539
+ return n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
1540
+ return typeof e;
1541
+ } : function (e) {
1542
+ return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
1543
+ }, n(e);
1544
+ }
1545
+ function i(e, r) {
1546
+ for (var t = 0; t < r.length; t++) {
1547
+ var o = r[t];
1548
+ o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, (void 0, i = function (e, r) {
1549
+ if ("object" !== n(e) || null === e) return e;
1550
+ var t = e[Symbol.toPrimitive];
1551
+ if (void 0 !== t) {
1552
+ var o = t.call(e, r);
1553
+ if ("object" !== n(o)) return o;
1554
+ throw new TypeError("@@toPrimitive must return a primitive value.");
1555
+ }
1556
+ return String(e);
1557
+ }(o.key, "string"), "symbol" === n(i) ? i : String(i)), o);
1335
1558
  }
1336
- }, {
1337
- key: "styleSheet",
1338
- value: function (e, r, t) {
1339
- var o,
1340
- n = null !== (o = document.getElementsByTagName("head")[0]) && void 0 !== o ? o : document.documentElement,
1341
- i = document.createElement("link");
1342
- i.setAttribute("rel", "stylesheet"), i.setAttribute("type", "text/css"), i.addEventListener("load", function () {
1343
- return t(void 0);
1344
- }), i.addEventListener("error", function () {
1345
- t(r ? void 0 : new Error("Error while loading stylesheet."));
1346
- }), n.appendChild(i), i.setAttribute("href", e);
1559
+ var i;
1560
+ }
1561
+ t.d(r, {
1562
+ e: function () {
1563
+ return s;
1347
1564
  }
1348
- }], null && n(r.prototype, null), t && n(r, t), e;
1349
- }();
1350
-
1351
- (i = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && i.register(s, "LoadIntoDocument", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Helpers\\LoadIntoDocument.ts"), (a = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && a(e);
1352
- }
1353
- },
1354
- __webpack_module_cache__ = {};
1355
-
1565
+ }), e = t.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
1566
+ var a,
1567
+ u,
1568
+ s = function () {
1569
+ function e() {
1570
+ !function (e, r) {
1571
+ if (!(e instanceof r)) throw new TypeError("Cannot call a class as a function");
1572
+ }(this, e);
1573
+ }
1574
+ var r, t;
1575
+ return r = e, t = [{
1576
+ key: "script",
1577
+ value: function (e, r) {
1578
+ var t = !1,
1579
+ o = document.getElementsByTagName("head")[0] || document.documentElement,
1580
+ n = document.createElement("script");
1581
+ function i() {
1582
+ t || n.readyState && "loaded" !== n.readyState && "complete" !== n.readyState || (t = !0, r());
1583
+ }
1584
+ n.onload = i, n.onreadystatechange = i, n.onerror = function () {
1585
+ n.parentNode && n.parentNode.removeChild(n), r(new Error("Error while loading script."));
1586
+ }, n.src = e, n.setAttribute("crossorigin", "use-credentials"), o.appendChild(n);
1587
+ }
1588
+ }, {
1589
+ key: "styleSheet",
1590
+ value: function (e, r, t) {
1591
+ var o,
1592
+ n = null !== (o = document.getElementsByTagName("head")[0]) && void 0 !== o ? o : document.documentElement,
1593
+ i = document.createElement("link");
1594
+ i.setAttribute("rel", "stylesheet"), i.setAttribute("type", "text/css"), i.addEventListener("load", function () {
1595
+ return t(void 0);
1596
+ }), i.addEventListener("error", function () {
1597
+ t(r ? void 0 : new Error("Error while loading stylesheet."));
1598
+ }), n.appendChild(i), i.setAttribute("href", e);
1599
+ }
1600
+ }], null && i(r.prototype, null), t && i(r, t), Object.defineProperty(r, "prototype", {
1601
+ writable: !1
1602
+ }), e;
1603
+ }();
1604
+ (a = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && a.register(s, "LoadIntoDocument", "C:\\BuildAgent\\work\\forms-root-candy\\keforms.engine\\Engine\\src\\Helpers\\LoadIntoDocument.ts"), (u = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && u(e);
1605
+ }
1606
+ },
1607
+ __webpack_module_cache__ = {};
1356
1608
  function __webpack_require__(e) {
1357
1609
  var r = __webpack_module_cache__[e];
1358
1610
  if (void 0 !== r) return r.exports;
@@ -1363,7 +1615,6 @@
1363
1615
  };
1364
1616
  return __webpack_modules__[e](t, t.exports, __webpack_require__), t.loaded = !0, t.exports;
1365
1617
  }
1366
-
1367
1618
  __webpack_require__.d = function (e, r) {
1368
1619
  for (var t in r) __webpack_require__.o(r, t) && !__webpack_require__.o(e, t) && Object.defineProperty(e, t, {
1369
1620
  enumerable: !0,
@@ -1371,7 +1622,6 @@
1371
1622
  });
1372
1623
  }, __webpack_require__.g = function () {
1373
1624
  if ("object" == typeof globalThis) return globalThis;
1374
-
1375
1625
  try {
1376
1626
  return this || new Function("return this")();
1377
1627
  } catch (e) {
@@ -1387,7 +1637,6 @@
1387
1637
  }, __webpack_require__.o = function (e, r) {
1388
1638
  return Object.prototype.hasOwnProperty.call(e, r);
1389
1639
  };
1390
-
1391
1640
  var __webpack_exports__ = __webpack_require__(133);
1392
1641
  })();
1393
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9Db21tb24vQ2FuZHlBcGlDbGllbnQvQ2xpZW50RHJhZnRJbmZvL0dldENsaWVudERyYWZ0SW5mb1VybC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9Db21tb24vRXJyb3JzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9UeXBpbmdVdGlscy50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9ub2RlX21vZHVsZXMvd2hhdHdnLWZldGNoL2ZldGNoLmpzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0NsaWVudC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0Zvcm1zL0NsaWVudC9DbGllbnRTZXR0aW5ncy50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0Zvcm1zL0NsaWVudC9MZWdhY3lQdWJsaWNGb3JtL0NyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0udHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9IZWxwZXJzL0xvYWRJbnRvRG9jdW1lbnQudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6L0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9oYXJtb255IG1vZHVsZSBkZWNvcmF0b3IiLCJ3ZWJwYWNrOi9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svc3RhcnR1cCJdLCJuYW1lcyI6WyJnZXRDbGllbnREcmFmdEluZm9VcmwiLCJkcmFmdElkIiwibnMiLCJBcHBsaWNhdGlvbkVycm9yIiwiRXJyb3IiLCJtZXNzYWdlIiwibmFtZSIsImNvbnN0cnVjdG9yIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsIk5vdFN1cHBvcnRlZEVycm9yIiwiSW52YWxpZFByb2dyYW1TdGF0ZUVycm9yIiwidW5kZWZpbmVkIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJhcmd1bWVudE5hbWUiLCJUeXBpbmdFcnJvciIsImlzTm90TnVsbE9yVW5kZWZpbmVkIiwiaW5wdXQiLCJzdHJpbmdpZnlVbmtub3duRXJyb3IiLCJlcnJvciIsImVuc3VyZU5vdE51bGxPclVuZGVmaW5lZCIsIm5vb3AiLCJyZWplY3QiLCJpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbCIsIml0ZW1zIiwibWluTGVuZ3RoIiwibGVuZ3RoIiwibWluTGVuZ3RoT3JVbmRlZmluZWQiLCJhcnJheUhhc0xlbmd0aCIsImFycmF5SXNOb3RFbXB0eSIsImFycmF5SGFzQXRMZWFzdE9uZUl0ZW0iLCJlbnN1cmVBcnJheUlzTm90RW1wdHkiLCJlbnN1cmVBcnJheUhhc0xlbmd0aCIsImVuc3VyZUFycmF5TGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsIiwiZW5zdXJlTmV2ZXIiLCJuZXZlckFyZ3VtZW50IiwiZW5zdXJlQW5kR2V0U3RyaW5nIiwicnVuQXN5bmNBY3Rpb24iLCJhY3Rpb24iLCJpc051bGxPckVtcHR5IiwiaXNOb3ROdWxsT3JFbXB0eSIsImlzTnVsbE9yV2hpdGVTcGFjZSIsInRyaW0iLCJ0cmltTGFzdFNsYXNoIiwidXJsIiwic2xpY2UiLCJhc3NlcnRJcyIsInZhbHVlIiwiZ2xvYmFsIiwiZ2xvYmFsVGhpcyIsInNlbGYiLCJzdXBwb3J0IiwiU3ltYm9sIiwiQmxvYiIsImUiLCJvYmoiLCJEYXRhVmlldyIsInByb3RvdHlwZSIsImlzUHJvdG90eXBlT2YiLCJ2aWV3Q2xhc3NlcyIsImlzQXJyYXlCdWZmZXJWaWV3IiwiQXJyYXlCdWZmZXIiLCJpc1ZpZXciLCJpbmRleE9mIiwiT2JqZWN0IiwidG9TdHJpbmciLCJjYWxsIiwibm9ybWFsaXplTmFtZSIsIlN0cmluZyIsInRlc3QiLCJUeXBlRXJyb3IiLCJ0b0xvd2VyQ2FzZSIsIm5vcm1hbGl6ZVZhbHVlIiwiaXRlcmF0b3JGb3IiLCJpdGVyYXRvciIsIm5leHQiLCJzaGlmdCIsImRvbmUiLCJIZWFkZXJzIiwiaGVhZGVycyIsInRoaXMiLCJtYXAiLCJmb3JFYWNoIiwiYXBwZW5kIiwiQXJyYXkiLCJpc0FycmF5IiwiaGVhZGVyIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsIm9sZFZhbHVlIiwiZ2V0IiwiaGFzIiwiaGFzT3duUHJvcGVydHkiLCJzZXQiLCJjYWxsYmFjayIsInRoaXNBcmciLCJrZXlzIiwicHVzaCIsInZhbHVlcyIsImVudHJpZXMiLCJjb25zdW1lZCIsImJvZHkiLCJib2R5VXNlZCIsIlByb21pc2UiLCJmaWxlUmVhZGVyUmVhZHkiLCJyZWFkZXIiLCJyZXNvbHZlIiwib25sb2FkIiwicmVzdWx0Iiwib25lcnJvciIsInJlYWRCbG9iQXNBcnJheUJ1ZmZlciIsImJsb2IiLCJGaWxlUmVhZGVyIiwicHJvbWlzZSIsInJlYWRBc0FycmF5QnVmZmVyIiwicmVhZEFzVGV4dCIsImJ1ZiIsInZpZXciLCJVaW50OEFycmF5IiwiY2hhcnMiLCJpIiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsImJ1ZmZlckNsb25lIiwiYnl0ZUxlbmd0aCIsImJ1ZmZlciIsIkJvZHkiLCJfaW5pdEJvZHkiLCJfYm9keUluaXQiLCJfYm9keVRleHQiLCJfYm9keUJsb2IiLCJGb3JtRGF0YSIsIl9ib2R5Rm9ybURhdGEiLCJVUkxTZWFyY2hQYXJhbXMiLCJfYm9keUFycmF5QnVmZmVyIiwidHlwZSIsInJlamVjdGVkIiwiYXJyYXlCdWZmZXIiLCJieXRlT2Zmc2V0IiwidGhlbiIsInRleHQiLCJyZWFkQXJyYXlCdWZmZXJBc1RleHQiLCJmb3JtRGF0YSIsImRlY29kZSIsImpzb24iLCJKU09OIiwicGFyc2UiLCJtZXRob2RzIiwibWV0aG9kIiwidXBjYXNlZCIsInRvVXBwZXJDYXNlIiwiUmVxdWVzdCIsIm9wdGlvbnMiLCJjcmVkZW50aWFscyIsIm1vZGUiLCJzaWduYWwiLCJyZWZlcnJlciIsImNhY2hlIiwicmVQYXJhbVNlYXJjaCIsInJlcGxhY2UiLCJEYXRlIiwiZ2V0VGltZSIsImNsb25lIiwiZm9ybSIsInNwbGl0IiwiYnl0ZXMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJyYXdIZWFkZXJzIiwic3Vic3RyIiwibGluZSIsInBhcnRzIiwia2V5IiwiUmVzcG9uc2UiLCJib2R5SW5pdCIsInN0YXR1cyIsIm9rIiwic3RhdHVzVGV4dCIsInJlc3BvbnNlIiwicmVkaXJlY3RTdGF0dXNlcyIsInJlZGlyZWN0IiwiUmFuZ2VFcnJvciIsImxvY2F0aW9uIiwiRE9NRXhjZXB0aW9uIiwiZXJyIiwic3RhY2siLCJjcmVhdGUiLCJmZXRjaCIsImluaXQiLCJyZXF1ZXN0IiwiYWJvcnRlZCIsInhociIsIlhNTEh0dHBSZXF1ZXN0IiwiYWJvcnRYaHIiLCJhYm9ydCIsImdldEFsbFJlc3BvbnNlSGVhZGVycyIsInJlc3BvbnNlVVJMIiwicmVzcG9uc2VUZXh0Iiwic2V0VGltZW91dCIsIm9udGltZW91dCIsIm9uYWJvcnQiLCJocmVmIiwib3BlbiIsImZpeFVybCIsIndpdGhDcmVkZW50aWFscyIsInJlc3BvbnNlVHlwZSIsInNldFJlcXVlc3RIZWFkZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZW5kIiwicG9seWZpbGwiLCJkZWZhdWx0Q2FsbGJhY2siLCJwYXJzZUJvb2wiLCJCb29sZWFuIiwicmVsYXRpdmVVcmwiLCJiYXNlVXJsIiwiQ0YiLCJrZWZvcm1zVXJsIiwiYnVpbGRVcmwiLCJwYXRoIiwicGFyYW1zIiwicXVlcnlQYXJ0cyIsInBhcmFtTmFtZSIsInBhcmFtVmFsdWUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJpc0FsbG93ZWQiLCJkb21haW5zIiwiUmVnRXhwIiwiaG9zdCIsImdldFBhcmFtZXRlckJ5TmFtZSIsInNlYXJjaCIsInBhcmFtIiwiZmluZCIsInJ1blBhcmFsbGVsIiwidGFza3MiLCJjb21wbGV0ZWQiLCJ0YXNrIiwiaXNFbmdpbmVWZXJzaW9uR3JlYXRlclRoYW5PckVxdWFsIiwibGVmdCIsInJpZ2h0IiwibGVmdE51bWJlcnMiLCJwYXJzZUludCIsIngiLCJyaWdodE51bWJlcnMiLCJsb2FkRm9ybSIsInNldHRpbmdzIiwiZ2Z2IiwiZW5naW5lVmVyc2lvbiIsInJlc291cmNlc1ZlcnNpb24iLCJlbnRyeVBvaW50IiwiaXNOZWVkRW5naW5lIiwibWluIiwidiIsInJlc291cmNlWm9uZSIsIkxvYWRJbnRvRG9jdW1lbnQiLCJjYiIsInJlbmRlckZvcm0iLCJwYWdlQ29udGVudCIsImV4dGVuZGVkU2V0dGluZ3MiLCJwdWJsaWNGb3JtIiwiY3JlYXRlTGVnYWN5UHVibGljRm9ybSIsImdldEVuZ2luZUVudHJ5UG9pbnQiLCJzdGFydCIsImNsaWVudFNldHRpbmdzIiwiY2xpZW50RHJhZnRVcmwiLCJyZXF1ZXN0T3B0aW9ucyIsImF1dGhlbnRpY2F0aW9uIiwiYXV0aFNpZCIsImZldGNoSW1wbCIsImNsaWVudERyYWZ0SW5mbyIsImF1dGhvcml6ZWQiLCJjYXVsZHJvbkFwaVVybCIsImlzVGVzdFNlcnZlciIsInJlbmRlckNhY2hpbmdGb3JJRTgiLCJub3JtYWxpemF0aW9uT25TZXJ2ZXIiLCJub3JtYXRpdmVVcmwiLCJrb250dXJEb21haW5zIiwiZmVlZGJhY2tFbmFibGVkIiwiaXNEaXNhYmxlZENsZWFuRm9ybSIsImlzRGlzYWJsZWRDbG9zZUJ1dHRvbiIsImlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b24iLCJ0aGVtZSIsImxvYWRFcnJvciIsInJlbmRlciIsInRlbXBsYXRlc0FwaSIsIkNhbmR5Q2xpZW50RXhwb3J0cyIsInBhcnRpYWxSZW5kZXJpbmdGb3JJRTgiLCJtb2RlbENoYW5nZUV2ZW50UGF0aCIsImZpZWxkTmFtZSIsIm1hcENodW5rVmFsdWVzIiwiY2h1bmsiLCJmaWx0ZXIiLCJyZWR1Y2VDaHVua1ZhbHVlcyIsImNodW5rcyIsInJlZHVjZSIsIkxlZ2FjeVB1YmxpY0Zvcm0iLCJ1cGRhdGVQcm9jIiwiZXJyb3JMb2ciLCJlbXBsb3llZXMiLCJwcmludFR5cGUiLCJhY3Rpb25JZCIsInBhcmFtZXRlcnMiLCJnSWQiLCJwaWNrbGlzdHNQcm92aWRlciIsImdldERpZ2VzdEFwaVBpY2tsaXN0IiwicXVlcnkiLCJldmVudE5hbWUiLCJsaXN0ZW5lciIsImV2ZW50TWFuYWdlciIsIm9uIiwib2ZmIiwiY2hhbmdlU2V0Iiwic3RvcEF1dG9zZW5kIiwidW5tb3VudCIsIm1vZGVsIiwiZ2V0Q2h1bmsiLCJmb3JtUm9vdCIsInZhbGlkYXRvciIsInZhbGlkYXRlQWxsIiwiZmlsdGVycyIsImVycm9yQ291bnQiLCJwYXRoT3JNb2RlbENodW5rIiwiaW5uZXJDaHVuayIsImZpbGwiLCJwYXRoT3JBcnJheSIsImFycmF5IiwiY29uY2F0Iiwic291cmNlQmluZGluZ1BhdGgiLCJ0YXJnZXRCaW5kaW5nUGF0aCIsImRvTm90Q29weVBhdGhzIiwiZW1wbG95ZWVJZCIsImluc3RhbmNlIiwiaW5zdGFuY2VzIiwiZW5hYmxlZCIsInBhdGhQcmVmaXhlcyIsImJpbmRpbmdQYXRoIiwibm9ybWFsaXplcklkIiwicnVsZXMiLCJ1cmkiLCJzY3JpcHRMb2FkZWQiLCJoZWFkIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImRvY3VtZW50RWxlbWVudCIsInNjcmlwdCIsImNyZWF0ZUVsZW1lbnQiLCJsb2FkSGFuZGxlciIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInNyYyIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiaWdub3JlRXJyb3IiLCJsaW5rIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwiZXhwb3J0cyIsIm1vZHVsZSIsImlkIiwibG9hZGVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImQiLCJkZWZpbml0aW9uIiwibyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImciLCJGdW5jdGlvbiIsIndpbmRvdyIsImhtZCIsImNoaWxkcmVuIiwicHJvcCIsIl9fd2VicGFja19leHBvcnRzX18iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVPLGVBQVNBLENBQVQsQ0FBK0JDLENBQS9CLEVBQStCQTtBQUdsQyxlQUFBLFNBQUEsTUFBQSxDQUFnQkEsQ0FBQUEsQ0FBUUMsRUFBeEIsRUFBQSxVQUFBLEVBQUEsTUFBQSxDQUFxQ0QsQ0FBQUEsQ0FBUUEsT0FBN0MsRUFBQSxvQkFBQSxDQUFBOzs7Ozs7OzJUQUhZRCxDLEVBQUFBLHVCLEVBQUFBLDJILEdBQUFBLEMsMEZBQUFBLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUNGSEcsZ0JBQUFBLEdBQWIsVUFBQSxNQUFBLEVBQUE7QUFBQSxRQUFBLFNBQUEsQ0FBQSxnQkFBQSxFQUFBLE1BQUEsQ0FBQTs7QUFBQSxZQUFBLE1BQUEsR0FBQSxZQUFBLENBQUEsZ0JBQUEsQ0FBQTs7QUFDSSxpQkFBQSxnQkFBQSxDQUFtQkUsQ0FBbkIsRUFBbUJBO0FBQWlCLGNBQUEsQ0FBQTtBQUFBLGlCQUFBLGVBQUEsQ0FBQSxJQUFBLEVBQUEsZ0JBQUEsQ0FBQSxFQUFBLENBQ2hD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QixTQUE5QkEsRUFBeUM7QUFDeEMrUyxNQUFBQSxVQUFBQSxFQUFBQSxDQUFZLENBRDRCO0FBRXhDblIsTUFBQUEsR0FBQUEsRUFBSyxZQUFBO0FBQ0osY0FBTSxJQUFJdkYsS0FBSixDQUFVLDRGQUE0RmtXLENBQUFBLENBQU9DLEVBQTdHLENBQU47QUFBbUhBO0FBSDVFLEtBQXpDeFMsQ0FNQSxFQUFPdVMsQ0FBUDtBQUFPQSxHRlJSSixFR0RBQSxtQkFBQUEsQ0FBb0JVLENBQXBCVixHQUF3QixVQUFTNVMsQ0FBVCxFQUFjOFQsQ0FBZCxFQUFjQTtBQUFRLFdBQU9yVCxNQUFBQSxDQUFPUCxTQUFQTyxDQUFpQjJCLGNBQWpCM0IsQ0FBZ0NFLElBQWhDRixDQUFxQ1QsQ0FBckNTLEVBQTBDcVQsQ0FBMUNyVCxDQUFQO0FBQWlEcVQsR0hDL0ZsQjs7QUlFQSxNQUFJbUIsbUJBQUFBLEdBQXNCbkIsbUJBQUFBLENBQW9CLEdBQXBCQSxDQUExQjtBQUE4QyxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHJhZnRGdWxsSWQgfSBmcm9tIFwiLi4vVHlwZXMvRHJhZnRGdWxsSWRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENsaWVudERyYWZ0SW5mb1VybChkcmFmdElkOiBEcmFmdEZ1bGxJZCkge1xuICAgIC8vIE5PVEUg0K3RgtCwINGE0YPQvdC60YbQuNGPINC+0LHRitGP0LLQu9C10L3QsCDQvtGC0LTQtdC70YzQvdC+LCDQuNCx0L4g0L7QvdCwINCy0YXQvtC00LjRgiDQsiDRgdC+0YHRgtCw0LIgY2xpZW50LmpzINC4XG4gICAgLy8g0L3QtSDQtNC+0LvQttC90L4g0L/RgNC+0LjRgdGF0L7QtNC40YLRjCDRg9GC0LXQttC10LvQtdC90LjRjyBjbGllbnQuanMt0LBcbiAgICByZXR1cm4gYHYxL25zLyR7ZHJhZnRJZC5uc30vZHJhZnRzLyR7ZHJhZnRJZC5kcmFmdElkfS9jbGllbnQtZHJhZnQtaW5mb2A7XG59XG4iLCJleHBvcnQgY2xhc3MgQXBwbGljYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTm90SW1wbGVtZW50ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoXCJPcGVyYXRpb24gbm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdFN1cHBvcnRlZEVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSA/PyBcIk9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRQcm9ncmFtU3RhdGVFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCBwcm9ncmFtIHN0YXRlXCIgKyAobWVzc2FnZSAhPSB1bmRlZmluZWQgPyBcIjogXCIgKyBtZXNzYWdlIDogXCJcIikpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRBcmd1bWVudEVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGFyZ3VtZW50TmFtZTogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgbWVzc2FnZSAhPSB1bmRlZmluZWQgPyBgJHttZXNzYWdlfSAoYXJndW1lbnQ6ICR7YXJndW1lbnROYW1lfSlgIDogYEludmFsaWQgYXJndW1lbnQgdmFsdWU6ICR7YXJndW1lbnROYW1lfWBcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUeXBpbmdFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoXCJJbnZhbGlkIHR5cGluZ1wiKTtcbiAgICB9XG59XG4iLCIvKioqXG4gKiDQodGC0YDQvtCz0L7RgtC40L/QuNC30LjRgNC+0LLQsNC90L3QsNGPINC30LDQvNC10L3QsCDQtNC70Y8gQm9vbGVhbiguLi4pXG4gKiDQntCx0YvRh9C90L4g0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyBbLi4uXS5maWx0ZXIoaXNOb3ROdWxsT3JVbmRlZmluZWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGlucHV0IGlzIE5vbk51bGxhYmxlPFQ+IHtcbiAgICByZXR1cm4gaW5wdXQgIT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5VW5rbm93bkVycm9yKGVycm9yOiB1bmtub3duKTogdW5kZWZpbmVkIHwgc3RyaW5nIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICByZXR1cm4gdHlwZW9mIGVycm9yID09PSBcIm9iamVjdFwiICYmIGVycm9yPy5bXCJtZXNzYWdlXCJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlTm90TnVsbE9yVW5kZWZpbmVkPFQ+KGlucHV0OiBUKTogYXNzZXJ0cyBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgaWYgKCFpc05vdE51bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBWYWx1ZSBtdXN0IGJlIGRlZmluZWRgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub29wKCk6IHZvaWQge1xuICAgIC8vIG5vb3Bcbn1cblxuZXhwb3J0IHR5cGUgRXJyb3JGaXJzdENhbGxiYWNrPFQ+ID0gKC4uLmFyZ3M6IFtFcnJvciwgbnVsbCB8IHVuZGVmaW5lZF0gfCBbbnVsbCB8IHVuZGVmaW5lZCwgVF0gfCBbRXJyb3JdKSA9PiB2b2lkO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVqZWN0KG1lc3NhZ2U/OiBzdHJpbmcgfCBFcnJvcik6IG5ldmVyIHtcbiAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09IFwic3RyaW5nXCIgfHwgbWVzc2FnZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgPz8gXCJVbmRlZmluZWQgaXMgbm90IGFsbG93ZWRcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbWVzc2FnZTtcbiAgICB9XG59XG5cbnR5cGUgQXJyYXlPZkxlbmd0aDxUSXRlbSwgVExlbmd0aCBleHRlbmRzIG51bWJlciwgVFJlc3QgZXh0ZW5kcyBUSXRlbVtdID0gW10+ID0gVFJlc3QgZXh0ZW5kcyB7IGxlbmd0aDogVExlbmd0aCB9XG4gICAgPyBUUmVzdFxuICAgIDogQXJyYXlPZkxlbmd0aDxUSXRlbSwgVExlbmd0aCwgW1RJdGVtLCAuLi5UUmVzdF0+O1xuXG5leHBvcnQgdHlwZSBNaW5MZW5ndGhBcnJheTxUSXRlbSwgVExlbmd0aCBleHRlbmRzIG51bWJlciwgVFJlc3QgZXh0ZW5kcyBUSXRlbVtdID0gW10+ID0gVFJlc3QgZXh0ZW5kcyB7XG4gICAgbGVuZ3RoOiBUTGVuZ3RoO1xufVxuICAgID8gWy4uLlRSZXN0LCAuLi5USXRlbVtdXVxuICAgIDogTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGgsIFsuLi5UUmVzdCwgVEl0ZW1dPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbWluTGVuZ3RoOiBUTnVtXG4pOiBpdGVtcyBpcyBNaW5MZW5ndGhBcnJheTxULCBUTnVtPiB7XG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+PSBtaW5MZW5ndGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW5MZW5ndGhPclVuZGVmaW5lZDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogdW5kZWZpbmVkIHwgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIGlmIChpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbChpdGVtcywgbWluTGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUhhc0xlbmd0aDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogaXRlbXMgaXMgQXJyYXlPZkxlbmd0aDxULCBUTnVtPiB7XG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA9PT0gbGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlJc05vdEVtcHR5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBpdGVtcyBpcyBNaW5MZW5ndGhBcnJheTxULCAxPiB7XG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUhhc0F0TGVhc3RPbmVJdGVtPFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBpdGVtcyBpcyBNaW5MZW5ndGhBcnJheTxULCAxPiB7XG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUlzTm90RW1wdHk8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSk6IGFzc2VydHMgaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIGlmICghYXJyYXlJc05vdEVtcHR5KGl0ZW1zKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFycmF5IG11c3QgYmUgbm90IGVtcHR5YCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlIYXNMZW5ndGg8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGFzc2VydHMgaXRlbXMgaXMgQXJyYXlPZkxlbmd0aDxULCBUTnVtPiB7XG4gICAgaWYgKCFhcnJheUhhc0xlbmd0aChpdGVtcywgbGVuZ3RoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFycmF5IHNob3VsZCBoYXMgbGVuZ3RoICR7bGVuZ3RofWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5TGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBhc3NlcnRzIGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIGlmICghaXNMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWwoaXRlbXMsIGxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBtdXN0IGhhdmUgbWluaW1hbCBsZW5ndGggJHtsZW5ndGh9YCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlTmV2ZXIobmV2ZXJBcmd1bWVudDogbmV2ZXIpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBbmRHZXRTdHJpbmcobmV2ZXJBcmd1bWVudDogbmV2ZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtuZXZlckFyZ3VtZW50fWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5Bc3luY0FjdGlvbihhY3Rpb246ICgpID0+IFByb21pc2U8dm9pZD4pOiB2b2lkIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgYWN0aW9uKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bGxPckVtcHR5KGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBpbnB1dCBpcyB1bmRlZmluZWQge1xuICAgIHJldHVybiBpbnB1dCA9PSB1bmRlZmluZWQgfHwgaW5wdXQgPT09IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vdE51bGxPckVtcHR5KGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBpbnB1dCBpcyBzdHJpbmcge1xuICAgIHJldHVybiAhaXNOdWxsT3JFbXB0eShpbnB1dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bGxPcldoaXRlU3BhY2UoaW5wdXQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiBpbnB1dCBpcyB1bmRlZmluZWQgfCBudWxsIHtcbiAgICByZXR1cm4gaW5wdXQgPT0gdW5kZWZpbmVkIHx8IGlucHV0LnRyaW0oKSA9PT0gXCJcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyaW1MYXN0U2xhc2godXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB1cmwuc2xpY2UoLTEpID09PSBcIi9cIiA/IHVybC5zbGljZSgwLCAtMSkgOiB1cmw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRJczxUPih2YWx1ZTogVCk6IHZvaWQge1xuICAgIC8vIG5vb3Bcbn1cbiIsInZhciBnbG9iYWwgPVxuICAodHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbFRoaXMpIHx8XG4gICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZikgfHxcbiAgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbClcblxudmFyIHN1cHBvcnQgPSB7XG4gIHNlYXJjaFBhcmFtczogJ1VSTFNlYXJjaFBhcmFtcycgaW4gZ2xvYmFsLFxuICBpdGVyYWJsZTogJ1N5bWJvbCcgaW4gZ2xvYmFsICYmICdpdGVyYXRvcicgaW4gU3ltYm9sLFxuICBibG9iOlxuICAgICdGaWxlUmVhZGVyJyBpbiBnbG9iYWwgJiZcbiAgICAnQmxvYicgaW4gZ2xvYmFsICYmXG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3IEJsb2IoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KSgpLFxuICBmb3JtRGF0YTogJ0Zvcm1EYXRhJyBpbiBnbG9iYWwsXG4gIGFycmF5QnVmZmVyOiAnQXJyYXlCdWZmZXInIGluIGdsb2JhbFxufVxuXG5mdW5jdGlvbiBpc0RhdGFWaWV3KG9iaikge1xuICByZXR1cm4gb2JqICYmIERhdGFWaWV3LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKG9iailcbn1cblxuaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHZpZXdDbGFzc2VzID0gW1xuICAgICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nXG4gIF1cblxuICB2YXIgaXNBcnJheUJ1ZmZlclZpZXcgPVxuICAgIEFycmF5QnVmZmVyLmlzVmlldyB8fFxuICAgIGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB2aWV3Q2xhc3Nlcy5pbmRleE9mKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopKSA+IC0xXG4gICAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVOYW1lKG5hbWUpIHtcbiAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgIG5hbWUgPSBTdHJpbmcobmFtZSlcbiAgfVxuICBpZiAoL1teYS16MC05XFwtIyQlJicqKy5eX2B8fiFdL2kudGVzdChuYW1lKSB8fCBuYW1lID09PSAnJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1lOiBcIicgKyBuYW1lICsgJ1wiJylcbiAgfVxuICByZXR1cm4gbmFtZS50b0xvd2VyQ2FzZSgpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8vIEJ1aWxkIGEgZGVzdHJ1Y3RpdmUgaXRlcmF0b3IgZm9yIHRoZSB2YWx1ZSBsaXN0XG5mdW5jdGlvbiBpdGVyYXRvckZvcihpdGVtcykge1xuICB2YXIgaXRlcmF0b3IgPSB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdmFsdWUgPSBpdGVtcy5zaGlmdCgpXG4gICAgICByZXR1cm4ge2RvbmU6IHZhbHVlID09PSB1bmRlZmluZWQsIHZhbHVlOiB2YWx1ZX1cbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICAgIGl0ZXJhdG9yW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBpdGVyYXRvclxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpdGVyYXRvclxufVxuXG5leHBvcnQgZnVuY3Rpb24gSGVhZGVycyhoZWFkZXJzKSB7XG4gIHRoaXMubWFwID0ge31cblxuICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIHZhbHVlKVxuICAgIH0sIHRoaXMpXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzKSkge1xuICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbihoZWFkZXIpIHtcbiAgICAgIHRoaXMuYXBwZW5kKGhlYWRlclswXSwgaGVhZGVyWzFdKVxuICAgIH0sIHRoaXMpXG4gIH0gZWxzZSBpZiAoaGVhZGVycykge1xuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgdGhpcy5hcHBlbmQobmFtZSwgaGVhZGVyc1tuYW1lXSlcbiAgICB9LCB0aGlzKVxuICB9XG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHZhbHVlID0gbm9ybWFsaXplVmFsdWUodmFsdWUpXG4gIHZhciBvbGRWYWx1ZSA9IHRoaXMubWFwW25hbWVdXG4gIHRoaXMubWFwW25hbWVdID0gb2xkVmFsdWUgPyBvbGRWYWx1ZSArICcsICcgKyB2YWx1ZSA6IHZhbHVlXG59XG5cbkhlYWRlcnMucHJvdG90eXBlWydkZWxldGUnXSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgZGVsZXRlIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAgcmV0dXJuIHRoaXMuaGFzKG5hbWUpID8gdGhpcy5tYXBbbmFtZV0gOiBudWxsXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuIHRoaXMubWFwLmhhc093blByb3BlcnR5KG5vcm1hbGl6ZU5hbWUobmFtZSkpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldID0gbm9ybWFsaXplVmFsdWUodmFsdWUpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihjYWxsYmFjaywgdGhpc0FyZykge1xuICBmb3IgKHZhciBuYW1lIGluIHRoaXMubWFwKSB7XG4gICAgaWYgKHRoaXMubWFwLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHRoaXMubWFwW25hbWVdLCBuYW1lLCB0aGlzKVxuICAgIH1cbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5rZXlzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgIGl0ZW1zLnB1c2gobmFtZSlcbiAgfSlcbiAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaXRlbXMucHVzaCh2YWx1ZSlcbiAgfSlcbiAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgIGl0ZW1zLnB1c2goW25hbWUsIHZhbHVlXSlcbiAgfSlcbiAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxufVxuXG5pZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICBIZWFkZXJzLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdID0gSGVhZGVycy5wcm90b3R5cGUuZW50cmllc1xufVxuXG5mdW5jdGlvbiBjb25zdW1lZChib2R5KSB7XG4gIGlmIChib2R5LmJvZHlVc2VkKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpKVxuICB9XG4gIGJvZHkuYm9keVVzZWQgPSB0cnVlXG59XG5cbmZ1bmN0aW9uIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdClcbiAgICB9XG4gICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiByZWFkQmxvYkFzQXJyYXlCdWZmZXIoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5mdW5jdGlvbiByZWFkQmxvYkFzVGV4dChibG9iKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYilcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuZnVuY3Rpb24gcmVhZEFycmF5QnVmZmVyQXNUZXh0KGJ1Zikge1xuICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZilcbiAgdmFyIGNoYXJzID0gbmV3IEFycmF5KHZpZXcubGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmlldy5sZW5ndGg7IGkrKykge1xuICAgIGNoYXJzW2ldID0gU3RyaW5nLmZyb21DaGFyQ29kZSh2aWV3W2ldKVxuICB9XG4gIHJldHVybiBjaGFycy5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBidWZmZXJDbG9uZShidWYpIHtcbiAgaWYgKGJ1Zi5zbGljZSkge1xuICAgIHJldHVybiBidWYuc2xpY2UoMClcbiAgfSBlbHNlIHtcbiAgICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zi5ieXRlTGVuZ3RoKVxuICAgIHZpZXcuc2V0KG5ldyBVaW50OEFycmF5KGJ1ZikpXG4gICAgcmV0dXJuIHZpZXcuYnVmZmVyXG4gIH1cbn1cblxuZnVuY3Rpb24gQm9keSgpIHtcbiAgdGhpcy5ib2R5VXNlZCA9IGZhbHNlXG5cbiAgdGhpcy5faW5pdEJvZHkgPSBmdW5jdGlvbihib2R5KSB7XG4gICAgLypcbiAgICAgIGZldGNoLW1vY2sgd3JhcHMgdGhlIFJlc3BvbnNlIG9iamVjdCBpbiBhbiBFUzYgUHJveHkgdG9cbiAgICAgIHByb3ZpZGUgdXNlZnVsIHRlc3QgaGFybmVzcyBmZWF0dXJlcyBzdWNoIGFzIGZsdXNoLiBIb3dldmVyLCBvblxuICAgICAgRVM1IGJyb3dzZXJzIHdpdGhvdXQgZmV0Y2ggb3IgUHJveHkgc3VwcG9ydCBwb2xseWZpbGxzIG11c3QgYmUgdXNlZDtcbiAgICAgIHRoZSBwcm94eS1wb2xseWZpbGwgaXMgdW5hYmxlIHRvIHByb3h5IGFuIGF0dHJpYnV0ZSB1bmxlc3MgaXQgZXhpc3RzXG4gICAgICBvbiB0aGUgb2JqZWN0IGJlZm9yZSB0aGUgUHJveHkgaXMgY3JlYXRlZC4gVGhpcyBjaGFuZ2UgZW5zdXJlc1xuICAgICAgUmVzcG9uc2UuYm9keVVzZWQgZXhpc3RzIG9uIHRoZSBpbnN0YW5jZSwgd2hpbGUgbWFpbnRhaW5pbmcgdGhlXG4gICAgICBzZW1hbnRpYyBvZiBzZXR0aW5nIFJlcXVlc3QuYm9keVVzZWQgaW4gdGhlIGNvbnN0cnVjdG9yIGJlZm9yZVxuICAgICAgX2luaXRCb2R5IGlzIGNhbGxlZC5cbiAgICAqL1xuICAgIHRoaXMuYm9keVVzZWQgPSB0aGlzLmJvZHlVc2VkXG4gICAgdGhpcy5fYm9keUluaXQgPSBib2R5XG4gICAgaWYgKCFib2R5KSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9ICcnXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iICYmIEJsb2IucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlCbG9iID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5mb3JtRGF0YSAmJiBGb3JtRGF0YS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUZvcm1EYXRhID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkudG9TdHJpbmcoKVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiBzdXBwb3J0LmJsb2IgJiYgaXNEYXRhVmlldyhib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keS5idWZmZXIpXG4gICAgICAvLyBJRSAxMC0xMSBjYW4ndCBoYW5kbGUgYSBEYXRhVmlldyBib2R5LlxuICAgICAgdGhpcy5fYm9keUluaXQgPSBuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgKEFycmF5QnVmZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpIHx8IGlzQXJyYXlCdWZmZXJWaWV3KGJvZHkpKSkge1xuICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5ID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGJvZHkpXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSkge1xuICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04JylcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUJsb2IgJiYgdGhpcy5fYm9keUJsb2IudHlwZSkge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCB0aGlzLl9ib2R5QmxvYi50eXBlKVxuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04JylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgdGhpcy5ibG9iID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiByZWplY3RlZFxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QmxvYilcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIGJsb2InKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keVRleHRdKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmFycmF5QnVmZmVyID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICAgIHZhciBpc0NvbnN1bWVkID0gY29uc3VtZWQodGhpcylcbiAgICAgICAgaWYgKGlzQ29uc3VtZWQpIHtcbiAgICAgICAgICByZXR1cm4gaXNDb25zdW1lZFxuICAgICAgICB9XG4gICAgICAgIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcodGhpcy5fYm9keUFycmF5QnVmZmVyKSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnVmZmVyLnNsaWNlKFxuICAgICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZU9mZnNldCxcbiAgICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQgKyB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZUxlbmd0aFxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcilcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYmxvYigpLnRoZW4ocmVhZEJsb2JBc0FycmF5QnVmZmVyKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRoaXMudGV4dCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgIHJldHVybiByZWFkQmxvYkFzVGV4dCh0aGlzLl9ib2R5QmxvYilcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZWFkQXJyYXlCdWZmZXJBc1RleHQodGhpcy5fYm9keUFycmF5QnVmZmVyKSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIHRleHQnKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlUZXh0KVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0LmZvcm1EYXRhKSB7XG4gICAgdGhpcy5mb3JtRGF0YSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oZGVjb2RlKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuanNvbiA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKEpTT04ucGFyc2UpXG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBIVFRQIG1ldGhvZHMgd2hvc2UgY2FwaXRhbGl6YXRpb24gc2hvdWxkIGJlIG5vcm1hbGl6ZWRcbnZhciBtZXRob2RzID0gWydERUxFVEUnLCAnR0VUJywgJ0hFQUQnLCAnT1BUSU9OUycsICdQT1NUJywgJ1BVVCddXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1ldGhvZChtZXRob2QpIHtcbiAgdmFyIHVwY2FzZWQgPSBtZXRob2QudG9VcHBlckNhc2UoKVxuICByZXR1cm4gbWV0aG9kcy5pbmRleE9mKHVwY2FzZWQpID4gLTEgPyB1cGNhc2VkIDogbWV0aG9kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXF1ZXN0KGlucHV0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXF1ZXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BsZWFzZSB1c2UgdGhlIFwibmV3XCIgb3BlcmF0b3IsIHRoaXMgRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJylcbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBib2R5ID0gb3B0aW9ucy5ib2R5XG5cbiAgaWYgKGlucHV0IGluc3RhbmNlb2YgUmVxdWVzdCkge1xuICAgIGlmIChpbnB1dC5ib2R5VXNlZCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJylcbiAgICB9XG4gICAgdGhpcy51cmwgPSBpbnB1dC51cmxcbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gaW5wdXQuY3JlZGVudGlhbHNcbiAgICBpZiAoIW9wdGlvbnMuaGVhZGVycykge1xuICAgICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMoaW5wdXQuaGVhZGVycylcbiAgICB9XG4gICAgdGhpcy5tZXRob2QgPSBpbnB1dC5tZXRob2RcbiAgICB0aGlzLm1vZGUgPSBpbnB1dC5tb2RlXG4gICAgdGhpcy5zaWduYWwgPSBpbnB1dC5zaWduYWxcbiAgICBpZiAoIWJvZHkgJiYgaW5wdXQuX2JvZHlJbml0ICE9IG51bGwpIHtcbiAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXRcbiAgICAgIGlucHV0LmJvZHlVc2VkID0gdHJ1ZVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aGlzLnVybCA9IFN0cmluZyhpbnB1dClcbiAgfVxuXG4gIHRoaXMuY3JlZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzIHx8IHRoaXMuY3JlZGVudGlhbHMgfHwgJ3NhbWUtb3JpZ2luJ1xuICBpZiAob3B0aW9ucy5oZWFkZXJzIHx8ICF0aGlzLmhlYWRlcnMpIHtcbiAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gIH1cbiAgdGhpcy5tZXRob2QgPSBub3JtYWxpemVNZXRob2Qob3B0aW9ucy5tZXRob2QgfHwgdGhpcy5tZXRob2QgfHwgJ0dFVCcpXG4gIHRoaXMubW9kZSA9IG9wdGlvbnMubW9kZSB8fCB0aGlzLm1vZGUgfHwgbnVsbFxuICB0aGlzLnNpZ25hbCA9IG9wdGlvbnMuc2lnbmFsIHx8IHRoaXMuc2lnbmFsXG4gIHRoaXMucmVmZXJyZXIgPSBudWxsXG5cbiAgaWYgKCh0aGlzLm1ldGhvZCA9PT0gJ0dFVCcgfHwgdGhpcy5tZXRob2QgPT09ICdIRUFEJykgJiYgYm9keSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JvZHkgbm90IGFsbG93ZWQgZm9yIEdFVCBvciBIRUFEIHJlcXVlc3RzJylcbiAgfVxuICB0aGlzLl9pbml0Qm9keShib2R5KVxuXG4gIGlmICh0aGlzLm1ldGhvZCA9PT0gJ0dFVCcgfHwgdGhpcy5tZXRob2QgPT09ICdIRUFEJykge1xuICAgIGlmIChvcHRpb25zLmNhY2hlID09PSAnbm8tc3RvcmUnIHx8IG9wdGlvbnMuY2FjaGUgPT09ICduby1jYWNoZScpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgYSAnXycgcGFyYW1ldGVyIGluIHRoZSBxdWVyeSBzdHJpbmdcbiAgICAgIHZhciByZVBhcmFtU2VhcmNoID0gLyhbPyZdKV89W14mXSovXG4gICAgICBpZiAocmVQYXJhbVNlYXJjaC50ZXN0KHRoaXMudXJsKSkge1xuICAgICAgICAvLyBJZiBpdCBhbHJlYWR5IGV4aXN0cyB0aGVuIHNldCB0aGUgdmFsdWUgd2l0aCB0aGUgY3VycmVudCB0aW1lXG4gICAgICAgIHRoaXMudXJsID0gdGhpcy51cmwucmVwbGFjZShyZVBhcmFtU2VhcmNoLCAnJDFfPScgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE90aGVyd2lzZSBhZGQgYSBuZXcgJ18nIHBhcmFtZXRlciB0byB0aGUgZW5kIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB2YXIgcmVRdWVyeVN0cmluZyA9IC9cXD8vXG4gICAgICAgIHRoaXMudXJsICs9IChyZVF1ZXJ5U3RyaW5nLnRlc3QodGhpcy51cmwpID8gJyYnIDogJz8nKSArICdfPScgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5SZXF1ZXN0LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFJlcXVlc3QodGhpcywge2JvZHk6IHRoaXMuX2JvZHlJbml0fSlcbn1cblxuZnVuY3Rpb24gZGVjb2RlKGJvZHkpIHtcbiAgdmFyIGZvcm0gPSBuZXcgRm9ybURhdGEoKVxuICBib2R5XG4gICAgLnRyaW0oKVxuICAgIC5zcGxpdCgnJicpXG4gICAgLmZvckVhY2goZnVuY3Rpb24oYnl0ZXMpIHtcbiAgICAgIGlmIChieXRlcykge1xuICAgICAgICB2YXIgc3BsaXQgPSBieXRlcy5zcGxpdCgnPScpXG4gICAgICAgIHZhciBuYW1lID0gc3BsaXQuc2hpZnQoKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICB2YXIgdmFsdWUgPSBzcGxpdC5qb2luKCc9JykucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgZm9ybS5hcHBlbmQoZGVjb2RlVVJJQ29tcG9uZW50KG5hbWUpLCBkZWNvZGVVUklDb21wb25lbnQodmFsdWUpKVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBmb3JtXG59XG5cbmZ1bmN0aW9uIHBhcnNlSGVhZGVycyhyYXdIZWFkZXJzKSB7XG4gIHZhciBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKVxuICAvLyBSZXBsYWNlIGluc3RhbmNlcyBvZiBcXHJcXG4gYW5kIFxcbiBmb2xsb3dlZCBieSBhdCBsZWFzdCBvbmUgc3BhY2Ugb3IgaG9yaXpvbnRhbCB0YWIgd2l0aCBhIHNwYWNlXG4gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4yXG4gIHZhciBwcmVQcm9jZXNzZWRIZWFkZXJzID0gcmF3SGVhZGVycy5yZXBsYWNlKC9cXHI/XFxuW1xcdCBdKy9nLCAnICcpXG4gIC8vIEF2b2lkaW5nIHNwbGl0IHZpYSByZWdleCB0byB3b3JrIGFyb3VuZCBhIGNvbW1vbiBJRTExIGJ1ZyB3aXRoIHRoZSBjb3JlLWpzIDMuNi4wIHJlZ2V4IHBvbHlmaWxsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9naXRodWIvZmV0Y2gvaXNzdWVzLzc0OFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNzUxXG4gIHByZVByb2Nlc3NlZEhlYWRlcnNcbiAgICAuc3BsaXQoJ1xccicpXG4gICAgLm1hcChmdW5jdGlvbihoZWFkZXIpIHtcbiAgICAgIHJldHVybiBoZWFkZXIuaW5kZXhPZignXFxuJykgPT09IDAgPyBoZWFkZXIuc3Vic3RyKDEsIGhlYWRlci5sZW5ndGgpIDogaGVhZGVyXG4gICAgfSlcbiAgICAuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgICB2YXIgcGFydHMgPSBsaW5lLnNwbGl0KCc6JylcbiAgICAgIHZhciBrZXkgPSBwYXJ0cy5zaGlmdCgpLnRyaW0oKVxuICAgICAgaWYgKGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBwYXJ0cy5qb2luKCc6JykudHJpbSgpXG4gICAgICAgIGhlYWRlcnMuYXBwZW5kKGtleSwgdmFsdWUpXG4gICAgICB9XG4gICAgfSlcbiAgcmV0dXJuIGhlYWRlcnNcbn1cblxuQm9keS5jYWxsKFJlcXVlc3QucHJvdG90eXBlKVxuXG5leHBvcnQgZnVuY3Rpb24gUmVzcG9uc2UoYm9keUluaXQsIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlc3BvbnNlKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BsZWFzZSB1c2UgdGhlIFwibmV3XCIgb3BlcmF0b3IsIHRoaXMgRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJylcbiAgfVxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge31cbiAgfVxuXG4gIHRoaXMudHlwZSA9ICdkZWZhdWx0J1xuICB0aGlzLnN0YXR1cyA9IG9wdGlvbnMuc3RhdHVzID09PSB1bmRlZmluZWQgPyAyMDAgOiBvcHRpb25zLnN0YXR1c1xuICB0aGlzLm9rID0gdGhpcy5zdGF0dXMgPj0gMjAwICYmIHRoaXMuc3RhdHVzIDwgMzAwXG4gIHRoaXMuc3RhdHVzVGV4dCA9IG9wdGlvbnMuc3RhdHVzVGV4dCA9PT0gdW5kZWZpbmVkID8gJycgOiAnJyArIG9wdGlvbnMuc3RhdHVzVGV4dFxuICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gIHRoaXMudXJsID0gb3B0aW9ucy51cmwgfHwgJydcbiAgdGhpcy5faW5pdEJvZHkoYm9keUluaXQpXG59XG5cbkJvZHkuY2FsbChSZXNwb25zZS5wcm90b3R5cGUpXG5cblJlc3BvbnNlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKHRoaXMuX2JvZHlJbml0LCB7XG4gICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICBzdGF0dXNUZXh0OiB0aGlzLnN0YXR1c1RleHQsXG4gICAgaGVhZGVyczogbmV3IEhlYWRlcnModGhpcy5oZWFkZXJzKSxcbiAgICB1cmw6IHRoaXMudXJsXG4gIH0pXG59XG5cblJlc3BvbnNlLmVycm9yID0gZnVuY3Rpb24oKSB7XG4gIHZhciByZXNwb25zZSA9IG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiAwLCBzdGF0dXNUZXh0OiAnJ30pXG4gIHJlc3BvbnNlLnR5cGUgPSAnZXJyb3InXG4gIHJldHVybiByZXNwb25zZVxufVxuXG52YXIgcmVkaXJlY3RTdGF0dXNlcyA9IFszMDEsIDMwMiwgMzAzLCAzMDcsIDMwOF1cblxuUmVzcG9uc2UucmVkaXJlY3QgPSBmdW5jdGlvbih1cmwsIHN0YXR1cykge1xuICBpZiAocmVkaXJlY3RTdGF0dXNlcy5pbmRleE9mKHN0YXR1cykgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgc3RhdHVzIGNvZGUnKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiBzdGF0dXMsIGhlYWRlcnM6IHtsb2NhdGlvbjogdXJsfX0pXG59XG5cbmV4cG9ydCB2YXIgRE9NRXhjZXB0aW9uID0gZ2xvYmFsLkRPTUV4Y2VwdGlvblxudHJ5IHtcbiAgbmV3IERPTUV4Y2VwdGlvbigpXG59IGNhdGNoIChlcnIpIHtcbiAgRE9NRXhjZXB0aW9uID0gZnVuY3Rpb24obWVzc2FnZSwgbmFtZSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2VcbiAgICB0aGlzLm5hbWUgPSBuYW1lXG4gICAgdmFyIGVycm9yID0gRXJyb3IobWVzc2FnZSlcbiAgICB0aGlzLnN0YWNrID0gZXJyb3Iuc3RhY2tcbiAgfVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpXG4gIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBET01FeGNlcHRpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoKGlucHV0LCBpbml0KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KVxuXG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsICYmIHJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHJldHVybiByZWplY3QobmV3IERPTUV4Y2VwdGlvbignQWJvcnRlZCcsICdBYm9ydEVycm9yJykpXG4gICAgfVxuXG4gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpXG5cbiAgICBmdW5jdGlvbiBhYm9ydFhocigpIHtcbiAgICAgIHhoci5hYm9ydCgpXG4gICAgfVxuXG4gICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgIHN0YXR1czogeGhyLnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHBhcnNlSGVhZGVycyh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgfHwgJycpXG4gICAgICB9XG4gICAgICBvcHRpb25zLnVybCA9ICdyZXNwb25zZVVSTCcgaW4geGhyID8geGhyLnJlc3BvbnNlVVJMIDogb3B0aW9ucy5oZWFkZXJzLmdldCgnWC1SZXF1ZXN0LVVSTCcpXG4gICAgICB2YXIgYm9keSA9ICdyZXNwb25zZScgaW4geGhyID8geGhyLnJlc3BvbnNlIDogeGhyLnJlc3BvbnNlVGV4dFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVzb2x2ZShuZXcgUmVzcG9uc2UoYm9keSwgb3B0aW9ucykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub250aW1lb3V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25hYm9ydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaXhVcmwodXJsKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdXJsID09PSAnJyAmJiBnbG9iYWwubG9jYXRpb24uaHJlZiA/IGdsb2JhbC5sb2NhdGlvbi5ocmVmIDogdXJsXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIub3BlbihyZXF1ZXN0Lm1ldGhvZCwgZml4VXJsKHJlcXVlc3QudXJsKSwgdHJ1ZSlcblxuICAgIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnaW5jbHVkZScpIHtcbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnb21pdCcpIHtcbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmICgncmVzcG9uc2VUeXBlJyBpbiB4aHIpIHtcbiAgICAgIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJ1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgc3VwcG9ydC5hcnJheUJ1ZmZlciAmJlxuICAgICAgICByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdDb250ZW50LVR5cGUnKSAmJlxuICAgICAgICByZXF1ZXN0LmhlYWRlcnMuZ2V0KCdDb250ZW50LVR5cGUnKS5pbmRleE9mKCdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nKSAhPT0gLTFcbiAgICAgICkge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2FycmF5YnVmZmVyJ1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbml0ICYmIHR5cGVvZiBpbml0LmhlYWRlcnMgPT09ICdvYmplY3QnICYmICEoaW5pdC5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykpIHtcbiAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluaXQuaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIG5vcm1hbGl6ZVZhbHVlKGluaXQuaGVhZGVyc1tuYW1lXSkpXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsKSB7XG4gICAgICByZXF1ZXN0LnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0WGhyKVxuXG4gICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIERPTkUgKHN1Y2Nlc3Mgb3IgZmFpbHVyZSlcbiAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0KSB7XG4gICAgICAgICAgcmVxdWVzdC5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHhoci5zZW5kKHR5cGVvZiByZXF1ZXN0Ll9ib2R5SW5pdCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogcmVxdWVzdC5fYm9keUluaXQpXG4gIH0pXG59XG5cbmZldGNoLnBvbHlmaWxsID0gdHJ1ZVxuXG5pZiAoIWdsb2JhbC5mZXRjaCkge1xuICBnbG9iYWwuZmV0Y2ggPSBmZXRjaFxuICBnbG9iYWwuSGVhZGVycyA9IEhlYWRlcnNcbiAgZ2xvYmFsLlJlcXVlc3QgPSBSZXF1ZXN0XG4gIGdsb2JhbC5SZXNwb25zZSA9IFJlc3BvbnNlXG59XG4iLCIvKiB0c2xpbnQ6ZGlzYWJsZTpuby1udWxsLWtleXdvcmQgbm8tYW55IG5vLXVuc2FmZS1hbnkgKi9cbmltcG9ydCB7IGZldGNoIH0gZnJvbSBcIndoYXR3Zy1mZXRjaFwiO1xuXG5pbXBvcnQgeyBFcnJvckZpcnN0Q2FsbGJhY2ssIHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB7IExvYWRJbnRvRG9jdW1lbnQgfSBmcm9tIFwiLi4vLi4vSGVscGVycy9Mb2FkSW50b0RvY3VtZW50XCI7XG5pbXBvcnQgdHlwZSB7IElQdWJsaWNGb3JtIH0gZnJvbSBcIi4uL1B1YmxpY0Zvcm0vSVB1YmxpY0Zvcm1cIjtcbmltcG9ydCB0eXBlIHsgSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50IH0gZnJvbSBcIi4uL1R5cGVzL0lLZVdlYlRlbXBsYXRlc0FwaUNsaWVudFwiO1xuaW1wb3J0IHR5cGUgeyBDbGllbnREcmFmdEluZm9SZXNwb25zZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvQ2xpZW50RHJhZnRJbmZvL0NsaWVudERyYWZ0SW5mb1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBnZXRDbGllbnREcmFmdEluZm9VcmwgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NsaWVudERyYWZ0SW5mby9HZXRDbGllbnREcmFmdEluZm9VcmxcIjtcbmltcG9ydCB7IEFVT09wdGlvbnMgfSBmcm9tIFwiLi4vVHlwZXMvQVVPT3B0aW9uc1wiO1xuaW1wb3J0IHR5cGUgeyBMYXlvdXRFdmVudHNTdGF0aWMgfSBmcm9tIFwiLi4vLi4vQ29udHJvbHMvSW50ZXJuYWxzL0xheW91dEV2ZW50cy9MYXlvdXRFdmVudHNcIjtcblxuaW1wb3J0IHsgY2xpZW50U2V0dGluZ3MgfSBmcm9tIFwiLi9DbGllbnRTZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlTGVnYWN5UHVibGljRm9ybSB9IGZyb20gXCIuL0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybVwiO1xuXG50eXBlIEZvcm1Db250YWluZXIgPSBzdHJpbmcgfCBIVE1MRWxlbWVudDtcblxudHlwZSBFbmdpbmVFbnRyeVBvaW50ID0gKCkgPT4gdm9pZDtcblxuaW50ZXJmYWNlIFJlbmRlckZvcm1TZXR0aW5ncyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZW5naW5lVmVyc2lvbj86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2VzVmVyc2lvbjogc3RyaW5nO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgcmVuZGVyRm9ybTogdW5kZWZpbmVkIHwgRW5naW5lRW50cnlQb2ludDtcbiAgICB0ZW1wbGF0ZXNBcGk/OiBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQ7XG59XG5cbnR5cGUgU3RhcnRGb3JtRnVuYyA9IChwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lciwgZXh0ZW5kZWRTZXR0aW5nczogUmVuZGVyRm9ybVNldHRpbmdzKSA9PiBQcm9taXNlPElGb3JtPjtcblxuaW50ZXJmYWNlIENhbmR5R2xvYmFsSW5qZWN0ZWRWYXIge1xuICAgIHN0YXJ0OiAocGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsIG9wdGlvbnM6IFN0YXJ0Rm9ybU9wdGlvbnMsIGNhbGxiYWNrPzogRXJyb3JGaXJzdENhbGxiYWNrPElQdWJsaWNGb3JtPikgPT4gdm9pZDtcbiAgICBrZWZvcm1zVXJsPzogc3RyaW5nO1xuICAgIHBhcnRpYWxSZW5kZXJpbmdGb3JJRTg6IGJvb2xlYW47XG4gICAgZW50cnlQb2ludDogeyBba2V5OiBzdHJpbmddOiBTdGFydEZvcm1GdW5jIH07XG4gICAgbG9hZEVycm9yPzogdW5rbm93bjtcbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBXaW5kb3cge1xuICAgICAgICBDRjogQ2FuZHlHbG9iYWxJbmplY3RlZFZhcjtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5hbWVzcGFjZVxuICAgIG5hbWVzcGFjZSBOb2RlSlMge1xuICAgICAgICBpbnRlcmZhY2UgR2xvYmFsIHtcbiAgICAgICAgICAgIENGOiBDYW5keUdsb2JhbEluamVjdGVkVmFyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5kZWNsYXJlIGNvbnN0IGdsb2JhbDogV2luZG93O1xuXG5mdW5jdGlvbiBkZWZhdWx0Q2FsbGJhY2soKTogdm9pZCB7XG4gICAgLyogZW1wdHkgKi9cbn1cblxuZnVuY3Rpb24gcGFyc2VCb29sKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBpZiAodmFsdWUgPT09IFwiZmFsc2VcIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIEJvb2xlYW4odmFsdWUpO1xufVxuXG5mdW5jdGlvbiB1cmwocmVsYXRpdmVVcmw6IHN0cmluZyA9IFwiXCIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2VVcmwgPSBnbG9iYWwuQ0Yua2Vmb3Jtc1VybCB8fCBcIlwiO1xuXG4gICAgcmV0dXJuIGAke2Jhc2VVcmx9LyR7cmVsYXRpdmVVcmx9YC5yZXBsYWNlKC8oW146XSlcXC97Mix9L2csIFwiJDEvXCIpO1xufVxuXG5mdW5jdGlvbiBidWlsZFVybChwYXRoOiBzdHJpbmcsIHBhcmFtczogeyBbcGFyYW1OYW1lOiBzdHJpbmddOiB1bmRlZmluZWQgfCBzdHJpbmcgfSk6IHN0cmluZyB7XG4gICAgaWYgKHBhcmFtcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICBjb25zdCBxdWVyeVBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcGFyYW1OYW1lIG9mIE9iamVjdC5rZXlzKHBhcmFtcykpIHtcbiAgICAgICAgY29uc3QgcGFyYW1WYWx1ZSA9IHBhcmFtc1twYXJhbU5hbWVdO1xuICAgICAgICBpZiAocGFyYW1WYWx1ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFydHMucHVzaChgJHtwYXJhbU5hbWV9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtVmFsdWUpfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeVBhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGggKyBcIj9cIiArIHF1ZXJ5UGFydHMuam9pbihcIiZcIik7XG59XG5cbmZ1bmN0aW9uIGlzQWxsb3dlZChkb21haW5zOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXig/OiR7ZG9tYWlucy5yZXBsYWNlKC9cXC4vZywgXCJcXFxcLlwiKS5yZXBsYWNlKC9cXCovZywgXCJbYS16MC05LS5dK1wiKX0pJGApLnRlc3QoXG4gICAgICAgIGdsb2JhbC5sb2NhdGlvbi5ob3N0XG4gICAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyYW1ldGVyQnlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKGdsb2JhbC5sb2NhdGlvbi5zZWFyY2hcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5yZXBsYWNlKC9eKFxcP3wjfCYpLywgXCJcIilcbiAgICAgICAgICAgIC5zcGxpdChcIiZcIilcbiAgICAgICAgICAgIC5tYXAocGFyYW0gPT4gcGFyYW0ucmVwbGFjZSgvXFwrL2csIFwiIFwiKS5zcGxpdChcIj1cIikubWFwKGRlY29kZVVSSUNvbXBvbmVudCkpXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dHJpcGxlLWVxdWFsc1xuICAgICAgICAgICAgLmZpbmQoKFtrZXldKSA9PiBrZXkgPT0gbmFtZSkgfHwgW10pWzFdXG4gICAgKTtcbn1cblxudHlwZSBUYXNrID0gKGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCkgPT4gdm9pZDtcblxuZnVuY3Rpb24gcnVuUGFyYWxsZWwodGFza3M6IFRhc2tbXSwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgbGV0IGNvbXBsZXRlZCA9IDA7XG5cbiAgICB0YXNrcy5mb3JFYWNoKHRhc2sgPT4ge1xuICAgICAgICB0YXNrKGVycm9yID0+IHtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRhc2tzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wbGV0ZWQgKz0gMTtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5pbnRlcmZhY2UgU3RhcnRGb3JtU2V0dGluZyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZW5naW5lVmVyc2lvbj86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHJlc291cmNlc1ZlcnNpb246IHN0cmluZztcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VuZ2luZVZlcnNpb25HcmVhdGVyVGhhbk9yRXF1YWwobGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbGVmdE51bWJlcnMgPSBsZWZ0XG4gICAgICAgICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICAuc2xpY2UoMCwgMylcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXJzZUludCh4LCAxMCkpO1xuICAgICAgICBjb25zdCByaWdodE51bWJlcnMgPSByaWdodFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLnNsaWNlKDAsIDMpXG4gICAgICAgICAgICAubWFwKHggPT4gcGFyc2VJbnQoeCwgMTApKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChsZWZ0TnVtYmVyc1swXSA/PyAwKSA+IChyaWdodE51bWJlcnNbMF0gPz8gMCkgfHxcbiAgICAgICAgICAgICgobGVmdE51bWJlcnNbMF0gPz8gMCkgPT09IChyaWdodE51bWJlcnNbMF0gPz8gMCkgJiZcbiAgICAgICAgICAgICAgICAoKGxlZnROdW1iZXJzWzFdID8/IDApID4gKHJpZ2h0TnVtYmVyc1sxXSA/PyAwKSB8fFxuICAgICAgICAgICAgICAgICAgICAoKGxlZnROdW1iZXJzWzFdID8/IDApID09PSAocmlnaHROdW1iZXJzWzFdID8/IDApICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAobGVmdE51bWJlcnNbMl0gPz8gMCkgPj0gKHJpZ2h0TnVtYmVyc1syXSA/PyAwKSkpKVxuICAgICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsb2FkRm9ybShzZXR0aW5nczogU3RhcnRGb3JtU2V0dGluZywgY2FsbGJhY2s6IChlcnJvcj86IG51bGwgfCB1bmRlZmluZWQgfCBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHsgZ2Z2LCBlbmdpbmVWZXJzaW9uLCByZXNvdXJjZXNWZXJzaW9uIH0gPSBzZXR0aW5ncztcblxuICAgIGlmIChnbG9iYWwuQ0YuZW50cnlQb2ludFtnZnZdKSB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXNOZWVkRW5naW5lID0gZW5naW5lVmVyc2lvbiAmJiAhZ2xvYmFsW2VuZ2luZVZlcnNpb25dO1xuICAgIGNvbnN0IG5vU3R5bGVzRm9yR2Z2ID0gZmFsc2U7IC8vIGVuZ2luZVZlcnNpb24gIT0gdW5kZWZpbmVkICYmIChpc0VuZ2luZVZlcnNpb25HcmVhdGVyVGhhbk9yRXF1YWwoZW5naW5lVmVyc2lvbiwgXCI0LjIxNC4wXCIpIHx8IGVuZ2luZVZlcnNpb24gPT09IFwibG9jYWxcIik7XG4gICAgY29uc3QgbmVlZExvYWRTdHlsZXNGb3JHZnYgPSAhbm9TdHlsZXNGb3JHZnY7XG4gICAgY29uc3QgbWluID0gZ2V0UGFyYW1ldGVyQnlOYW1lKFwiZGVidWdcIikgPT09IFwidHJ1ZVwiID8gXCJcIiA6IFwiLm1pblwiO1xuICAgIGNvbnN0IHRhc2tzOiBUYXNrW10gPSBbXTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHsgdjogcmVzb3VyY2VzVmVyc2lvbiwgcmVzb3VyY2Vab25lOiBzZXR0aW5ncy5yZXNvdXJjZVpvbmUgfTtcbiAgICBpZiAobmVlZExvYWRTdHlsZXNGb3JHZnYpIHtcbiAgICAgICAgdGFza3MucHVzaChjYiA9PlxuICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zdHlsZVNoZWV0KHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zdHlsZXMvJHtnZnZ9JHttaW59LmNzc2AsIHBhcmFtcykpLCB0cnVlLCBjYilcbiAgICAgICAgKTtcbiAgICB9XG4gICAgdGFza3MucHVzaChjYiA9PiBMb2FkSW50b0RvY3VtZW50LnNjcmlwdCh1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy8ke2dmdn0ke21pbn0uanNgLCBwYXJhbXMpKSwgY2IpKTtcblxuICAgIGlmIChpc05lZWRFbmdpbmUpIHtcbiAgICAgICAgdGFza3MucHVzaChcbiAgICAgICAgICAgIGNiID0+XG4gICAgICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zdHlsZVNoZWV0KFxuICAgICAgICAgICAgICAgICAgICB1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc3R5bGVzL2NhbmR5XyR7ZW5naW5lVmVyc2lvbn0ke21pbn0uY3NzYCwgcGFyYW1zKSksXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBjYiA9PlxuICAgICAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc2NyaXB0KFxuICAgICAgICAgICAgICAgICAgICB1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy9jYW5keV8ke2VuZ2luZVZlcnNpb259JHttaW59LmpzYCwgcGFyYW1zKSksXG4gICAgICAgICAgICAgICAgICAgIGNiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJ1blBhcmFsbGVsKHRhc2tzLCBjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckZvcm0oXG4gICAgcGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsXG4gICAgZXh0ZW5kZWRTZXR0aW5nczogUmVuZGVyRm9ybVNldHRpbmdzLFxuICAgIGNhbGxiYWNrOiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+XG4pOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtRW50cnlQb2ludCA9XG4gICAgICAgIGdsb2JhbC5DRi5lbnRyeVBvaW50W2V4dGVuZGVkU2V0dGluZ3MuZ2Z2XSA/PyByZWplY3QoYEZvcm0gZW50cnkgcG9pbnQgJHtleHRlbmRlZFNldHRpbmdzLmdmdn0gbm90IGZvdW5kLmApO1xuICAgIGZvcm1FbnRyeVBvaW50KHBhZ2VDb250ZW50LCBleHRlbmRlZFNldHRpbmdzKVxuICAgICAgICAudGhlbihmb3JtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHB1YmxpY0Zvcm0gPSBmb3JtLnB1YmxpY0Zvcm0gfHwgY3JlYXRlTGVnYWN5UHVibGljRm9ybShmb3JtKTtcblxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcHVibGljRm9ybSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChjYWxsYmFjayk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhcnRGb3JtT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8QVVPT3B0aW9ucz4ge1xuICAgIG5zOiBzdHJpbmc7XG4gICAgZHJhZnRJZDogc3RyaW5nO1xuICAgIGdmdj86IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgdGVtcGxhdGVzQXBpPzogSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50O1xuICAgIGZlZWRiYWNrRW5hYmxlZD86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsb3NlQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xlYW5Gb3JtPzogYm9vbGVhbjtcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgYXV0aGVudGljYXRpb24/OiBcImJyb3dzZXItY3JlZGVudGlhbHMtaW5jbHVkZVwiIHwgeyBhdXRoU2lkOiBzdHJpbmcgfTtcbiAgICBmZXRjaD86IHR5cGVvZiBmZXRjaDtcbiAgICBtb2RlbD86IHsgW3BhdGg6IHN0cmluZ106IHVua25vd24gfTtcbiAgICBldmVudEVtaXR0ZXI/OiBMYXlvdXRFdmVudHNTdGF0aWM7XG4gICAgZW1wbG95ZXJJZD86IHN0cmluZztcbn1cblxuZnVuY3Rpb24gZ2V0RW5naW5lRW50cnlQb2ludChlbmdpbmVWZXJzaW9uOiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nKTogdW5kZWZpbmVkIHwgRW5naW5lRW50cnlQb2ludCB7XG4gICAgaWYgKGVuZ2luZVZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgIHJldHVybiBnbG9iYWxbZW5naW5lVmVyc2lvbl0gJiYgZ2xvYmFsW2VuZ2luZVZlcnNpb25dLmRlZmF1bHQ7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0KFxuICAgIHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLFxuICAgIG9wdGlvbnM6IFN0YXJ0Rm9ybU9wdGlvbnMsXG4gICAgY2FsbGJhY2s6IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT4gPSBkZWZhdWx0Q2FsbGJhY2tcbik6IHZvaWQge1xuICAgIGxldCBlcnJvciA9IG51bGw7XG4gICAgY29uc3QgeyBucywgZHJhZnRJZCB9ID0gb3B0aW9ucztcblxuICAgIGlmICghaXNBbGxvd2VkKGNsaWVudFNldHRpbmdzLmtvbnR1ckRvbWFpbnMpKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwiZG9tYWluLnVudHJ1c3RlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFjbGllbnRTZXR0aW5ncy5hdXRob3JpemVkKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwidXNlci51bmF1dGhlbnRpY2F0ZWRcIik7XG4gICAgfSBlbHNlIGlmICghZHJhZnRJZCkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcIm9wdGlvbnMuZHJhZnRJZCBpcyByZXF1aXJlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFucykge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcIm9wdGlvbnMubnMgaXMgcmVxdWlyZWRcIik7XG4gICAgfVxuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlWm9uZSA9IG9wdGlvbnMucmVzb3VyY2Vab25lID8/IGdldFBhcmFtZXRlckJ5TmFtZShcInJlc291cmNlWm9uZVwiKTtcbiAgICBjb25zdCBjbGllbnREcmFmdFVybCA9IGJ1aWxkVXJsKHVybChnZXRDbGllbnREcmFmdEluZm9VcmwoeyBuczogbnMsIGRyYWZ0SWQ6IGRyYWZ0SWQgfSkpLCB7XG4gICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0geyBtZXRob2Q6IFwiR0VUXCIgfTtcbiAgICBpZiAob3B0aW9ucy5hdXRoZW50aWNhdGlvbiA9PSB1bmRlZmluZWQgfHwgb3B0aW9ucy5hdXRoZW50aWNhdGlvbiA9PT0gXCJicm93c2VyLWNyZWRlbnRpYWxzLWluY2x1ZGVcIikge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwiaW5jbHVkZVwiO1xuICAgIH0gZWxzZSBpZiAoXCJhdXRoU2lkXCIgaW4gb3B0aW9ucy5hdXRoZW50aWNhdGlvbiAmJiBvcHRpb25zLmF1dGhlbnRpY2F0aW9uLmF1dGhTaWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJvbWl0XCI7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmhlYWRlcnMgPSByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzID8/IHt9O1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBBVVRILlNJRCAke29wdGlvbnMuYXV0aGVudGljYXRpb24uYXV0aFNpZH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJvbWl0XCI7XG4gICAgfVxuICAgIGNvbnN0IGZldGNoSW1wbCA9IG9wdGlvbnMuZmV0Y2ggPz8gZmV0Y2g7XG5cbiAgICBmZXRjaEltcGwoY2xpZW50RHJhZnRVcmwsIHJlcXVlc3RPcHRpb25zKVxuICAgICAgICAudGhlbih4ID0+IHguanNvbigpKVxuICAgICAgICAudGhlbigoY2xpZW50RHJhZnRJbmZvOiBDbGllbnREcmFmdEluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2Z2ID0gY2xpZW50RHJhZnRJbmZvLmdmdjtcbiAgICAgICAgICAgIGNvbnN0IGVuZ2luZVZlcnNpb24gPSBjbGllbnREcmFmdEluZm8uZW5naW5lVmVyc2lvbjtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuZGVkU2V0dGluZ3MgPSB7XG4gICAgICAgICAgICAgICAgYXV0aG9yaXplZDogY2xpZW50U2V0dGluZ3MuYXV0aG9yaXplZCxcbiAgICAgICAgICAgICAgICBjYXVsZHJvbkFwaVVybDogY2xpZW50U2V0dGluZ3MuY2F1bGRyb25BcGlVcmwsXG4gICAgICAgICAgICAgICAgaXNUZXN0U2VydmVyOiBjbGllbnRTZXR0aW5ncy5pc1Rlc3RTZXJ2ZXIsXG4gICAgICAgICAgICAgICAgcmVuZGVyQ2FjaGluZ0ZvcklFODogY2xpZW50U2V0dGluZ3MucmVuZGVyQ2FjaGluZ0ZvcklFOCxcbiAgICAgICAgICAgICAgICBub3JtYWxpemF0aW9uT25TZXJ2ZXI6IGNsaWVudFNldHRpbmdzLm5vcm1hbGl6YXRpb25PblNlcnZlcixcbiAgICAgICAgICAgICAgICBub3JtYXRpdmVVcmw6IGNsaWVudFNldHRpbmdzLm5vcm1hdGl2ZVVybCxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXNWZXJzaW9uOiBjbGllbnRTZXR0aW5ncy5yZXNvdXJjZXNWZXJzaW9uLFxuICAgICAgICAgICAgICAgIGtvbnR1ckRvbWFpbnM6IGNsaWVudFNldHRpbmdzLmtvbnR1ckRvbWFpbnMsXG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAuLi5jbGllbnREcmFmdEluZm8sXG4gICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvbjogZW5naW5lVmVyc2lvbixcbiAgICAgICAgICAgICAgICBmZWVkYmFja0VuYWJsZWQ6IG9wdGlvbnMuZmVlZGJhY2tFbmFibGVkID8/IGNsaWVudERyYWZ0SW5mby5mZWVkYmFja0VuYWJsZWQsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsZWFuRm9ybTogb3B0aW9ucy5pc0Rpc2FibGVkQ2xlYW5Gb3JtID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbG9zZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VCdXR0b24gPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbG9hZEZvcm0oXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBnZnY6IGV4dGVuZGVkU2V0dGluZ3MuZ2Z2LFxuICAgICAgICAgICAgICAgICAgICBlbmdpbmVWZXJzaW9uOiBleHRlbmRlZFNldHRpbmdzLmVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogZXh0ZW5kZWRTZXR0aW5ncy5yZXNvdXJjZVpvbmUsXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlc1ZlcnNpb246IGV4dGVuZGVkU2V0dGluZ3MucmVzb3VyY2VzVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgdGhlbWU6IGV4dGVuZGVkU2V0dGluZ3MudGhlbWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2FkRXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9hZEVycm9yIHx8ICFnbG9iYWwuQ0YuZW50cnlQb2ludFtnZnZdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoYGR5bmFtaWMgbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIGZvciBnZnYgJHtnZnZ9YCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbmRlciA9IGdldEVuZ2luZUVudHJ5UG9pbnQoZW5naW5lVmVyc2lvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmV4dGVuZGVkU2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVzQXBpOiBvcHRpb25zLnRlbXBsYXRlc0FwaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGb3JtOiByZW5kZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goY2FsbGJhY2spO1xufVxuXG5jb25zdCBDYW5keUNsaWVudEV4cG9ydHM6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXIgPSB7XG4gICAgc3RhcnQ6IHN0YXJ0LFxuICAgIGVudHJ5UG9pbnQ6IHt9LFxuICAgIHBhcnRpYWxSZW5kZXJpbmdGb3JJRTg6IHBhcnNlQm9vbChcIntwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4fVwiKSxcbiAgICBrZWZvcm1zVXJsOiBcIntrZWZvcm1zVXJsfVwiLFxufTtcblxuZ2xvYmFsLkNGID0gQ2FuZHlDbGllbnRFeHBvcnRzO1xuXG5leHBvcnQgeyBDYW5keUNsaWVudEV4cG9ydHMgfTtcbiIsImZ1bmN0aW9uIHBhcnNlQm9vbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBCb29sZWFuKHZhbHVlKTtcbn1cblxuZXhwb3J0IGNvbnN0IGNsaWVudFNldHRpbmdzID0ge1xuICAgIGF1dGhvcml6ZWQ6IHBhcnNlQm9vbChcInthdXRob3JpemVkfVwiKSxcbiAgICBjYXVsZHJvbkFwaVVybDogXCJ7Y2F1bGRyb25BcGlVcmx9XCIsXG4gICAgaXNUZXN0U2VydmVyOiBwYXJzZUJvb2woXCJ7aXNUZXN0U2VydmVyfVwiKSxcbiAgICByZW5kZXJDYWNoaW5nRm9ySUU4OiBwYXJzZUJvb2woXCJ7cmVuZGVyQ2FjaGluZ0ZvcklFOH1cIiksXG4gICAgbm9ybWFsaXphdGlvbk9uU2VydmVyOiBwYXJzZUJvb2woXCJ7bm9ybWFsaXphdGlvbk9uU2VydmVyfVwiKSxcbiAgICBub3JtYXRpdmVVcmw6IFwie25vcm1hdGl2ZVVybH1cIixcbiAgICByZXNvdXJjZXNWZXJzaW9uOiBcIntyZXNvdXJjZXNWZXJzaW9ufVwiLFxuICAgIGtvbnR1ckRvbWFpbnM6IFwie2tvbnR1ckRvbWFpbnN9XCIsXG59O1xuIiwiaW1wb3J0IHsgRW1wbG95ZWUgfSBmcm9tIFwiQHNrYmtvbnR1ci9zdGFmZi1zZWxlY3Rvci13aWRnZXRcIjtcbmltcG9ydCB7XG4gICAgRW1wbG95ZWVMaXN0LFxuICAgIEdldEVtcGxveWVlTGlzdFJlcXVlc3QsXG4gICAgR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QsXG4gICAgV29ya2luZ0V2ZW50TGlzdCxcbn0gZnJvbSBcIkBza2Jrb250dXIvc3RhZmYtY29tbW9uL3NyYy9DbGllbnQvVHlwZXNcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJFbmdpbmUvc3JjL0VuZ2luZS9Gb3JtL01vZGVsQ2hhbmdlRXZlbnRMaXN0ZW5lclwiO1xuXG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9FcnJvcnNcIjtcbmltcG9ydCB0eXBlIHsgU3RlcCB9IGZyb20gXCIuLi8uLi8uLi9Db250cm9scy9Gb3JtUGFydHMvVG91ci9Ub3VyVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgU2VydmVyRXJyb3JMb2cgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0Vycm9yTG9nL1NlcnZlckVycm9yTG9nXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdQYXRoLCBNb2RlbFZhbHVlIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL0NvcmVUeXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBFeHRlcm5hbEhvb2tGdW5jdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9FdmVudE1hbmFnZW1lbnQvRXh0ZXJuYWxFdmVudHMvRXh0ZXJuYWxIb29rRnVuY3Rpb25cIjtcbmltcG9ydCB0eXBlIHsgUmVhZG9ubHlNb2RlbENodW5rIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL01vZGVsU3RvcmluZy9Nb2RlbENodW5rXCI7XG5pbXBvcnQgdHlwZSB7IFBpY2tsaXN0UXVlcnlSZXNwb25zZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9QaWNrbGlzdHMvUGlja2xpc3RUeXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBJRm9ybSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvRm9ybS9JRm9ybVwiO1xuaW1wb3J0IHR5cGUgeyBJUHVibGljRm9ybSB9IGZyb20gXCIuLi8uLi9QdWJsaWNGb3JtL0lQdWJsaWNGb3JtXCI7XG5pbXBvcnQgeyBNb2RlbEV2ZW50c0xpc3RlbmVyIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL0V2ZW50TWFuYWdlbWVudC9Nb2RlbEV2ZW50cy9Nb2RlbEV2ZW50XCI7XG5pbXBvcnQgeyBEaWdlc3RRdWVyeUZpbHRlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvRGlnZXN0QXBpQ2xpZW50L1R5cGVzL0RpZ2VzdFF1ZXJ5RmlsdGVyXCI7XG5pbXBvcnQgeyBJVXBkYXRlRm9ybU1vZGVsQWNjZXNzb3IgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1Nb2RlbEFjY2Vzc29yXCI7XG5pbXBvcnQgeyBNb2RhbE9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvTW9kYWxNYW5hZ2VyL0lNb2RhbFN0YXRlXCI7XG5pbXBvcnQgeyBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvTW9kZWxQYXRoXCI7XG5pbXBvcnQgeyBDYWxsSW5pdFNlY3Rpb25MaWdodGJveFByb3BzLCBJbml0U2VjdGlvbkZvcm1MaWdodGJveE9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vUHVibGljRm9ybS9Jbml0U2VjdGlvbkxpZ2h0Ym94XCI7XG5pbXBvcnQgeyBNYXNzQWN0aW9uUGFyYW1ldGVycyB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvTWFzc0FjdGlvbnMvTWFzc0FjdGlvblBhcmFtZXRlcnNcIjtcbmltcG9ydCB7IFByaW50VHlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvUHJpbnQvUHJpbnRUeXBlXCI7XG5pbXBvcnQgeyBGaWFzQ2xpZW50SW5pdE9wdGlvbnMsIEZpYXNBcGkgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvVmFsdWVFZGl0b3JzL0ZpYXMvRmlhc0lucHV0L0ZpYXNBcGlcIjtcbmltcG9ydCB7IEluc3RhbmNlc0RlbGV0aW5nUnVsZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvSW5zdGFuY2VzRGVsZXRpbmcvSW5zdGFuY2VzRGVsZXRpbmdSdWxlXCI7XG5cbmltcG9ydCB7IElMZWdhY3lGb3JtIH0gZnJvbSBcIi4vSUxlZ2FjeUZvcm1cIjtcblxuZXhwb3J0IHR5cGUgTW9kZWxFdmVudFBhdGggPVxuICAgIHwgW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgc3RyaW5nLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiLCBzdHJpbmcsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwicmVtb3ZlXCIsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCJdXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiXTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHBhdGg/OiBzdHJpbmcsIGZpZWxkTmFtZT86IHN0cmluZyk6IE1vZGVsRXZlbnRQYXRoIHtcbiAgICBpZiAoZmllbGROYW1lICE9IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAocGF0aCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhdGggbXVzdCBiZSBkZWZpbmVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBwYXRoLCBmaWVsZE5hbWVdO1xuICAgIH1cbiAgICBpZiAocGF0aCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHBhdGhdO1xuICAgIH1cbiAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIl07XG59XG5cbmZ1bmN0aW9uIG1hcENodW5rVmFsdWVzKGNodW5rOiBSZWFkb25seU1vZGVsQ2h1bmspOiBBcnJheTx7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY2h1bmspXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBjaHVua1twYXRoXSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2h1bmtbcGF0aF0sIFwidmFsdWVcIikpXG4gICAgICAgIC5tYXAocGF0aCA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBjaHVua1twYXRoXTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgW3BhdGhdOiByZXN1bHQudmFsdWUgfTtcbiAgICAgICAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZHVjZUNodW5rVmFsdWVzKGNodW5rczogQXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9Pik6IHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfSB7XG4gICAgcmV0dXJuIGNodW5rcy5yZWR1Y2UoXG4gICAgICAgIChyZXN1bHQsIGNodW5rKSA9PiAoe1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgLi4uY2h1bmssXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICk7XG59XG5cbmNsYXNzIExlZ2FjeVB1YmxpY0Zvcm0gaW1wbGVtZW50cyBJUHVibGljRm9ybSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtOiBJTGVnYWN5Rm9ybTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihmb3JtOiBJTGVnYWN5Rm9ybSkge1xuICAgICAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIH1cblxuICAgIHB1YmxpYyBiYXRjaFVwZGF0ZSh1cGRhdGVQcm9jOiAodXBkYXRlQWNjZXNzb3I6IElVcGRhdGVGb3JtTW9kZWxBY2Nlc3NvcikgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcnVuQ2hlY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRFcnJvckxvZyhlcnJvckxvZzogUGFydGlhbDxTZXJ2ZXJFcnJvckxvZz4pOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHZhbGlkYXRlQ2hpbGRyZW5CeVBhdGgocGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBfX0lOVEVSTkFMX19pbXBvcnRGcm9tRW1wbG95ZWVTZXJ2aWNlKCk6IFByb21pc2U8RW1wbG95ZWVbXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW1wb3J0RW1wbG95ZWVzKGVtcGxveWVlczogRW1wbG95ZWVbXSwgb3B0aW9ucz86IHsgc2NlbmFyaW8/OiBzdHJpbmcgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJpbnQocHJpbnRUeXBlOiBQcmludFR5cGUsIGJvZHk/OiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG4gICAgcHVibGljIHJ1bk1hc3NBY3Rpb24oYWN0aW9uSWQ6IHN0cmluZywgcGFyYW1ldGVycz86IE1hc3NBY3Rpb25QYXJhbWV0ZXJzKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRCeUdJZChnSWQ6IHN0cmluZywgZmlsdGVyPzogRGlnZXN0UXVlcnlGaWx0ZXIpOiBQcm9taXNlPFBpY2tsaXN0UXVlcnlSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLnBpY2tsaXN0c1Byb3ZpZGVyLmdldERpZ2VzdEFwaVBpY2tsaXN0KGdJZCkucXVlcnkoZmlsdGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb24oZXZlbnROYW1lOiBzdHJpbmcsIGxpc3RlbmVyOiBFeHRlcm5hbEhvb2tGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9uKFtcImZvcm1cIiwgZXZlbnROYW1lXSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvZmYoZXZlbnROYW1lOiBzdHJpbmcsIGxpc3RlbmVyOiBFeHRlcm5hbEhvb2tGdW5jdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9mZihbXCJmb3JtXCIsIGV2ZW50TmFtZV0sIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Nb2RlbENoYW5nZShwYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSwgbGlzdGVuZXI6IHVua25vd24pOiBTdWJzY3JpcHRpb24ge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICB0aHJvdyBFcnJvcihcImZvcm0ub25Nb2RlbENoYW5nZSgpIGlzIG5vdCBzdXBwb3J0ZWQgeWV0XCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzYXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNoYW5nZVNldC5zZW5kKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmZvcm0uY2hhbmdlU2V0LnN0b3BBdXRvc2VuZCgpO1xuICAgICAgICBpZiAodGhpcy5mb3JtLnVubW91bnQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS51bm1vdW50KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNoYW5nZVNldC5zZW5kKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRvdXJTdGVwcygpOiBTdGVwW10ge1xuICAgICAgICAvLyBGb3Igb2xkIGtld2ViXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdmFsaWRhdGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290KSk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmUg0K3RgtC+INCyINGB0YLQsNGA0YvRhSDQtNCy0LjQttC60LDRhSDRgtGD0YIg0YLQsNC60L7QuSDQstGL0LfQvtCyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLnZhbGlkYXRvci52YWxpZGF0ZUFsbChrZXlzKTtcbiAgICB9XG4gICAgcHVibGljIGdldEFkZGl0aW9uYWxFbXBsb3llZUluZm8oZmlsdGVyczogR2V0RW1wbG95ZWVMaXN0UmVxdWVzdCk6IFByb21pc2U8RW1wbG95ZWVMaXN0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0V29ya2luZ0V2ZW50c0ZvckVtcGxveWVlKGZpbHRlcnM6IEdldFdvcmtpbmdFdmVudExpc3RSZXF1ZXN0KTogUHJvbWlzZTxXb3JraW5nRXZlbnRMaXN0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBlcnJvckNvdW50ID0gdGhpcy5mb3JtLm1vZGVsLmdldCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIik7XG4gICAgICAgIHJldHVybiBlcnJvckNvdW50ICE9IHVuZGVmaW5lZCAmJiBlcnJvckNvdW50ID4gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25FcnJvcnNDb3VudENoYW5nZWQobGlzdGVuZXI6IE1vZGVsRXZlbnRzTGlzdGVuZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vbihtb2RlbENoYW5nZUV2ZW50UGF0aCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIiksIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2ZmRXJyb3JzQ291bnRDaGFuZ2VkKGxpc3RlbmVyOiBNb2RlbEV2ZW50c0xpc3RlbmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub2ZmKG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQocGF0aE9yTW9kZWxDaHVuazogeyBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH0pOiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBwdWJsaWMgc2V0KHBhdGhPck1vZGVsQ2h1bms6IHN0cmluZywgdmFsdWU6IE1vZGVsVmFsdWUpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBwdWJsaWMgc2V0KFxuICAgICAgICBwYXRoT3JNb2RlbENodW5rOiBzdHJpbmcgfCB7IFtwYXRoOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSxcbiAgICAgICAgdmFsdWU/OiBNb2RlbFZhbHVlXG4gICAgKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBwYXRoT3JNb2RlbENodW5rICE9PSBudWxsICYmXG4gICAgICAgICAgICB0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayAhPT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgdHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICFBcnJheS5pc0FycmF5KHBhdGhPck1vZGVsQ2h1bmspXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgaW5uZXJDaHVuayA9IE9iamVjdC5rZXlzKHBhdGhPck1vZGVsQ2h1bmspLnJlZHVjZTxSZWFkb25seU1vZGVsQ2h1bms+KFxuICAgICAgICAgICAgICAgIChyZXN1bHQsIHBhdGgpID0+ICh7IFtwYXRoXTogeyB2YWx1ZTogcGF0aE9yTW9kZWxDaHVua1twYXRoXSB9LCAuLi5yZXN1bHQgfSksXG4gICAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZm9ybS5tb2RlbC5maWxsKGlubmVyQ2h1bmspO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3JNb2RlbENodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ubW9kZWwuc2V0KHBhdGhPck1vZGVsQ2h1bmssIFwidmFsdWVcIiwgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybS5zZXQoKSBwYXJhbWV0ZXIgc2hvdWxkIGJlIHN0cmluZyBwYXRoIG9yIG9iamVjdCB3aXRoIHBhdGgtdmFsdWUgcGFpcnNcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldChwYXRoT3JBcnJheTogc3RyaW5nIHwgc3RyaW5nW10pOiB7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXRoT3JBcnJheSkpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhcbiAgICAgICAgICAgICAgICBwYXRoT3JBcnJheVxuICAgICAgICAgICAgICAgICAgICAubWFwKHBhdGggPT4gbWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHBhdGgpKSlcbiAgICAgICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgICAgICAgICAgICAgICAgICAucmVkdWNlPEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4+KChyZXN1bHQsIGFycmF5KSA9PiByZXN1bHQuY29uY2F0KGFycmF5KSwgW10pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3JBcnJheSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayhwYXRoT3JBcnJheSkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXRoT3JBcnJheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMobWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCkpKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtLmdldCgpIHBhcmFtZXRlciBzaG91bGQgYmUgc3RyaW5nIHBhdGggb3IgYXJyYXkgb2YgcGF0aHNcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlKHBhdGg6IHN0cmluZyk6IE1vZGVsVmFsdWUge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5tb2RlbC5nZXQocGF0aCwgXCJ2YWx1ZVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weVN1YnRyZWUoXG4gICAgICAgIHNvdXJjZUJpbmRpbmdQYXRoOiBCaW5kaW5nUGF0aCB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIHRhcmdldEJpbmRpbmdQYXRoOiBCaW5kaW5nUGF0aCB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIGRvTm90Q29weVBhdGhzPzogc3RyaW5nW11cbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkSW5zdGFuY2UocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2hpbGRyZW4ocGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1dWlkR2VuZXJhdGUoKTogc3RyaW5nIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd01vZGFsKG9wdGlvbnM6IE1vZGFsT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRTZWN0aW9uKG9wdGlvbnM6IEluaXRTZWN0aW9uRm9ybUxpZ2h0Ym94T3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYWxsSW5pdFNlY3Rpb24ob3B0aW9uczogQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVGaWFzQXBpQ2xpZW50KG9wdGlvbnM6IEZpYXNDbGllbnRJbml0T3B0aW9ucyk6IEZpYXNBcGkge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuRW1wbG95ZWVFZGl0b3IoZW1wbG95ZWVJZDogc3RyaW5nKSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUluc3RhbmNlKHBhdGg6IHN0cmluZywgaW5zdGFuY2U6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZXMocGF0aDogc3RyaW5nLCBpbnN0YW5jZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvY3VzT25Db250cm9sSWZFeGlzdChwYXRoOiBCaW5kaW5nUGF0aCk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBbGxDaGVja2JveGVzRm9yMTEzMTAzKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBdXRvRmllbGRzVG9BdXRvVmFsdWUocGF0aFByZWZpeGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGVuc3VyZUluc3RhbmNlRnVsbHlMb2FkZWQoXG4gICAgICAgIGJpbmRpbmdQYXRoOiBzdHJpbmcgfCBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoLFxuICAgICAgICAuLi5pbnN0YW5jZXM6IHN0cmluZ1tdXG4gICAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjdXN0b21Ob3JtYWxpemUobm9ybWFsaXplcklkOiBzdHJpbmcsIHBhdGhQcmVmaXhlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG4gICAgcHVibGljIHJlbW92ZUluc3RhbmNlc0J5UnVsZXMocnVsZXM6IEluc3RhbmNlc0RlbGV0aW5nUnVsZVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGVnYWN5UHVibGljRm9ybShmb3JtOiBJRm9ybSk6IElQdWJsaWNGb3JtIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIG5ldyBMZWdhY3lQdWJsaWNGb3JtKGZvcm0gYXMgSUxlZ2FjeUZvcm0pO1xufVxuIiwiLy8gdHNsaW50OmRpc2FibGUgbm8tdW5zYWZlLWFueVxuZXhwb3J0IGNsYXNzIExvYWRJbnRvRG9jdW1lbnQge1xuICAgIHB1YmxpYyBzdGF0aWMgc2NyaXB0KHVyaTogc3RyaW5nLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHNjcmlwdExvYWRlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29uc3Qgc2NyaXB0OiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuXG4gICAgICAgIGZ1bmN0aW9uIGxvYWRIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICAgICAgaWYgKHNjcmlwdExvYWRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFzY3JpcHQucmVhZHlTdGF0ZSB8fCBzY3JpcHQucmVhZHlTdGF0ZSA9PT0gXCJsb2FkZWRcIiB8fCBzY3JpcHQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiKSB7XG4gICAgICAgICAgICAgICAgc2NyaXB0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZyB0aGUgdXNlciBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiB0aGUgc2NyaXB0IGNvbXBsZXRlcyB0byBsb2FkLlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBUaGlzIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGluIElFIGV2ZW4gdXBvbiBlcnJvci4gSW4gYW55XG4gICAgICAgIC8vIGNhc2UgaXQgaXMgdGhlIGNsaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIHZlcmlmeSB0aGF0IHRoZSBzY3JpcHQgcmFuXG4gICAgICAgIC8vIHN1Y2Nlc3NmdWxseS5cbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGxvYWRIYW5kbGVyO1xuICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gbG9hZEhhbmRsZXI7XG5cbiAgICAgICAgLy8gQWRkIGFuIGVycm9yIGNhbGxiYWNrLlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBOb3Qgc3VwcG9ydGVkIGluIElFLlxuICAgICAgICBzY3JpcHQub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChzY3JpcHQucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIHNjcmlwdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSBsb2FkaW5nIHNjcmlwdC5cIikpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIEFkZCB0aGUgc2NyaXB0IGVsZW1lbnQgdG8gdGhlIGRvY3VtZW50LlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBTYWZhcmkgbmV2ZXIgbG9hZHMgdGhlIHNjcmlwdCBpZiB3ZSBkb24ndCBzZXRcbiAgICAgICAgLy8gdGhlIHNyYyBhdHRyaWJ1dGUgYmVmb3JlIGFwcGVuZGluZy5cbiAgICAgICAgc2NyaXB0LnNyYyA9IHVyaTtcbiAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZShcImNyb3Nzb3JpZ2luXCIsIFwidXNlLWNyZWRlbnRpYWxzXCIpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzdHlsZVNoZWV0KHVyaTogc3RyaW5nLCBpZ25vcmVFcnJvcjogYm9vbGVhbiwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc29sdmUgPSAoKSA9PiBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgICBjb25zdCByZWplY3QgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSBsb2FkaW5nIHN0eWxlc2hlZXQuXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdID8/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO1xuXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwicmVsXCIsIFwic3R5bGVzaGVldFwiKTtcbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIFwidGV4dC9jc3NcIik7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgcmVzb2x2ZSk7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB1cmkpO1xuICAgIH1cbn1cbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdGxvYWRlZDogZmFsc2UsXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuXHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmhtZCA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRtb2R1bGUgPSBPYmplY3QuY3JlYXRlKG1vZHVsZSk7XG5cdGlmICghbW9kdWxlLmNoaWxkcmVuKSBtb2R1bGUuY2hpbGRyZW4gPSBbXTtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgJ2V4cG9ydHMnLCB7XG5cdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRzZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdFUyBNb2R1bGVzIG1heSBub3QgYXNzaWduIG1vZHVsZS5leHBvcnRzIG9yIGV4cG9ydHMuKiwgVXNlIEVTTSBleHBvcnQgc3ludGF4LCBpbnN0ZWFkOiAnICsgbW9kdWxlLmlkKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gbW9kdWxlO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gc3RhcnR1cFxuLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vLyBUaGlzIGVudHJ5IG1vZHVsZSBpcyByZWZlcmVuY2VkIGJ5IG90aGVyIG1vZHVsZXMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzMyk7XG4iXSwic291cmNlUm9vdCI6IiJ9
1642
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuIiwiaSIsImEiLCJlIiwiY29uY2F0IiwibnMiLCJkcmFmdElkIiwidCIsImQiLCJyIiwibSIsImhtZCIsIm8iLCJyZWFjdEhvdExvYWRlckdsb2JhbCIsImVudGVyTW9kdWxlIiwiZGVmYXVsdCIsInNpZ25hdHVyZSIsInJlZ2lzdGVyIiwibGVhdmVNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIl90eXBlb2YiLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJsZW5ndGgiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiTnVtYmVyIiwiX2luaGVyaXRzIiwiY3JlYXRlIiwidmFsdWUiLCJfc2V0UHJvdG90eXBlT2YiLCJfY3JlYXRlU3VwZXIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiX2dldFByb3RvdHlwZU9mIiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImFyZ3VtZW50cyIsImFwcGx5IiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJfd3JhcE5hdGl2ZVN1cGVyIiwiTWFwIiwiX2lzTmF0aXZlRnVuY3Rpb24iLCJoYXMiLCJnZXQiLCJzZXQiLCJfY29uc3RydWN0IiwiYmluZCIsInB1c2giLCJGdW5jdGlvbiIsInNoYW0iLCJQcm94eSIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwidG9TdHJpbmciLCJpbmRleE9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJnZXRQcm90b3R5cGVPZiIsIm5qIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsIl9fc2lnbmF0dXJlX18iLCJBcHBsaWNhdGlvbkVycm9yIiwiX0Vycm9yIiwiX3N1cGVyIiwibmFtZSIsIl9fcmVhY3RzdGFuZGluX19yZWdlbmVyYXRlQnlFdmFsIiwiY29kZSIsImV2YWwiLCJFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yIiwiX3N1cGVyMiIsIk5vdFN1cHBvcnRlZEVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IyIiwiX3N1cGVyMyIsIkludmFsaWRQcm9ncmFtU3RhdGVFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yMyIsIl9zdXBlcjQiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNCIsIl9zdXBlcjUiLCJUeXBpbmdFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNSIsIl9zdXBlcjYiLCJyZWFjdEhvdExvYWRlciIsInUiLCJzIiwibCIsImMiLCJmIiwiZDEiLCJtZXNzYWdlIiwidHJpbSIsInNsaWNlIiwiZ2xvYmFsVGhpcyIsInNlbGYiLCJCbG9iIiwiQXJyYXlCdWZmZXIiLCJpc1ZpZXciLCJ0ZXN0IiwidG9Mb3dlckNhc2UiLCJwIiwibmV4dCIsInNoaWZ0IiwiZG9uZSIsInkiLCJtYXAiLCJmb3JFYWNoIiwiYXBwZW5kIiwiQXJyYXkiLCJpc0FycmF5IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImJvZHlVc2VkIiwiUHJvbWlzZSIsInJlamVjdCIsImgiLCJvbmxvYWQiLCJyZXN1bHQiLCJvbmVycm9yIiwiZXJyb3IiLCJnIiwiRmlsZVJlYWRlciIsInJlYWRBc0FycmF5QnVmZmVyIiwiXyIsIlVpbnQ4QXJyYXkiLCJieXRlTGVuZ3RoIiwiYnVmZmVyIiwidiIsIl9pbml0Qm9keSIsIl9ib2R5SW5pdCIsIl9ib2R5VGV4dCIsImlzUHJvdG90eXBlT2YiLCJfYm9keUJsb2IiLCJGb3JtRGF0YSIsIl9ib2R5Rm9ybURhdGEiLCJVUkxTZWFyY2hQYXJhbXMiLCJEYXRhVmlldyIsIl9ib2R5QXJyYXlCdWZmZXIiLCJoZWFkZXJzIiwidHlwZSIsImJsb2IiLCJyZXNvbHZlIiwiYXJyYXlCdWZmZXIiLCJieXRlT2Zmc2V0IiwidGhlbiIsInRleHQiLCJyZWFkQXNUZXh0IiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsImZvcm1EYXRhIiwiRSIsImpzb24iLCJKU09OIiwicGFyc2UiLCJkZWxldGUiLCJoYXNPd25Qcm9wZXJ0eSIsImtleXMiLCJ2YWx1ZXMiLCJlbnRyaWVzIiwiYiIsInciLCJib2R5IiwidXJsIiwiY3JlZGVudGlhbHMiLCJtZXRob2QiLCJtb2RlIiwic2lnbmFsIiwidG9VcHBlckNhc2UiLCJyZWZlcnJlciIsImNhY2hlIiwicmVwbGFjZSIsIkRhdGUiLCJnZXRUaW1lIiwic3BsaXQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJDIiwic3RhdHVzIiwib2siLCJzdGF0dXNUZXh0IiwiY2xvbmUiLCJrIiwicmVkaXJlY3QiLCJSYW5nZUVycm9yIiwibG9jYXRpb24iLCJQIiwiRE9NRXhjZXB0aW9uIiwic3RhY2siLCJBIiwiYWJvcnRlZCIsIlhNTEh0dHBSZXF1ZXN0IiwiYWJvcnQiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJzdWJzdHIiLCJyZXNwb25zZVVSTCIsInJlc3BvbnNlIiwicmVzcG9uc2VUZXh0Iiwic2V0VGltZW91dCIsIm9udGltZW91dCIsIm9uYWJvcnQiLCJvcGVuIiwiaHJlZiIsIndpdGhDcmVkZW50aWFscyIsInJlc3BvbnNlVHlwZSIsInNldFJlcXVlc3RIZWFkZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZW5kIiwicG9seWZpbGwiLCJmZXRjaCIsIkhlYWRlcnMiLCJSZXF1ZXN0IiwiUmVzcG9uc2UiLCJPIiwiTCIsIlMiLCJCIiwiVCIsImoiLCJJIiwiRiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkgiLCJVIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJNIiwiRyIsIngiLCJEIiwiQ0YiLCJrZWZvcm1zVXJsIiwiUiIsImVuY29kZVVSSUNvbXBvbmVudCIsIk4iLCJSZWdFeHAiLCJob3N0IiwiViIsInNlYXJjaCIsImZpbmQiLCJyZXR1cm4iLCJmcm9tIiwicSIsIksiLCJnZnYiLCJlbmdpbmVWZXJzaW9uIiwicmVzb3VyY2VzVmVyc2lvbiIsImVudHJ5UG9pbnQiLCJyZXNvdXJjZVpvbmUiLCJzdHlsZVNoZWV0Iiwic2NyaXB0IiwiWiIsInB1YmxpY0Zvcm0iLCJjYXRjaCIsIlciLCJ6Iiwia29udHVyRG9tYWlucyIsImF1dGhvcml6ZWQiLCJhdXRoZW50aWNhdGlvbiIsImF1dGhTaWQiLCJBdXRob3JpemF0aW9uIiwiY2F1bGRyb25BcGlVcmwiLCJpc1Rlc3RTZXJ2ZXIiLCJyZW5kZXJDYWNoaW5nRm9ySUU4Iiwibm9ybWFsaXphdGlvbk9uU2VydmVyIiwibm9ybWF0aXZlVXJsIiwiZmVlZGJhY2tFbmFibGVkIiwiaXNEaXNhYmxlZENsZWFuRm9ybSIsImlzRGlzYWJsZWRDbG9zZUJ1dHRvbiIsImlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b24iLCJ0aGVtZSIsInRlbXBsYXRlc0FwaSIsInJlbmRlckZvcm0iLCIkIiwiWCIsIlkiLCJzdGFydCIsInBhcnRpYWxSZW5kZXJpbmdGb3JJRTgiLCJwYXJzZUludCIsImNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0iLCJfQ29tbW9uX0Vycm9yc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImFyZyIsIndyYXAiLCJfaW52b2tlIiwiX19hd2FpdCIsImRlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJyZXN1bHROYW1lIiwibmV4dExvYyIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwibWFyayIsImF3cmFwIiwiQXN5bmNJdGVyYXRvciIsImFzeW5jIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzdG9wIiwicnZhbCIsImNvbXBsZXRlIiwiZmluaXNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwib3duS2V5cyIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJtb2RlbENoYW5nZUV2ZW50UGF0aCIsIm1hcENodW5rVmFsdWVzIiwicmVkdWNlQ2h1bmtWYWx1ZXMiLCJyZWR1Y2UiLCJMZWdhY3lQdWJsaWNGb3JtIiwiZm9ybSIsIl9yZWxvYWRJbm5lciIsIl92YWxpZGF0ZUNoaWxkcmVuQnlQYXRoIiwicGlja2xpc3RzUHJvdmlkZXIiLCJnZXREaWdlc3RBcGlQaWNrbGlzdCIsInF1ZXJ5IiwiZXZlbnRNYW5hZ2VyIiwib24iLCJvZmYiLCJjaGFuZ2VTZXQiLCJzdG9wQXV0b3NlbmQiLCJ1bm1vdW50IiwibW9kZWwiLCJnZXRDaHVuayIsInNldHRpbmdzIiwiZm9ybVJvb3QiLCJ2YWxpZGF0b3IiLCJ2YWxpZGF0ZUFsbCIsImZpbGwiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZG9jdW1lbnRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInNyYyIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiZXhwb3J0cyIsImlkIiwibG9hZGVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIndpbmRvdyIsImNoaWxkcmVuIl0sInNvdXJjZXMiOlsid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9FcnJvcnMudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvQ29tbW9uL1R5cGluZ1V0aWxzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy93aGF0d2ctZmV0Y2gvZmV0Y2guanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvQ2xpZW50LnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0NsaWVudFNldHRpbmdzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybS50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0hlbHBlcnMvTG9hZEludG9Eb2N1bWVudC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvaGFybW9ueSBtb2R1bGUgZGVjb3JhdG9yIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9zdGFydHVwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4uL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGllbnREcmFmdEluZm9VcmwoZHJhZnRJZDogRHJhZnRGdWxsSWQpIHtcbiAgICAvLyBOT1RFINCt0YLQsCDRhNGD0L3QutGG0LjRjyDQvtCx0YrRj9Cy0LvQtdC90LAg0L7RgtC00LXQu9GM0L3Qviwg0LjQsdC+INC+0L3QsCDQstGF0L7QtNC40YIg0LIg0YHQvtGB0YLQsNCyIGNsaWVudC5qcyDQuFxuICAgIC8vINC90LUg0LTQvtC70LbQvdC+INC/0YDQvtC40YHRhdC+0LTQuNGC0Ywg0YPRgtC10LbQtdC70LXQvdC40Y8gY2xpZW50LmpzLdCwXG4gICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0SWQubnN9L2RyYWZ0cy8ke2RyYWZ0SWQuZHJhZnRJZH0vY2xpZW50LWRyYWZ0LWluZm9gO1xufVxuIiwiZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiT3BlcmF0aW9uIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RTdXBwb3J0ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UgPz8gXCJPcGVyYXRpb24gbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUHJvZ3JhbVN0YXRlRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcIkludmFsaWQgcHJvZ3JhbSBzdGF0ZVwiICsgKG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gXCI6IFwiICsgbWVzc2FnZSA6IFwiXCIpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihhcmd1bWVudE5hbWU6IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gYCR7bWVzc2FnZX0gKGFyZ3VtZW50OiAke2FyZ3VtZW50TmFtZX0pYCA6IGBJbnZhbGlkIGFyZ3VtZW50IHZhbHVlOiAke2FyZ3VtZW50TmFtZX1gXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHlwaW5nRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCB0eXBpbmdcIik7XG4gICAgfVxufVxuIiwiLyoqKlxuICog0KHRgtGA0L7Qs9C+0YLQuNC/0LjQt9C40YDQvtCy0LDQvdC90LDRjyDQt9Cw0LzQtdC90LAg0LTQu9GPIEJvb2xlYW4oLi4uKVxuICog0J7QsdGL0YfQvdC+INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8gWy4uLl0uZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JVbmRlZmluZWQ8VD4oaW5wdXQ6IFQpOiBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgcmV0dXJuIGlucHV0ICE9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVVua25vd25FcnJvcihlcnJvcjogdW5rbm93bik6IHVuZGVmaW5lZCB8IHN0cmluZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBlcnJvcj8uW1wibWVzc2FnZVwiXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGFzc2VydHMgaW5wdXQgaXMgTm9uTnVsbGFibGU8VD4ge1xuICAgIGlmICghaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBkZWZpbmVkYCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG5cbmV4cG9ydCB0eXBlIEVycm9yRmlyc3RDYWxsYmFjazxUPiA9ICguLi5hcmdzOiBbRXJyb3IsIG51bGwgfCB1bmRlZmluZWRdIHwgW251bGwgfCB1bmRlZmluZWQsIFRdIHwgW0Vycm9yXSkgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlamVjdChtZXNzYWdlPzogc3RyaW5nIHwgRXJyb3IpOiBuZXZlciB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IG1lc3NhZ2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlID8/IFwiVW5kZWZpbmVkIGlzIG5vdCBhbGxvd2VkXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG1lc3NhZ2U7XG4gICAgfVxufVxuXG50eXBlIEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMgeyBsZW5ndGg6IFRMZW5ndGggfVxuICAgID8gVFJlc3RcbiAgICA6IEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGgsIFtUSXRlbSwgLi4uVFJlc3RdPjtcblxuZXhwb3J0IHR5cGUgTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMge1xuICAgIGxlbmd0aDogVExlbmd0aDtcbn1cbiAgICA/IFsuLi5UUmVzdCwgLi4uVEl0ZW1bXV1cbiAgICA6IE1pbkxlbmd0aEFycmF5PFRJdGVtLCBUTGVuZ3RoLCBbLi4uVFJlc3QsIFRJdGVtXT47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPj0gbWluTGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluTGVuZ3RoT3JVbmRlZmluZWQ8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IFRbXSxcbiAgICBtaW5MZW5ndGg6IFROdW1cbik6IHVuZGVmaW5lZCB8IE1pbkxlbmd0aEFycmF5PFQsIFROdW0+IHtcbiAgICBpZiAoaXNMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWwoaXRlbXMsIG1pbkxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNMZW5ndGg8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPT09IGxlbmd0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SXNOb3RFbXB0eTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNBdExlYXN0T25lSXRlbTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlJc05vdEVtcHR5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBhc3NlcnRzIGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICBpZiAoIWFycmF5SXNOb3RFbXB0eShpdGVtcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBtdXN0IGJlIG5vdCBlbXB0eWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5SGFzTGVuZ3RoPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBhc3NlcnRzIGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIGlmICghYXJyYXlIYXNMZW5ndGgoaXRlbXMsIGxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBzaG91bGQgaGFzIGxlbmd0aCAke2xlbmd0aH1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUxlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogYXNzZXJ0cyBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICBpZiAoIWlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsKGl0ZW1zLCBsZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgbXVzdCBoYXZlIG1pbmltYWwgbGVuZ3RoICR7bGVuZ3RofWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5ldmVyKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQW5kR2V0U3RyaW5nKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bmV2ZXJBcmd1bWVudH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuQXN5bmNBY3Rpb24oYWN0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgIGFjdGlvbigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaW5wdXQgPT0gdW5kZWZpbmVkIHx8IGlucHV0ID09PSBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgc3RyaW5nIHtcbiAgICByZXR1cm4gIWlzTnVsbE9yRW1wdHkoaW5wdXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JXaGl0ZVNwYWNlKGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogaW5wdXQgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dC50cmltKCkgPT09IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGFzdFNsYXNoKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsLnNsaWNlKC0xKSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXM8VD4odmFsdWU6IFQpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG4iLCJ2YXIgZ2xvYmFsID1cbiAgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWxUaGlzKSB8fFxuICAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYpIHx8XG4gICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwpXG5cbnZhciBzdXBwb3J0ID0ge1xuICBzZWFyY2hQYXJhbXM6ICdVUkxTZWFyY2hQYXJhbXMnIGluIGdsb2JhbCxcbiAgaXRlcmFibGU6ICdTeW1ib2wnIGluIGdsb2JhbCAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcbiAgYmxvYjpcbiAgICAnRmlsZVJlYWRlcicgaW4gZ2xvYmFsICYmXG4gICAgJ0Jsb2InIGluIGdsb2JhbCAmJlxuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBCbG9iKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSkoKSxcbiAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gZ2xvYmFsLFxuICBhcnJheUJ1ZmZlcjogJ0FycmF5QnVmZmVyJyBpbiBnbG9iYWxcbn1cblxuZnVuY3Rpb24gaXNEYXRhVmlldyhvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBEYXRhVmlldy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihvYmopXG59XG5cbmlmIChzdXBwb3J0LmFycmF5QnVmZmVyKSB7XG4gIHZhciB2aWV3Q2xhc3NlcyA9IFtcbiAgICAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDY0QXJyYXldJ1xuICBdXG5cbiAgdmFyIGlzQXJyYXlCdWZmZXJWaWV3ID1cbiAgICBBcnJheUJ1ZmZlci5pc1ZpZXcgfHxcbiAgICBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdmlld0NsYXNzZXMuaW5kZXhPZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSkgPiAtMVxuICAgIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuYW1lKSB7XG4gIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICBuYW1lID0gU3RyaW5nKG5hbWUpXG4gIH1cbiAgaWYgKC9bXmEtejAtOVxcLSMkJSYnKisuXl9gfH4hXS9pLnRlc3QobmFtZSkgfHwgbmFtZSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZTogXCInICsgbmFtZSArICdcIicpXG4gIH1cbiAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG4vLyBCdWlsZCBhIGRlc3RydWN0aXZlIGl0ZXJhdG9yIGZvciB0aGUgdmFsdWUgbGlzdFxuZnVuY3Rpb24gaXRlcmF0b3JGb3IoaXRlbXMpIHtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHZhbHVlID0gaXRlbXMuc2hpZnQoKVxuICAgICAgcmV0dXJuIHtkb25lOiB2YWx1ZSA9PT0gdW5kZWZpbmVkLCB2YWx1ZTogdmFsdWV9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgICBpdGVyYXRvcltTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXRlcmF0b3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhlYWRlcnMoaGVhZGVycykge1xuICB0aGlzLm1hcCA9IHt9XG5cbiAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCB2YWx1ZSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVycykpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICB0aGlzLmFwcGVuZChoZWFkZXJbMF0sIGhlYWRlclsxXSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pXG4gICAgfSwgdGhpcylcbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuICB2YXIgb2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXVxuICB0aGlzLm1hcFtuYW1lXSA9IG9sZFZhbHVlID8gb2xkVmFsdWUgKyAnLCAnICsgdmFsdWUgOiB2YWx1ZVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMubWFwW25hbWVdIDogbnVsbFxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShub3JtYWxpemVOYW1lKG5hbWUpKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLm1hcCkge1xuICAgIGlmICh0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFtZSwgdGhpcylcbiAgICB9XG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKG5hbWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIGl0ZW1zLnB1c2godmFsdWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKFtuYW1lLCB2YWx1ZV0pXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXNcbn1cblxuZnVuY3Rpb24gY29uc3VtZWQoYm9keSkge1xuICBpZiAoYm9keS5ib2R5VXNlZCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcbiAgfVxuICBib2R5LmJvZHlVc2VkID0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpXG4gICAgfVxuICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZWplY3QocmVhZGVyLmVycm9yKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc0FycmF5QnVmZmVyKGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYilcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRBcnJheUJ1ZmZlckFzVGV4dChidWYpIHtcbiAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXG4gIHZhciBjaGFycyA9IG5ldyBBcnJheSh2aWV3Lmxlbmd0aClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHtcbiAgICBjaGFyc1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodmlld1tpXSlcbiAgfVxuICByZXR1cm4gY2hhcnMuam9pbignJylcbn1cblxuZnVuY3Rpb24gYnVmZmVyQ2xvbmUoYnVmKSB7XG4gIGlmIChidWYuc2xpY2UpIHtcbiAgICByZXR1cm4gYnVmLnNsaWNlKDApXG4gIH0gZWxzZSB7XG4gICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYuYnl0ZUxlbmd0aClcbiAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKVxuICAgIHJldHVybiB2aWV3LmJ1ZmZlclxuICB9XG59XG5cbmZ1bmN0aW9uIEJvZHkoKSB7XG4gIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXG4gIHRoaXMuX2luaXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuICAgIC8qXG4gICAgICBmZXRjaC1tb2NrIHdyYXBzIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gYW4gRVM2IFByb3h5IHRvXG4gICAgICBwcm92aWRlIHVzZWZ1bCB0ZXN0IGhhcm5lc3MgZmVhdHVyZXMgc3VjaCBhcyBmbHVzaC4gSG93ZXZlciwgb25cbiAgICAgIEVTNSBicm93c2VycyB3aXRob3V0IGZldGNoIG9yIFByb3h5IHN1cHBvcnQgcG9sbHlmaWxscyBtdXN0IGJlIHVzZWQ7XG4gICAgICB0aGUgcHJveHktcG9sbHlmaWxsIGlzIHVuYWJsZSB0byBwcm94eSBhbiBhdHRyaWJ1dGUgdW5sZXNzIGl0IGV4aXN0c1xuICAgICAgb24gdGhlIG9iamVjdCBiZWZvcmUgdGhlIFByb3h5IGlzIGNyZWF0ZWQuIFRoaXMgY2hhbmdlIGVuc3VyZXNcbiAgICAgIFJlc3BvbnNlLmJvZHlVc2VkIGV4aXN0cyBvbiB0aGUgaW5zdGFuY2UsIHdoaWxlIG1haW50YWluaW5nIHRoZVxuICAgICAgc2VtYW50aWMgb2Ygc2V0dGluZyBSZXF1ZXN0LmJvZHlVc2VkIGluIHRoZSBjb25zdHJ1Y3RvciBiZWZvcmVcbiAgICAgIF9pbml0Qm9keSBpcyBjYWxsZWQuXG4gICAgKi9cbiAgICB0aGlzLmJvZHlVc2VkID0gdGhpcy5ib2R5VXNlZFxuICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxuICAgIGlmICghYm9keSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYiAmJiBCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QmxvYiA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuZm9ybURhdGEgJiYgRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlGb3JtRGF0YSA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5LnRvU3RyaW5nKClcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgc3VwcG9ydC5ibG9iICYmIGlzRGF0YVZpZXcoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkuYnVmZmVyKVxuICAgICAgLy8gSUUgMTAtMTEgY2FuJ3QgaGFuZGxlIGEgRGF0YVZpZXcgYm9keS5cbiAgICAgIHRoaXMuX2JvZHlJbml0ID0gbmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIChBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSB8fCBpc0FycmF5QnVmZmVyVmlldyhib2R5KSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChib2R5KVxuICAgIH1cblxuICAgIGlmICghdGhpcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcbiAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlCbG9iICYmIHRoaXMuX2JvZHlCbG9iLnR5cGUpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgdGhpcy5fYm9keUJsb2IudHlwZSlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgIHRoaXMuYmxvYiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICB2YXIgaXNDb25zdW1lZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICAgIGlmIChpc0NvbnN1bWVkKSB7XG4gICAgICAgICAgcmV0dXJuIGlzQ29uc3VtZWRcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ1ZmZlci5zbGljZShcbiAgICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0ICsgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVMZW5ndGhcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2IoKS50aGVuKHJlYWRCbG9iQXNBcnJheUJ1ZmZlcilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICByZXR1cm4gcmVhZEJsb2JBc1RleHQodGhpcy5fYm9keUJsb2IpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVhZEFycmF5QnVmZmVyQXNUZXh0KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5mb3JtRGF0YSkge1xuICAgIHRoaXMuZm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcbiAgICB9XG4gIH1cblxuICB0aGlzLmpzb24gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG52YXIgbWV0aG9kcyA9IFsnREVMRVRFJywgJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnLCAnUE9TVCcsICdQVVQnXVxuXG5mdW5jdGlvbiBub3JtYWxpemVNZXRob2QobWV0aG9kKSB7XG4gIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xID8gdXBjYXNlZCA6IG1ldGhvZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVxdWVzdChpbnB1dCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVxdWVzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgYm9keSA9IG9wdGlvbnMuYm9keVxuXG4gIGlmIChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAgICBpZiAoaW5wdXQuYm9keVVzZWQpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpXG4gICAgfVxuICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGlucHV0LmNyZWRlbnRpYWxzXG4gICAgaWYgKCFvcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG4gICAgfVxuICAgIHRoaXMubWV0aG9kID0gaW5wdXQubWV0aG9kXG4gICAgdGhpcy5tb2RlID0gaW5wdXQubW9kZVxuICAgIHRoaXMuc2lnbmFsID0gaW5wdXQuc2lnbmFsXG4gICAgaWYgKCFib2R5ICYmIGlucHV0Ll9ib2R5SW5pdCAhPSBudWxsKSB7XG4gICAgICBib2R5ID0gaW5wdXQuX2JvZHlJbml0XG4gICAgICBpbnB1dC5ib2R5VXNlZCA9IHRydWVcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy51cmwgPSBTdHJpbmcoaW5wdXQpXG4gIH1cblxuICB0aGlzLmNyZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscyB8fCB0aGlzLmNyZWRlbnRpYWxzIHx8ICdzYW1lLW9yaWdpbidcbiAgaWYgKG9wdGlvbnMuaGVhZGVycyB8fCAhdGhpcy5oZWFkZXJzKSB7XG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB9XG4gIHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlvbnMubWV0aG9kIHx8IHRoaXMubWV0aG9kIHx8ICdHRVQnKVxuICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGxcbiAgdGhpcy5zaWduYWwgPSBvcHRpb25zLnNpZ25hbCB8fCB0aGlzLnNpZ25hbFxuICB0aGlzLnJlZmVycmVyID0gbnVsbFxuXG4gIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpICYmIGJvZHkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0cycpXG4gIH1cbiAgdGhpcy5faW5pdEJvZHkoYm9keSlcblxuICBpZiAodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICBpZiAob3B0aW9ucy5jYWNoZSA9PT0gJ25vLXN0b3JlJyB8fCBvcHRpb25zLmNhY2hlID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGEgJ18nIHBhcmFtZXRlciBpbiB0aGUgcXVlcnkgc3RyaW5nXG4gICAgICB2YXIgcmVQYXJhbVNlYXJjaCA9IC8oWz8mXSlfPVteJl0qL1xuICAgICAgaWYgKHJlUGFyYW1TZWFyY2gudGVzdCh0aGlzLnVybCkpIHtcbiAgICAgICAgLy8gSWYgaXQgYWxyZWFkeSBleGlzdHMgdGhlbiBzZXQgdGhlIHZhbHVlIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnJlcGxhY2UocmVQYXJhbVNlYXJjaCwgJyQxXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGEgbmV3ICdfJyBwYXJhbWV0ZXIgdG8gdGhlIGVuZCB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdmFyIHJlUXVlcnlTdHJpbmcgPSAvXFw/L1xuICAgICAgICB0aGlzLnVybCArPSAocmVRdWVyeVN0cmluZy50ZXN0KHRoaXMudXJsKSA/ICcmJyA6ICc/JykgKyAnXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMsIHtib2R5OiB0aGlzLl9ib2R5SW5pdH0pXG59XG5cbmZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgYm9keVxuICAgIC50cmltKClcbiAgICAuc3BsaXQoJyYnKVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGJ5dGVzKSB7XG4gICAgICBpZiAoYnl0ZXMpIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gYnl0ZXMuc3BsaXQoJz0nKVxuICAgICAgICB2YXIgbmFtZSA9IHNwbGl0LnNoaWZ0KCkucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChuYW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gZm9ybVxufVxuXG5mdW5jdGlvbiBwYXJzZUhlYWRlcnMocmF3SGVhZGVycykge1xuICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKClcbiAgLy8gUmVwbGFjZSBpbnN0YW5jZXMgb2YgXFxyXFxuIGFuZCBcXG4gZm9sbG93ZWQgYnkgYXQgbGVhc3Qgb25lIHNwYWNlIG9yIGhvcml6b250YWwgdGFiIHdpdGggYSBzcGFjZVxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMlxuICB2YXIgcHJlUHJvY2Vzc2VkSGVhZGVycyA9IHJhd0hlYWRlcnMucmVwbGFjZSgvXFxyP1xcbltcXHQgXSsvZywgJyAnKVxuICAvLyBBdm9pZGluZyBzcGxpdCB2aWEgcmVnZXggdG8gd29yayBhcm91bmQgYSBjb21tb24gSUUxMSBidWcgd2l0aCB0aGUgY29yZS1qcyAzLjYuMCByZWdleCBwb2x5ZmlsbFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHViL2ZldGNoL2lzc3Vlcy83NDhcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzc1MVxuICBwcmVQcm9jZXNzZWRIZWFkZXJzXG4gICAgLnNwbGl0KCdcXHInKVxuICAgIC5tYXAoZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICByZXR1cm4gaGVhZGVyLmluZGV4T2YoJ1xcbicpID09PSAwID8gaGVhZGVyLnN1YnN0cigxLCBoZWFkZXIubGVuZ3RoKSA6IGhlYWRlclxuICAgIH0pXG4gICAgLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgICAgdmFyIHBhcnRzID0gbGluZS5zcGxpdCgnOicpXG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKS50cmltKClcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcGFydHMuam9pbignOicpLnRyaW0oKVxuICAgICAgICBoZWFkZXJzLmFwcGVuZChrZXksIHZhbHVlKVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBoZWFkZXJzXG59XG5cbkJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXNwb25zZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICB0aGlzLnR5cGUgPSAnZGVmYXVsdCdcbiAgdGhpcy5zdGF0dXMgPSBvcHRpb25zLnN0YXR1cyA9PT0gdW5kZWZpbmVkID8gMjAwIDogb3B0aW9ucy5zdGF0dXNcbiAgdGhpcy5vayA9IHRoaXMuc3RhdHVzID49IDIwMCAmJiB0aGlzLnN0YXR1cyA8IDMwMFxuICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1c1RleHQgPT09IHVuZGVmaW5lZCA/ICcnIDogJycgKyBvcHRpb25zLnN0YXR1c1RleHRcbiAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8ICcnXG4gIHRoaXMuX2luaXRCb2R5KGJvZHlJbml0KVxufVxuXG5Cb2R5LmNhbGwoUmVzcG9uc2UucHJvdG90eXBlKVxuXG5SZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG4gICAgdXJsOiB0aGlzLnVybFxuICB9KVxufVxuXG5SZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogMCwgc3RhdHVzVGV4dDogJyd9KVxuICByZXNwb25zZS50eXBlID0gJ2Vycm9yJ1xuICByZXR1cm4gcmVzcG9uc2Vcbn1cblxudmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cblJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgaWYgKHJlZGlyZWN0U3RhdHVzZXMuaW5kZXhPZihzdGF0dXMpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogc3RhdHVzLCBoZWFkZXJzOiB7bG9jYXRpb246IHVybH19KVxufVxuXG5leHBvcnQgdmFyIERPTUV4Y2VwdGlvbiA9IGdsb2JhbC5ET01FeGNlcHRpb25cbnRyeSB7XG4gIG5ldyBET01FeGNlcHRpb24oKVxufSBjYXRjaCAoZXJyKSB7XG4gIERPTUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKG1lc3NhZ2UsIG5hbWUpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHZhciBlcnJvciA9IEVycm9yKG1lc3NhZ2UpXG4gICAgdGhpcy5zdGFjayA9IGVycm9yLnN0YWNrXG4gIH1cbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRE9NRXhjZXB0aW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaChpbnB1dCwgaW5pdCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdChpbnB1dCwgaW5pdClcblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCAmJiByZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgIH1cblxuICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKVxuXG4gICAgZnVuY3Rpb24gYWJvcnRYaHIoKSB7XG4gICAgICB4aHIuYWJvcnQoKVxuICAgIH1cblxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICBzdGF0dXM6IHhoci5zdGF0dXMsXG4gICAgICAgIHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiBwYXJzZUhlYWRlcnMoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIHx8ICcnKVxuICAgICAgfVxuICAgICAgb3B0aW9ucy51cmwgPSAncmVzcG9uc2VVUkwnIGluIHhociA/IHhoci5yZXNwb25zZVVSTCA6IG9wdGlvbnMuaGVhZGVycy5nZXQoJ1gtUmVxdWVzdC1VUkwnKVxuICAgICAgdmFyIGJvZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5yZXNwb25zZVRleHRcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlc29sdmUobmV3IFJlc3BvbnNlKGJvZHksIG9wdGlvbnMpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9udGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uYWJvcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZml4VXJsKHVybCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHVybCA9PT0gJycgJiYgZ2xvYmFsLmxvY2F0aW9uLmhyZWYgPyBnbG9iYWwubG9jYXRpb24uaHJlZiA6IHVybFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIGZpeFVybChyZXF1ZXN0LnVybCksIHRydWUpXG5cbiAgICBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ29taXQnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoJ3Jlc3BvbnNlVHlwZScgaW4geGhyKSB7XG4gICAgICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYidcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHN1cHBvcnQuYXJyYXlCdWZmZXIgJiZcbiAgICAgICAgcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykgJiZcbiAgICAgICAgcmVxdWVzdC5oZWFkZXJzLmdldCgnQ29udGVudC1UeXBlJykuaW5kZXhPZignYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJykgIT09IC0xXG4gICAgICApIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcidcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5pdCAmJiB0eXBlb2YgaW5pdC5oZWFkZXJzID09PSAnb2JqZWN0JyAmJiAhKGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpKSB7XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhpbml0LmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCBub3JtYWxpemVWYWx1ZShpbml0LmhlYWRlcnNbbmFtZV0pKVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCkge1xuICAgICAgcmVxdWVzdC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcblxuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBET05FIChzdWNjZXNzIG9yIGZhaWx1cmUpXG4gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xuICAgICAgICAgIHJlcXVlc3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIuc2VuZCh0eXBlb2YgcmVxdWVzdC5fYm9keUluaXQgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlcXVlc3QuX2JvZHlJbml0KVxuICB9KVxufVxuXG5mZXRjaC5wb2x5ZmlsbCA9IHRydWVcblxuaWYgKCFnbG9iYWwuZmV0Y2gpIHtcbiAgZ2xvYmFsLmZldGNoID0gZmV0Y2hcbiAgZ2xvYmFsLkhlYWRlcnMgPSBIZWFkZXJzXG4gIGdsb2JhbC5SZXF1ZXN0ID0gUmVxdWVzdFxuICBnbG9iYWwuUmVzcG9uc2UgPSBSZXNwb25zZVxufVxuIiwiLyogdHNsaW50OmRpc2FibGU6bm8tbnVsbC1rZXl3b3JkIG5vLWFueSBuby11bnNhZmUtYW55ICovXG5pbXBvcnQgeyBmZXRjaCB9IGZyb20gXCJ3aGF0d2ctZmV0Y2hcIjtcblxuaW1wb3J0IHsgRXJyb3JGaXJzdENhbGxiYWNrLCByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IElGb3JtIH0gZnJvbSBcIi4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtXCI7XG5pbXBvcnQgeyBMb2FkSW50b0RvY3VtZW50IH0gZnJvbSBcIi4uLy4uL0hlbHBlcnMvTG9hZEludG9Eb2N1bWVudFwiO1xuaW1wb3J0IHR5cGUgeyBJUHVibGljRm9ybSB9IGZyb20gXCIuLi9QdWJsaWNGb3JtL0lQdWJsaWNGb3JtXCI7XG5pbXBvcnQgdHlwZSB7IElLZVdlYlRlbXBsYXRlc0FwaUNsaWVudCB9IGZyb20gXCIuLi9UeXBlcy9JS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnRcIjtcbmltcG9ydCB0eXBlIHsgQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NsaWVudERyYWZ0SW5mby9DbGllbnREcmFmdEluZm9SZXNwb25zZVwiO1xuaW1wb3J0IHsgZ2V0Q2xpZW50RHJhZnRJbmZvVXJsIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsXCI7XG5pbXBvcnQgeyBBVU9PcHRpb25zIH0gZnJvbSBcIi4uL1R5cGVzL0FVT09wdGlvbnNcIjtcbmltcG9ydCB0eXBlIHsgTGF5b3V0RXZlbnRzU3RhdGljIH0gZnJvbSBcIi4uLy4uL0NvbnRyb2xzL0ludGVybmFscy9MYXlvdXRFdmVudHMvTGF5b3V0RXZlbnRzXCI7XG5cbmltcG9ydCB7IGNsaWVudFNldHRpbmdzIH0gZnJvbSBcIi4vQ2xpZW50U2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi9MZWdhY3lQdWJsaWNGb3JtL0NyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm1cIjtcblxudHlwZSBGb3JtQ29udGFpbmVyID0gc3RyaW5nIHwgSFRNTEVsZW1lbnQ7XG5cbnR5cGUgRW5naW5lRW50cnlQb2ludCA9ICgpID0+IHZvaWQ7XG5cbmludGVyZmFjZSBSZW5kZXJGb3JtU2V0dGluZ3Mge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGVuZ2luZVZlcnNpb24/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHJlc291cmNlc1ZlcnNpb246IHN0cmluZztcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHJlbmRlckZvcm06IHVuZGVmaW5lZCB8IEVuZ2luZUVudHJ5UG9pbnQ7XG4gICAgdGVtcGxhdGVzQXBpPzogSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50O1xufVxuXG50eXBlIFN0YXJ0Rm9ybUZ1bmMgPSAocGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsIGV4dGVuZGVkU2V0dGluZ3M6IFJlbmRlckZvcm1TZXR0aW5ncykgPT4gUHJvbWlzZTxJRm9ybT47XG5cbmludGVyZmFjZSBDYW5keUdsb2JhbEluamVjdGVkVmFyIHtcbiAgICBzdGFydDogKHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLCBvcHRpb25zOiBTdGFydEZvcm1PcHRpb25zLCBjYWxsYmFjaz86IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT4pID0+IHZvaWQ7XG4gICAga2Vmb3Jtc1VybD86IHN0cmluZztcbiAgICBwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4OiBib29sZWFuO1xuICAgIGVudHJ5UG9pbnQ6IHsgW2tleTogc3RyaW5nXTogU3RhcnRGb3JtRnVuYyB9O1xuICAgIGxvYWRFcnJvcj86IHVua25vd247XG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgQ0Y6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXI7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1uYW1lc3BhY2VcbiAgICBuYW1lc3BhY2UgTm9kZUpTIHtcbiAgICAgICAgaW50ZXJmYWNlIEdsb2JhbCB7XG4gICAgICAgICAgICBDRjogQ2FuZHlHbG9iYWxJbmplY3RlZFZhcjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZGVjbGFyZSBjb25zdCBnbG9iYWw6IFdpbmRvdztcblxuZnVuY3Rpb24gZGVmYXVsdENhbGxiYWNrKCk6IHZvaWQge1xuICAgIC8qIGVtcHR5ICovXG59XG5cbmZ1bmN0aW9uIHBhcnNlQm9vbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBCb29sZWFuKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gdXJsKHJlbGF0aXZlVXJsOiBzdHJpbmcgPSBcIlwiKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlVXJsID0gZ2xvYmFsLkNGLmtlZm9ybXNVcmwgfHwgXCJcIjtcblxuICAgIHJldHVybiBgJHtiYXNlVXJsfS8ke3JlbGF0aXZlVXJsfWAucmVwbGFjZSgvKFteOl0pXFwvezIsfS9nLCBcIiQxL1wiKTtcbn1cblxuZnVuY3Rpb24gYnVpbGRVcmwocGF0aDogc3RyaW5nLCBwYXJhbXM6IHsgW3BhcmFtTmFtZTogc3RyaW5nXTogdW5kZWZpbmVkIHwgc3RyaW5nIH0pOiBzdHJpbmcge1xuICAgIGlmIChwYXJhbXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgY29uc3QgcXVlcnlQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBhcmFtTmFtZSBvZiBPYmplY3Qua2V5cyhwYXJhbXMpKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSBwYXJhbXNbcGFyYW1OYW1lXTtcbiAgICAgICAgaWYgKHBhcmFtVmFsdWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBxdWVyeVBhcnRzLnB1c2goYCR7cGFyYW1OYW1lfT0ke2VuY29kZVVSSUNvbXBvbmVudChwYXJhbVZhbHVlKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocXVlcnlQYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIHJldHVybiBwYXRoICsgXCI/XCIgKyBxdWVyeVBhcnRzLmpvaW4oXCImXCIpO1xufVxuXG5mdW5jdGlvbiBpc0FsbG93ZWQoZG9tYWluczogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoYF4oPzoke2RvbWFpbnMucmVwbGFjZSgvXFwuL2csIFwiXFxcXC5cIikucmVwbGFjZSgvXFwqL2csIFwiW2EtejAtOS0uXStcIil9KSRgKS50ZXN0KFxuICAgICAgICBnbG9iYWwubG9jYXRpb24uaG9zdFxuICAgICk7XG59XG5cbmZ1bmN0aW9uIGdldFBhcmFtZXRlckJ5TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoXG4gICAgICAgIChnbG9iYWwubG9jYXRpb24uc2VhcmNoXG4gICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAucmVwbGFjZSgvXihcXD98I3wmKS8sIFwiXCIpXG4gICAgICAgICAgICAuc3BsaXQoXCImXCIpXG4gICAgICAgICAgICAubWFwKHBhcmFtID0+IHBhcmFtLnJlcGxhY2UoL1xcKy9nLCBcIiBcIikuc3BsaXQoXCI9XCIpLm1hcChkZWNvZGVVUklDb21wb25lbnQpKVxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnRyaXBsZS1lcXVhbHNcbiAgICAgICAgICAgIC5maW5kKChba2V5XSkgPT4ga2V5ID09IG5hbWUpIHx8IFtdKVsxXVxuICAgICk7XG59XG5cbnR5cGUgVGFzayA9IChjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpID0+IHZvaWQ7XG5cbmZ1bmN0aW9uIHJ1blBhcmFsbGVsKHRhc2tzOiBUYXNrW10sIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGxldCBjb21wbGV0ZWQgPSAwO1xuXG4gICAgdGFza3MuZm9yRWFjaCh0YXNrID0+IHtcbiAgICAgICAgdGFzayhlcnJvciA9PiB7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkID09PSB0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSB0YXNrcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcGxldGVkICs9IDE7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkID09PSB0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuaW50ZXJmYWNlIFN0YXJ0Rm9ybVNldHRpbmcge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGVuZ2luZVZlcnNpb24/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHJlc291cmNlWm9uZT86IHN0cmluZztcbiAgICByZXNvdXJjZXNWZXJzaW9uOiBzdHJpbmc7XG4gICAgdGhlbWU/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbmdpbmVWZXJzaW9uR3JlYXRlclRoYW5PckVxdWFsKGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGxlZnROdW1iZXJzID0gbGVmdFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLnNsaWNlKDAsIDMpXG4gICAgICAgICAgICAubWFwKHggPT4gcGFyc2VJbnQoeCwgMTApKTtcbiAgICAgICAgY29uc3QgcmlnaHROdW1iZXJzID0gcmlnaHRcbiAgICAgICAgICAgIC5zcGxpdChcIi5cIilcbiAgICAgICAgICAgIC5zbGljZSgwLCAzKVxuICAgICAgICAgICAgLm1hcCh4ID0+IHBhcnNlSW50KHgsIDEwKSk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAobGVmdE51bWJlcnNbMF0gPz8gMCkgPiAocmlnaHROdW1iZXJzWzBdID8/IDApIHx8XG4gICAgICAgICAgICAoKGxlZnROdW1iZXJzWzBdID8/IDApID09PSAocmlnaHROdW1iZXJzWzBdID8/IDApICYmXG4gICAgICAgICAgICAgICAgKChsZWZ0TnVtYmVyc1sxXSA/PyAwKSA+IChyaWdodE51bWJlcnNbMV0gPz8gMCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKChsZWZ0TnVtYmVyc1sxXSA/PyAwKSA9PT0gKHJpZ2h0TnVtYmVyc1sxXSA/PyAwKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKGxlZnROdW1iZXJzWzJdID8/IDApID49IChyaWdodE51bWJlcnNbMl0gPz8gMCkpKSlcbiAgICAgICAgKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gbG9hZEZvcm0oc2V0dGluZ3M6IFN0YXJ0Rm9ybVNldHRpbmcsIGNhbGxiYWNrOiAoZXJyb3I/OiBudWxsIHwgdW5kZWZpbmVkIHwgRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCB7IGdmdiwgZW5naW5lVmVyc2lvbiwgcmVzb3VyY2VzVmVyc2lvbiB9ID0gc2V0dGluZ3M7XG5cbiAgICBpZiAoZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZ2Z2XSkge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGlzTmVlZEVuZ2luZSA9IGVuZ2luZVZlcnNpb24gJiYgIWdsb2JhbFtlbmdpbmVWZXJzaW9uXTtcbiAgICBjb25zdCBub1N0eWxlc0ZvckdmdiA9IGZhbHNlOyAvLyBlbmdpbmVWZXJzaW9uICE9IHVuZGVmaW5lZCAmJiAoaXNFbmdpbmVWZXJzaW9uR3JlYXRlclRoYW5PckVxdWFsKGVuZ2luZVZlcnNpb24sIFwiNC4yMTQuMFwiKSB8fCBlbmdpbmVWZXJzaW9uID09PSBcImxvY2FsXCIpO1xuICAgIGNvbnN0IG5lZWRMb2FkU3R5bGVzRm9yR2Z2ID0gIW5vU3R5bGVzRm9yR2Z2O1xuICAgIGNvbnN0IG1pbiA9IGdldFBhcmFtZXRlckJ5TmFtZShcImRlYnVnXCIpID09PSBcInRydWVcIiA/IFwiXCIgOiBcIi5taW5cIjtcbiAgICBjb25zdCB0YXNrczogVGFza1tdID0gW107XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7IHY6IHJlc291cmNlc1ZlcnNpb24sIHJlc291cmNlWm9uZTogc2V0dGluZ3MucmVzb3VyY2Vab25lIH07XG4gICAgaWYgKG5lZWRMb2FkU3R5bGVzRm9yR2Z2KSB7XG4gICAgICAgIHRhc2tzLnB1c2goY2IgPT5cbiAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc3R5bGVTaGVldCh1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc3R5bGVzLyR7Z2Z2fSR7bWlufS5jc3NgLCBwYXJhbXMpKSwgdHJ1ZSwgY2IpXG4gICAgICAgICk7XG4gICAgfVxuICAgIHRhc2tzLnB1c2goY2IgPT4gTG9hZEludG9Eb2N1bWVudC5zY3JpcHQodXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3NjcmlwdHMvJHtnZnZ9JHttaW59LmpzYCwgcGFyYW1zKSksIGNiKSk7XG5cbiAgICBpZiAoaXNOZWVkRW5naW5lKSB7XG4gICAgICAgIHRhc2tzLnB1c2goXG4gICAgICAgICAgICBjYiA9PlxuICAgICAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc3R5bGVTaGVldChcbiAgICAgICAgICAgICAgICAgICAgdXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3N0eWxlcy9jYW5keV8ke2VuZ2luZVZlcnNpb259JHttaW59LmNzc2AsIHBhcmFtcykpLFxuICAgICAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgY2IgPT5cbiAgICAgICAgICAgICAgICBMb2FkSW50b0RvY3VtZW50LnNjcmlwdChcbiAgICAgICAgICAgICAgICAgICAgdXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3NjcmlwdHMvY2FuZHlfJHtlbmdpbmVWZXJzaW9ufSR7bWlufS5qc2AsIHBhcmFtcykpLFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBydW5QYXJhbGxlbCh0YXNrcywgY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiByZW5kZXJGb3JtKFxuICAgIHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLFxuICAgIGV4dGVuZGVkU2V0dGluZ3M6IFJlbmRlckZvcm1TZXR0aW5ncyxcbiAgICBjYWxsYmFjazogRXJyb3JGaXJzdENhbGxiYWNrPElQdWJsaWNGb3JtPlxuKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUVudHJ5UG9pbnQgPVxuICAgICAgICBnbG9iYWwuQ0YuZW50cnlQb2ludFtleHRlbmRlZFNldHRpbmdzLmdmdl0gPz8gcmVqZWN0KGBGb3JtIGVudHJ5IHBvaW50ICR7ZXh0ZW5kZWRTZXR0aW5ncy5nZnZ9IG5vdCBmb3VuZC5gKTtcbiAgICBmb3JtRW50cnlQb2ludChwYWdlQ29udGVudCwgZXh0ZW5kZWRTZXR0aW5ncylcbiAgICAgICAgLnRoZW4oZm9ybSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwdWJsaWNGb3JtID0gZm9ybS5wdWJsaWNGb3JtIHx8IGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0oZm9ybSk7XG5cbiAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHB1YmxpY0Zvcm0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goY2FsbGJhY2spO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXJ0Rm9ybU9wdGlvbnMgZXh0ZW5kcyBQYXJ0aWFsPEFVT09wdGlvbnM+IHtcbiAgICBuczogc3RyaW5nO1xuICAgIGRyYWZ0SWQ6IHN0cmluZztcbiAgICBnZnY/OiBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHRlbXBsYXRlc0FwaT86IElLZVdlYlRlbXBsYXRlc0FwaUNsaWVudDtcbiAgICBmZWVkYmFja0VuYWJsZWQ/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRDbG9zZUJ1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbj86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsZWFuRm9ybT86IGJvb2xlYW47XG4gICAgdGhlbWU/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIGF1dGhlbnRpY2F0aW9uPzogXCJicm93c2VyLWNyZWRlbnRpYWxzLWluY2x1ZGVcIiB8IHsgYXV0aFNpZDogc3RyaW5nIH07XG4gICAgZmV0Y2g/OiB0eXBlb2YgZmV0Y2g7XG4gICAgbW9kZWw/OiB7IFtwYXRoOiBzdHJpbmddOiB1bmtub3duIH07XG4gICAgZXZlbnRFbWl0dGVyPzogTGF5b3V0RXZlbnRzU3RhdGljO1xuICAgIGVtcGxveWVySWQ/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldEVuZ2luZUVudHJ5UG9pbnQoZW5naW5lVmVyc2lvbjogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZyk6IHVuZGVmaW5lZCB8IEVuZ2luZUVudHJ5UG9pbnQge1xuICAgIGlmIChlbmdpbmVWZXJzaW9uID09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICByZXR1cm4gZ2xvYmFsW2VuZ2luZVZlcnNpb25dICYmIGdsb2JhbFtlbmdpbmVWZXJzaW9uXS5kZWZhdWx0O1xufVxuXG5mdW5jdGlvbiBzdGFydChcbiAgICBwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lcixcbiAgICBvcHRpb25zOiBTdGFydEZvcm1PcHRpb25zLFxuICAgIGNhbGxiYWNrOiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+ID0gZGVmYXVsdENhbGxiYWNrXG4pOiB2b2lkIHtcbiAgICBsZXQgZXJyb3IgPSBudWxsO1xuICAgIGNvbnN0IHsgbnMsIGRyYWZ0SWQgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAoIWlzQWxsb3dlZChjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zKSkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcImRvbWFpbi51bnRydXN0ZWRcIik7XG4gICAgfSBlbHNlIGlmICghY2xpZW50U2V0dGluZ3MuYXV0aG9yaXplZCkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcInVzZXIudW5hdXRoZW50aWNhdGVkXCIpO1xuICAgIH0gZWxzZSBpZiAoIWRyYWZ0SWQpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLmRyYWZ0SWQgaXMgcmVxdWlyZWRcIik7XG4gICAgfSBlbHNlIGlmICghbnMpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJvcHRpb25zLm5zIGlzIHJlcXVpcmVkXCIpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZVpvbmUgPSBvcHRpb25zLnJlc291cmNlWm9uZSA/PyBnZXRQYXJhbWV0ZXJCeU5hbWUoXCJyZXNvdXJjZVpvbmVcIik7XG4gICAgY29uc3QgY2xpZW50RHJhZnRVcmwgPSBidWlsZFVybCh1cmwoZ2V0Q2xpZW50RHJhZnRJbmZvVXJsKHsgbnM6IG5zLCBkcmFmdElkOiBkcmFmdElkIH0pKSwge1xuICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHsgbWV0aG9kOiBcIkdFVFwiIH07XG4gICAgaWYgKG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT0gdW5kZWZpbmVkIHx8IG9wdGlvbnMuYXV0aGVudGljYXRpb24gPT09IFwiYnJvd3Nlci1jcmVkZW50aWFscy1pbmNsdWRlXCIpIHtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuY3JlZGVudGlhbHMgPSBcImluY2x1ZGVcIjtcbiAgICB9IGVsc2UgaWYgKFwiYXV0aFNpZFwiIGluIG9wdGlvbnMuYXV0aGVudGljYXRpb24gJiYgb3B0aW9ucy5hdXRoZW50aWNhdGlvbi5hdXRoU2lkICE9IHVuZGVmaW5lZCkge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzID0gcmVxdWVzdE9wdGlvbnMuaGVhZGVycyA/PyB7fTtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuaGVhZGVyc1tcIkF1dGhvcml6YXRpb25cIl0gPSBgQVVUSC5TSUQgJHtvcHRpb25zLmF1dGhlbnRpY2F0aW9uLmF1dGhTaWR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwib21pdFwiO1xuICAgIH1cbiAgICBjb25zdCBmZXRjaEltcGwgPSBvcHRpb25zLmZldGNoID8/IGZldGNoO1xuXG4gICAgZmV0Y2hJbXBsKGNsaWVudERyYWZ0VXJsLCByZXF1ZXN0T3B0aW9ucylcbiAgICAgICAgLnRoZW4oeCA9PiB4Lmpzb24oKSlcbiAgICAgICAgLnRoZW4oKGNsaWVudERyYWZ0SW5mbzogQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGdmdiA9IGNsaWVudERyYWZ0SW5mby5nZnY7XG4gICAgICAgICAgICBjb25zdCBlbmdpbmVWZXJzaW9uID0gY2xpZW50RHJhZnRJbmZvLmVuZ2luZVZlcnNpb247XG4gICAgICAgICAgICBjb25zdCBleHRlbmRlZFNldHRpbmdzID0ge1xuICAgICAgICAgICAgICAgIGF1dGhvcml6ZWQ6IGNsaWVudFNldHRpbmdzLmF1dGhvcml6ZWQsXG4gICAgICAgICAgICAgICAgY2F1bGRyb25BcGlVcmw6IGNsaWVudFNldHRpbmdzLmNhdWxkcm9uQXBpVXJsLFxuICAgICAgICAgICAgICAgIGlzVGVzdFNlcnZlcjogY2xpZW50U2V0dGluZ3MuaXNUZXN0U2VydmVyLFxuICAgICAgICAgICAgICAgIHJlbmRlckNhY2hpbmdGb3JJRTg6IGNsaWVudFNldHRpbmdzLnJlbmRlckNhY2hpbmdGb3JJRTgsXG4gICAgICAgICAgICAgICAgbm9ybWFsaXphdGlvbk9uU2VydmVyOiBjbGllbnRTZXR0aW5ncy5ub3JtYWxpemF0aW9uT25TZXJ2ZXIsXG4gICAgICAgICAgICAgICAgbm9ybWF0aXZlVXJsOiBjbGllbnRTZXR0aW5ncy5ub3JtYXRpdmVVcmwsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzVmVyc2lvbjogY2xpZW50U2V0dGluZ3MucmVzb3VyY2VzVmVyc2lvbixcbiAgICAgICAgICAgICAgICBrb250dXJEb21haW5zOiBjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zLFxuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgLi4uY2xpZW50RHJhZnRJbmZvLFxuICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb246IGVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgZmVlZGJhY2tFbmFibGVkOiBvcHRpb25zLmZlZWRiYWNrRW5hYmxlZCA/PyBjbGllbnREcmFmdEluZm8uZmVlZGJhY2tFbmFibGVkLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbGVhbkZvcm06IG9wdGlvbnMuaXNEaXNhYmxlZENsZWFuRm9ybSA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkQ2xvc2VCdXR0b246IG9wdGlvbnMuaXNEaXNhYmxlZENsb3NlQnV0dG9uID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b246IG9wdGlvbnMuaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbiA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGxvYWRGb3JtKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBleHRlbmRlZFNldHRpbmdzLmdmdixcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvbjogZXh0ZW5kZWRTZXR0aW5ncy5lbmdpbmVWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZVpvbmU6IGV4dGVuZGVkU2V0dGluZ3MucmVzb3VyY2Vab25lLFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZXNWZXJzaW9uOiBleHRlbmRlZFNldHRpbmdzLnJlc291cmNlc1ZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lOiBleHRlbmRlZFNldHRpbmdzLnRoZW1lLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9hZEVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRFcnJvciB8fCAhZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZ2Z2XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKGBkeW5hbWljIGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3IgZ2Z2ICR7Z2Z2fWApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW5kZXIgPSBnZXRFbmdpbmVFbnRyeVBvaW50KGVuZ2luZVZlcnNpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlQ29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5leHRlbmRlZFNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlc0FwaTogb3B0aW9ucy50ZW1wbGF0ZXNBcGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyRm9ybTogcmVuZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNhbGxiYWNrKTtcbn1cblxuY29uc3QgQ2FuZHlDbGllbnRFeHBvcnRzOiBDYW5keUdsb2JhbEluamVjdGVkVmFyID0ge1xuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBlbnRyeVBvaW50OiB7fSxcbiAgICBwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4OiBwYXJzZUJvb2woXCJ7cGFydGlhbFJlbmRlcmluZ0ZvcklFOH1cIiksXG4gICAga2Vmb3Jtc1VybDogXCJ7a2Vmb3Jtc1VybH1cIixcbn07XG5cbmdsb2JhbC5DRiA9IENhbmR5Q2xpZW50RXhwb3J0cztcblxuZXhwb3J0IHsgQ2FuZHlDbGllbnRFeHBvcnRzIH07XG4iLCJmdW5jdGlvbiBwYXJzZUJvb2wodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG59XG5cbmV4cG9ydCBjb25zdCBjbGllbnRTZXR0aW5ncyA9IHtcbiAgICBhdXRob3JpemVkOiBwYXJzZUJvb2woXCJ7YXV0aG9yaXplZH1cIiksXG4gICAgY2F1bGRyb25BcGlVcmw6IFwie2NhdWxkcm9uQXBpVXJsfVwiLFxuICAgIGlzVGVzdFNlcnZlcjogcGFyc2VCb29sKFwie2lzVGVzdFNlcnZlcn1cIiksXG4gICAgcmVuZGVyQ2FjaGluZ0ZvcklFODogcGFyc2VCb29sKFwie3JlbmRlckNhY2hpbmdGb3JJRTh9XCIpLFxuICAgIG5vcm1hbGl6YXRpb25PblNlcnZlcjogcGFyc2VCb29sKFwie25vcm1hbGl6YXRpb25PblNlcnZlcn1cIiksXG4gICAgbm9ybWF0aXZlVXJsOiBcIntub3JtYXRpdmVVcmx9XCIsXG4gICAgcmVzb3VyY2VzVmVyc2lvbjogXCJ7cmVzb3VyY2VzVmVyc2lvbn1cIixcbiAgICBrb250dXJEb21haW5zOiBcIntrb250dXJEb21haW5zfVwiLFxufTtcbiIsImltcG9ydCB7XG4gICAgRW1wbG95ZWUsXG4gICAgRW1wbG95ZWVMaXN0LFxuICAgIEdldEVtcGxveWVlTGlzdFJlcXVlc3QsXG4gICAgR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QsXG4gICAgV29ya2luZ0V2ZW50TGlzdCxcbn0gZnJvbSBcIkBza2Jrb250dXIvc3RhZmYtc2VsZWN0b3Itd2lkZ2V0XCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwiRW5naW5lL3NyYy9FbmdpbmUvRm9ybS9Nb2RlbENoYW5nZUV2ZW50TGlzdGVuZXJcIjtcblxuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vRXJyb3JzXCI7XG5pbXBvcnQgdHlwZSB7IFN0ZXAgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvRm9ybVBhcnRzL1RvdXIvVG91clR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9FcnJvckxvZy9TZXJ2ZXJFcnJvckxvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nUGF0aCwgTW9kZWxWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Db3JlVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZXJuYWxIb29rRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvRXZlbnRNYW5hZ2VtZW50L0V4dGVybmFsRXZlbnRzL0V4dGVybmFsSG9va0Z1bmN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWRvbmx5TW9kZWxDaHVuayB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Nb2RlbFN0b3JpbmcvTW9kZWxDaHVua1wiO1xuaW1wb3J0IHR5cGUgeyBQaWNrbGlzdFF1ZXJ5UmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvUGlja2xpc3RzL1BpY2tsaXN0VHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB0eXBlIHsgSVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi4vLi4vUHVibGljRm9ybS9JUHVibGljRm9ybVwiO1xuaW1wb3J0IHsgTW9kZWxFdmVudHNMaXN0ZW5lciB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9FdmVudE1hbmFnZW1lbnQvTW9kZWxFdmVudHMvTW9kZWxFdmVudFwiO1xuaW1wb3J0IHsgRGlnZXN0UXVlcnlGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0RpZ2VzdEFwaUNsaWVudC9UeXBlcy9EaWdlc3RRdWVyeUZpbHRlclwiO1xuaW1wb3J0IHsgSVVwZGF0ZUZvcm1Nb2RlbEFjY2Vzc29yIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtTW9kZWxBY2Nlc3NvclwiO1xuaW1wb3J0IHsgTW9kYWxPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL01vZGFsTWFuYWdlci9JTW9kYWxTdGF0ZVwiO1xuaW1wb3J0IHsgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vTW9kZWxQYXRoL01vZGVsUGF0aFwiO1xuaW1wb3J0IHsgQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcywgSW5pdFNlY3Rpb25Gb3JtTGlnaHRib3hPcHRpb25zIH0gZnJvbSBcIi4uLy4uL1B1YmxpY0Zvcm0vSW5pdFNlY3Rpb25MaWdodGJveFwiO1xuaW1wb3J0IHsgTWFzc0FjdGlvblBhcmFtZXRlcnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL01hc3NBY3Rpb25zL01hc3NBY3Rpb25QYXJhbWV0ZXJzXCI7XG5pbXBvcnQgeyBQcmludFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL1ByaW50L1ByaW50VHlwZVwiO1xuaW1wb3J0IHsgRmlhc0NsaWVudEluaXRPcHRpb25zLCBGaWFzQXBpIH0gZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xzL1ZhbHVlRWRpdG9ycy9GaWFzL0ZpYXNJbnB1dC9GaWFzQXBpXCI7XG5pbXBvcnQgeyBJbnN0YW5jZXNEZWxldGluZ1J1bGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0luc3RhbmNlc0RlbGV0aW5nL0luc3RhbmNlc0RlbGV0aW5nUnVsZVwiO1xuXG5pbXBvcnQgeyBJTGVnYWN5Rm9ybSB9IGZyb20gXCIuL0lMZWdhY3lGb3JtXCI7XG5cbmV4cG9ydCB0eXBlIE1vZGVsRXZlbnRQYXRoID1cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHN0cmluZywgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIiwgc3RyaW5nLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIl07XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbENoYW5nZUV2ZW50UGF0aChwYXRoPzogc3RyaW5nLCBmaWVsZE5hbWU/OiBzdHJpbmcpOiBNb2RlbEV2ZW50UGF0aCB7XG4gICAgaWYgKGZpZWxkTmFtZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHBhdGggPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIG11c3QgYmUgZGVmaW5lZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgcGF0aCwgZmllbGROYW1lXTtcbiAgICB9XG4gICAgaWYgKHBhdGggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBwYXRoXTtcbiAgICB9XG4gICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCJdO1xufVxuXG5mdW5jdGlvbiBtYXBDaHVua1ZhbHVlcyhjaHVuazogUmVhZG9ubHlNb2RlbENodW5rKTogQXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGNodW5rKVxuICAgICAgICAuZmlsdGVyKHBhdGggPT4gY2h1bmtbcGF0aF0gJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNodW5rW3BhdGhdLCBcInZhbHVlXCIpKVxuICAgICAgICAubWFwKHBhdGggPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY2h1bmtbcGF0aF07XG4gICAgICAgICAgICBpZiAocmVzdWx0ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IFtwYXRoXTogcmVzdWx0LnZhbHVlIH07XG4gICAgICAgIH0pO1xufVxuXG5mdW5jdGlvbiByZWR1Y2VDaHVua1ZhbHVlcyhjaHVua3M6IEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4pOiB7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0ge1xuICAgIHJldHVybiBjaHVua3MucmVkdWNlKFxuICAgICAgICAocmVzdWx0LCBjaHVuaykgPT4gKHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIC4uLmNodW5rLFxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICApO1xufVxuXG5jbGFzcyBMZWdhY3lQdWJsaWNGb3JtIGltcGxlbWVudHMgSVB1YmxpY0Zvcm0ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybTogSUxlZ2FjeUZvcm07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZm9ybTogSUxlZ2FjeUZvcm0pIHtcbiAgICAgICAgdGhpcy5mb3JtID0gZm9ybTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYmF0Y2hVcGRhdGUodXBkYXRlUHJvYzogKHVwZGF0ZUFjY2Vzc29yOiBJVXBkYXRlRm9ybU1vZGVsQWNjZXNzb3IpID0+IHZvaWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHJ1bkNoZWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RXJyb3JMb2coZXJyb3JMb2c6IFBhcnRpYWw8U2VydmVyRXJyb3JMb2c+KTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB2YWxpZGF0ZUNoaWxkcmVuQnlQYXRoKHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgX19JTlRFUk5BTF9faW1wb3J0RnJvbUVtcGxveWVlU2VydmljZSgpOiBQcm9taXNlPEVtcGxveWVlW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGltcG9ydEVtcGxveWVlcyhlbXBsb3llZXM6IEVtcGxveWVlW10sIG9wdGlvbnM/OiB7IHNjZW5hcmlvPzogc3RyaW5nIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHByaW50KHByaW50VHlwZTogUHJpbnRUeXBlLCBib2R5Pzogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuICAgIHB1YmxpYyBydW5NYXNzQWN0aW9uKGFjdGlvbklkOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBNYXNzQWN0aW9uUGFyYW1ldGVycyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QnlHSWQoZ0lkOiBzdHJpbmcsIGZpbHRlcj86IERpZ2VzdFF1ZXJ5RmlsdGVyKTogUHJvbWlzZTxQaWNrbGlzdFF1ZXJ5UmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5waWNrbGlzdHNQcm92aWRlci5nZXREaWdlc3RBcGlQaWNrbGlzdChnSWQpLnF1ZXJ5KGZpbHRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9uKGV2ZW50TmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogRXh0ZXJuYWxIb29rRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vbihbXCJmb3JtXCIsIGV2ZW50TmFtZV0sIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2ZmKGV2ZW50TmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogRXh0ZXJuYWxIb29rRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vZmYoW1wiZm9ybVwiLCBldmVudE5hbWVdLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2UocGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIGxpc3RlbmVyOiB1bmtub3duKTogU3Vic2NyaXB0aW9uIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJmb3JtLm9uTW9kZWxDaGFuZ2UoKSBpcyBub3Qgc3VwcG9ydGVkIHlldFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2F2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc2VuZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5mb3JtLmNoYW5nZVNldC5zdG9wQXV0b3NlbmQoKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS51bm1vdW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0udW5tb3VudCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc2VuZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUb3VyU3RlcHMoKTogU3RlcFtdIHtcbiAgICAgICAgLy8gRm9yIG9sZCBrZXdlYlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCkpO1xuICAgICAgICAvLyBAdHMtaWdub3JlINCt0YLQviDQsiDRgdGC0LDRgNGL0YUg0LTQstC40LbQutCw0YUg0YLRg9GCINGC0LDQutC+0Lkg0LLRi9C30L7QslxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS52YWxpZGF0b3IudmFsaWRhdGVBbGwoa2V5cyk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXRBZGRpdGlvbmFsRW1wbG95ZWVJbmZvKGZpbHRlcnM6IEdldEVtcGxveWVlTGlzdFJlcXVlc3QpOiBQcm9taXNlPEVtcGxveWVlTGlzdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbG9hZElubmVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFdvcmtpbmdFdmVudHNGb3JFbXBsb3llZShmaWx0ZXJzOiBHZXRXb3JraW5nRXZlbnRMaXN0UmVxdWVzdCk6IFByb21pc2U8V29ya2luZ0V2ZW50TGlzdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0Vycm9ycygpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb3VudCA9IHRoaXMuZm9ybS5tb2RlbC5nZXQodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290LCBcImVycm9yc0NvdW50XCIpO1xuICAgICAgICByZXR1cm4gZXJyb3JDb3VudCAhPSB1bmRlZmluZWQgJiYgZXJyb3JDb3VudCA+IDA7XG4gICAgfVxuXG4gICAgcHVibGljIG9uRXJyb3JzQ291bnRDaGFuZ2VkKGxpc3RlbmVyOiBNb2RlbEV2ZW50c0xpc3RlbmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub24obW9kZWxDaGFuZ2VFdmVudFBhdGgodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290LCBcImVycm9yc0NvdW50XCIpLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9mZkVycm9yc0NvdW50Q2hhbmdlZChsaXN0ZW5lcjogTW9kZWxFdmVudHNMaXN0ZW5lcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9mZihtb2RlbENoYW5nZUV2ZW50UGF0aCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIiksIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0KHBhdGhPck1vZGVsQ2h1bms6IHsgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9KTogdm9pZCB8IFByb21pc2U8dm9pZD47XG4gICAgcHVibGljIHNldChwYXRoT3JNb2RlbENodW5rOiBzdHJpbmcsIHZhbHVlOiBNb2RlbFZhbHVlKTogdm9pZCB8IFByb21pc2U8dm9pZD47XG4gICAgcHVibGljIHNldChcbiAgICAgICAgcGF0aE9yTW9kZWxDaHVuazogc3RyaW5nIHwgeyBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH0sXG4gICAgICAgIHZhbHVlPzogTW9kZWxWYWx1ZVxuICAgICk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgcGF0aE9yTW9kZWxDaHVuayAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgdHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgIT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgIHR5cGVvZiBwYXRoT3JNb2RlbENodW5rID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShwYXRoT3JNb2RlbENodW5rKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IGlubmVyQ2h1bmsgPSBPYmplY3Qua2V5cyhwYXRoT3JNb2RlbENodW5rKS5yZWR1Y2U8UmVhZG9ubHlNb2RlbENodW5rPihcbiAgICAgICAgICAgICAgICAocmVzdWx0LCBwYXRoKSA9PiAoeyBbcGF0aF06IHsgdmFsdWU6IHBhdGhPck1vZGVsQ2h1bmtbcGF0aF0gfSwgLi4ucmVzdWx0IH0pLFxuICAgICAgICAgICAgICAgIHt9XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB0aGlzLmZvcm0ubW9kZWwuZmlsbChpbm5lckNodW5rKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgdGhpcy5mb3JtLm1vZGVsLnNldChwYXRoT3JNb2RlbENodW5rLCBcInZhbHVlXCIsIHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImZvcm0uc2V0KCkgcGFyYW1ldGVyIHNob3VsZCBiZSBzdHJpbmcgcGF0aCBvciBvYmplY3Qgd2l0aCBwYXRoLXZhbHVlIHBhaXJzXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQocGF0aE9yQXJyYXk6IHN0cmluZyB8IHN0cmluZ1tdKTogeyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9IHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocGF0aE9yQXJyYXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMoXG4gICAgICAgICAgICAgICAgcGF0aE9yQXJyYXlcbiAgICAgICAgICAgICAgICAgICAgLm1hcChwYXRoID0+IG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayhwYXRoKSkpXG4gICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAgICAgICAgICAgICAgICAgLnJlZHVjZTxBcnJheTx7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0+PigocmVzdWx0LCBhcnJheSkgPT4gcmVzdWx0LmNvbmNhdChhcnJheSksIFtdKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgcGF0aE9yQXJyYXkgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhtYXBDaHVua1ZhbHVlcyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsocGF0aE9yQXJyYXkpKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aE9yQXJyYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QpKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybS5nZXQoKSBwYXJhbWV0ZXIgc2hvdWxkIGJlIHN0cmluZyBwYXRoIG9yIGFycmF5IG9mIHBhdGhzXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZShwYXRoOiBzdHJpbmcpOiBNb2RlbFZhbHVlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0ubW9kZWwuZ2V0KHBhdGgsIFwidmFsdWVcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHlTdWJ0cmVlKFxuICAgICAgICBzb3VyY2VCaW5kaW5nUGF0aDogQmluZGluZ1BhdGggfCBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoLFxuICAgICAgICB0YXJnZXRCaW5kaW5nUGF0aDogQmluZGluZ1BhdGggfCBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoLFxuICAgICAgICBkb05vdENvcHlQYXRocz86IHN0cmluZ1tdXG4gICAgKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEluc3RhbmNlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENoaWxkcmVuKHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXVpZEdlbmVyYXRlKCk6IHN0cmluZyB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dNb2RhbChvcHRpb25zOiBNb2RhbE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkU2VjdGlvbihvcHRpb25zOiBJbml0U2VjdGlvbkZvcm1MaWdodGJveE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FsbEluaXRTZWN0aW9uKG9wdGlvbnM6IENhbGxJbml0U2VjdGlvbkxpZ2h0Ym94UHJvcHMpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRmlhc0FwaUNsaWVudChvcHRpb25zOiBGaWFzQ2xpZW50SW5pdE9wdGlvbnMpOiBGaWFzQXBpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkVtcGxveWVlRWRpdG9yKGVtcGxveWVlSWQ6IHN0cmluZykge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZShwYXRoOiBzdHJpbmcsIGluc3RhbmNlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2VzKHBhdGg6IHN0cmluZywgaW5zdGFuY2VzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1c09uQ29udHJvbElmRXhpc3QocGF0aDogQmluZGluZ1BhdGgpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QWxsQ2hlY2tib3hlc0ZvcjExMzEwMyhlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QXV0b0ZpZWxkc1RvQXV0b1ZhbHVlKHBhdGhQcmVmaXhlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbnN1cmVJbnN0YW5jZUZ1bGx5TG9hZGVkKFxuICAgICAgICBiaW5kaW5nUGF0aDogc3RyaW5nIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgLi4uaW5zdGFuY2VzOiBzdHJpbmdbXVxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3VzdG9tTm9ybWFsaXplKG5vcm1hbGl6ZXJJZDogc3RyaW5nLCBwYXRoUHJlZml4ZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZXNCeVJ1bGVzKHJ1bGVzOiBJbnN0YW5jZXNEZWxldGluZ1J1bGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0oZm9ybTogSUZvcm0pOiBJUHVibGljRm9ybSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBuZXcgTGVnYWN5UHVibGljRm9ybShmb3JtIGFzIElMZWdhY3lGb3JtKTtcbn1cbiIsIi8vIHRzbGludDpkaXNhYmxlIG5vLXVuc2FmZS1hbnlcbmV4cG9ydCBjbGFzcyBMb2FkSW50b0RvY3VtZW50IHtcbiAgICBwdWJsaWMgc3RhdGljIHNjcmlwdCh1cmk6IHN0cmluZywgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGxldCBzY3JpcHRMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IHNjcmlwdDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcblxuICAgICAgICBmdW5jdGlvbiBsb2FkSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgICAgIGlmIChzY3JpcHRMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghc2NyaXB0LnJlYWR5U3RhdGUgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwibG9hZGVkXCIgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgICAgICAgICAgICAgIHNjcmlwdExvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmcgdGhlIHVzZXIgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNjcmlwdCBjb21wbGV0ZXMgdG8gbG9hZC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogVGhpcyBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBpbiBJRSBldmVuIHVwb24gZXJyb3IuIEluIGFueVxuICAgICAgICAvLyBjYXNlIGl0IGlzIHRoZSBjbGllbnQncyByZXNwb25zaWJpbGl0eSB0byB2ZXJpZnkgdGhhdCB0aGUgc2NyaXB0IHJhblxuICAgICAgICAvLyBzdWNjZXNzZnVsbHkuXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSBsb2FkSGFuZGxlcjtcbiAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGxvYWRIYW5kbGVyO1xuXG4gICAgICAgIC8vIEFkZCBhbiBlcnJvciBjYWxsYmFjay5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogTm90IHN1cHBvcnRlZCBpbiBJRS5cbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2NyaXB0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBzY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzY3JpcHQuXCIpKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgdGhlIHNjcmlwdCBlbGVtZW50IHRvIHRoZSBkb2N1bWVudC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogU2FmYXJpIG5ldmVyIGxvYWRzIHRoZSBzY3JpcHQgaWYgd2UgZG9uJ3Qgc2V0XG4gICAgICAgIC8vIHRoZSBzcmMgYXR0cmlidXRlIGJlZm9yZSBhcHBlbmRpbmcuXG4gICAgICAgIHNjcmlwdC5zcmMgPSB1cmk7XG4gICAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJjcm9zc29yaWdpblwiLCBcInVzZS1jcmVkZW50aWFsc1wiKTtcbiAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc3R5bGVTaGVldCh1cmk6IHN0cmluZywgaWdub3JlRXJyb3I6IGJvb2xlYW4sIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4gY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgcmVqZWN0ID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzdHlsZXNoZWV0LlwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSA/PyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcblxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcInJlbFwiLCBcInN0eWxlc2hlZXRcIik7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcInRleHQvY3NzXCIpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIHJlc29sdmUpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCByZWplY3QpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdXJpKTtcbiAgICB9XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5obWQgPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0bW9kdWxlID0gT2JqZWN0LmNyZWF0ZShtb2R1bGUpO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsICdleHBvcnRzJywge1xuXHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0c2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignRVMgTW9kdWxlcyBtYXkgbm90IGFzc2lnbiBtb2R1bGUuZXhwb3J0cyBvciBleHBvcnRzLiosIFVzZSBFU00gZXhwb3J0IHN5bnRheCwgaW5zdGVhZDogJyArIG1vZHVsZS5pZCk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG1vZHVsZTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzMpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztlQU1DQSxDQUFBLEVBSm9DQyxDQUFBO1FBQTlCLFNB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