@kontur.candy/tools 2.210.1 → 2.211.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.
- package/distr/Common/AsyncUtils.js +1 -1
- package/distr/Common/AutoValidationUtils.js +1 -1
- package/distr/Common/CandyApiClient/CandyApiClient.js +1 -1
- package/distr/Common/CandyApiClient/CandyApiClientContext.js +1 -1
- package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js +1 -1
- package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js +1 -1
- package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js +1 -1
- package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js +1 -1
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +1 -1
- package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -1
- package/distr/Common/CandyApiClient/IsBuffer.js +1 -1
- package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js +1 -1
- package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js +1 -1
- package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js +1 -1
- package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js +1 -1
- package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +1 -1
- package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js +1 -1
- package/distr/Common/CandyApiClient/Types/DraftFullId.js +1 -1
- package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js +1 -1
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolveInnerPathRequest.js +1 -1
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolvePathResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js +1 -1
- package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js +1 -1
- package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/Guid.js +1 -1
- package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js +1 -1
- package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js +1 -1
- package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js +1 -1
- package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js +1 -1
- package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js +1 -1
- package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/Print/PrintType.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js +1 -1
- package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js +1 -1
- package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js +1 -1
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js +1 -1
- package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js +1 -1
- package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js +1 -1
- package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js +1 -1
- package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js +1 -1
- package/distr/Common/CollectionUtils.js +1 -1
- package/distr/Common/CommonConstants/SectionNames.js +1 -1
- package/distr/Common/Comparers.js +1 -1
- package/distr/Common/EmotionStorybookWorkaroundViaAliases.js +1 -1
- package/distr/Common/EndPoints.js +1 -1
- package/distr/Common/Enums/ButtonSettingsTypeEnum.js +1 -1
- package/distr/Common/Errors.js +1 -1
- package/distr/Common/ExtractGFVPath/ExtractGFVPath.js +10 -1
- package/distr/Common/ExtractGFVPath/ExtractGFVPath.js.map +1 -1
- package/distr/Common/FSPrinterClient/FSPrinterClient.js +1 -1
- package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js +1 -1
- package/distr/Common/FSPrinterClient/IFSPrinterClient.js +1 -1
- package/distr/Common/FormActionHandlers/ContextualActionNames.js +1 -1
- package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js +1 -1
- package/distr/Common/FormPathUtils.js +1 -1
- package/distr/Common/Funcs.js +1 -1
- package/distr/Common/GFV.js +1 -1
- package/distr/Common/GetRngSchemaFileExtension.js +1 -1
- package/distr/Common/Hooks/UseLocalStorage.js +1 -1
- package/distr/Common/HttpClient/AuthenticationMode.js +1 -1
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js +1 -1
- package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js +1 -1
- package/distr/Common/HttpClient/FetchImplementation/Fetch.js +1 -1
- package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js +1 -1
- package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js +1 -1
- package/distr/Common/HttpClient/HttpClient.js +1 -1
- package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js +1 -1
- package/distr/Common/HttpClient/IHttpClient.js +1 -1
- package/distr/Common/IndentString.js +1 -1
- package/distr/Common/IntRangeUtils.js +1 -1
- package/distr/Common/IterableUtils.js +1 -1
- package/distr/Common/KCLangRuntimeUtils.js +1 -1
- package/distr/Common/ModelPath/AbsoluteModelFieldPath.js +1 -1
- package/distr/Common/ModelPath/BuildIterationSequence.js +1 -1
- package/distr/Common/ModelPath/EachCurrentCollision.js +1 -1
- package/distr/Common/ModelPath/IEquatable.js +1 -1
- package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js +1 -1
- package/distr/Common/ModelPath/Map/Map2.js +1 -1
- package/distr/Common/ModelPath/Map/ModelPathMap.js +1 -1
- package/distr/Common/ModelPath/ModelPath.js +1 -1
- package/distr/Common/ModelPath/ModelPathBuilder.js +1 -1
- package/distr/Common/ModelPath/ModelPathHelper.js +1 -1
- package/distr/Common/ModelPath/PathMatcher.js +1 -1
- package/distr/Common/ModelPath/PathSplitHelper.js +1 -1
- package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js +1 -1
- package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js +1 -1
- package/distr/Common/ModelPath/Set/ModelPathSet.js +1 -1
- package/distr/Common/ModelPath/Set/Set2.js +1 -1
- package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js +1 -1
- package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js +1 -1
- package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js +1 -1
- package/distr/Common/NidusClient/Fakes/FakeNidusClient.js +1 -1
- package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js +1 -1
- package/distr/Common/NidusClient/INidusClient.js +1 -1
- package/distr/Common/NidusClient/NidusClientContext.js +1 -1
- package/distr/Common/NidusClient/NidusClientImpl.js +1 -1
- package/distr/Common/PathConstants.js +1 -1
- package/distr/Common/PicklistApiClient/IPicklistApiClient.js +1 -1
- package/distr/Common/PicklistApiClient/PicklistApiClient.js +1 -1
- package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js +1 -1
- package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js +1 -1
- package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js +1 -1
- package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js +1 -1
- package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js +1 -1
- package/distr/Common/RngSchemeTypes/types.js +1 -1
- package/distr/Common/StringArrayKey.js +1 -1
- package/distr/Common/TextExtractor/TextExtractorTypes.js +1 -1
- package/distr/Common/TypingUtils.js +1 -1
- package/distr/Common/UUID.js +1 -1
- package/distr/Common/UseAsyncEffect.js +1 -1
- package/distr/Common/UseShowOnce.js +1 -1
- package/distr/Common/UseTypedSelector.js +1 -1
- package/distr/Common/WellKnownDirectories.js +1 -1
- package/distr/Common/hashUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js +1 -1
- package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js +1 -1
- package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js +1 -1
- package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +1 -1
- package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js +1 -1
- package/distr/Tools/src/BuildTasks/Engine/EngineSource.js +1 -1
- package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/EngineVersionUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/FSTask.js +1 -1
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js +1 -1
- package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +1 -1
- package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js +1 -1
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +1 -1
- package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js +1 -1
- package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js +1 -1
- package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +1 -1
- package/distr/Tools/src/BuildTasks/ReadFormSource.js +1 -1
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +1 -1
- package/distr/Tools/src/BuildTasks/Version.js +1 -1
- package/distr/Tools/src/BuildTasks/WriteFormMeta.js +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/ClearSourceMapForProduction.js +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerCandyWidgetController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/CandyWidgetDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js +1 -1
- package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js +1 -1
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js +1 -1
- package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js +1 -1
- package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js +1 -1
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +1 -1
- package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js +1 -1
- package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +1 -1
- package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js +1 -1
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/fetchfunctions/{gfv}.fetchfunctions.js +1 -2
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js +1 -1
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js +1 -1
- package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js +1 -1
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +1 -1
- package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js +1 -1
- package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +1 -1
- package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js +1 -1
- package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +1 -1
- package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js +1 -1
- package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js +1 -1
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +1 -1
- package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js +1 -1
- package/distr/Tools/src/CandyCLI.js +1 -1
- package/distr/Tools/src/CheckNodeJsVersion.js +1 -1
- package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js +1 -1
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js +1 -1
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js +1 -1
- package/distr/Tools/src/Commons/ErrorUntyped.js +1 -1
- package/distr/Tools/src/Commons/EventObject.js +1 -1
- package/distr/Tools/src/Commons/ExecUtils.js +1 -1
- package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js +1 -1
- package/distr/Tools/src/Commons/FormGlobsUtils.js +1 -1
- package/distr/Tools/src/Commons/FormLocationInfo.js +1 -1
- package/distr/Tools/src/Commons/FsUtils.js +1 -1
- package/distr/Tools/src/Commons/GetCpuLimits.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js +1 -1
- package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js +1 -1
- package/distr/Tools/src/Commons/Locks/Lock.js +1 -1
- package/distr/Tools/src/Commons/Locks/LockHandle.js +1 -1
- package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js +1 -1
- package/distr/Tools/src/Commons/Logging/ELKLogger.js +1 -1
- package/distr/Tools/src/Commons/Logging/ILogger.js +1 -1
- package/distr/Tools/src/Commons/Logging/InMemoryLogger.js +1 -1
- package/distr/Tools/src/Commons/Logging/Logger.js +1 -1
- package/distr/Tools/src/Commons/Logging/StaticLogger.js +1 -1
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js +1 -2
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +1 -1
- package/distr/Tools/src/Commons/PathPattern.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/AggregatedError.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/BuildTask.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/FixedDirectoryEntriesProducer.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/Observe.js +1 -1
- package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js +1 -1
- package/distr/Tools/src/Commons/TimingUtils.js +1 -1
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +1 -1
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +2 -2
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js.map +1 -1
- package/distr/Tools/src/GenerateReadMe.js +1 -1
- package/distr/Tools/src/Options/CandyToolOptions.js +1 -1
- package/distr/Tools/src/ReadFarmConfig.js +1 -1
- package/distr/Tools/src/SelfUpdate.js +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js +1 -1
- package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js +1 -1
- package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js +1 -1
- package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js +1 -1
- package/package.json +3 -2
|
@@ -1719,4 +1719,4 @@
|
|
|
1719
1719
|
};
|
|
1720
1720
|
var __webpack_exports__ = __webpack_require__(591);
|
|
1721
1721
|
})();
|
|
1722
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuIiwiaSIsImEiLCJlIiwiY29uY2F0IiwibnMiLCJkcmFmdElkIiwiciIsImQiLCJ0IiwiSSIsImhtZCIsIm8iLCJyZWFjdEhvdExvYWRlckdsb2JhbCIsImVudGVyTW9kdWxlIiwiZGVmYXVsdCIsInNpZ25hdHVyZSIsInJlZ2lzdGVyIiwibGVhdmVNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIl90eXBlb2YiLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJsZW5ndGgiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiU3RyaW5nIiwiTnVtYmVyIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJhcHBseSIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIl9pbmhlcml0cyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwiX3dyYXBOYXRpdmVTdXBlciIsIk1hcCIsIl9pc05hdGl2ZUZ1bmN0aW9uIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX2NvbnN0cnVjdCIsImFyZ3VtZW50cyIsInB1c2giLCJiaW5kIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJGdW5jdGlvbiIsInRvU3RyaW5nIiwiaW5kZXhPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZ2V0UHJvdG90eXBlT2YiLCJFSCIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJfX3NpZ25hdHVyZV9fIiwiQXBwbGljYXRpb25FcnJvciIsIl9FcnJvciIsIm5hbWUiLCJfX3JlYWN0c3RhbmRpbl9fcmVnZW5lcmF0ZUJ5RXZhbCIsImNvZGUiLCJldmFsIiwiRXJyb3IiLCJfQXBwbGljYXRpb25FcnJvciIsIk5vdFN1cHBvcnRlZEVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IyIiwiSW52YWxpZFByb2dyYW1TdGF0ZUVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJfQXBwbGljYXRpb25FcnJvcjQiLCJUeXBpbmdFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNSIsInJlYWN0SG90TG9hZGVyIiwidSIsImMiLCJsIiwicyIsImYiLCJrdSIsIm1lc3NhZ2UiLCJBcnJheSIsImlzQXJyYXkiLCJ0cmltIiwic2xpY2UiLCJnbG9iYWxUaGlzIiwic2VsZiIsImciLCJzZWFyY2hQYXJhbXMiLCJpdGVyYWJsZSIsImJsb2IiLCJCbG9iIiwiZm9ybURhdGEiLCJhcnJheUJ1ZmZlciIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwidGVzdCIsInRvTG93ZXJDYXNlIiwibmV4dCIsInNoaWZ0IiwiZG9uZSIsIm1hcCIsImZvckVhY2giLCJhcHBlbmQiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiX25vQm9keSIsImJvZHlVc2VkIiwiUHJvbWlzZSIsInJlamVjdCIsIm9ubG9hZCIsInJlc3VsdCIsIm9uZXJyb3IiLCJlcnJvciIsInkiLCJGaWxlUmVhZGVyIiwicmVhZEFzQXJyYXlCdWZmZXIiLCJwIiwiVWludDhBcnJheSIsImJ5dGVMZW5ndGgiLCJidWZmZXIiLCJoIiwiX2luaXRCb2R5IiwiX2JvZHlJbml0IiwiX2JvZHlUZXh0IiwiaXNQcm90b3R5cGVPZiIsIl9ib2R5QmxvYiIsIkZvcm1EYXRhIiwiX2JvZHlGb3JtRGF0YSIsIlVSTFNlYXJjaFBhcmFtcyIsIkRhdGFWaWV3IiwiX2JvZHlBcnJheUJ1ZmZlciIsImhlYWRlcnMiLCJ0eXBlIiwicmVzb2x2ZSIsImJ5dGVPZmZzZXQiLCJ0aGVuIiwidGV4dCIsImV4ZWMiLCJyZWFkQXNUZXh0IiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsImpzb24iLCJKU09OIiwicGFyc2UiLCJkZWxldGUiLCJoYXNPd25Qcm9wZXJ0eSIsImtleXMiLCJ2YWx1ZXMiLCJlbnRyaWVzIiwibSIsIl8iLCJib2R5IiwidXJsIiwiY3JlZGVudGlhbHMiLCJtZXRob2QiLCJtb2RlIiwic2lnbmFsIiwidG9VcHBlckNhc2UiLCJBYm9ydENvbnRyb2xsZXIiLCJyZWZlcnJlciIsImNhY2hlIiwicmVwbGFjZSIsIkRhdGUiLCJnZXRUaW1lIiwic3BsaXQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJ2Iiwic3RhdHVzIiwiUmFuZ2VFcnJvciIsIm9rIiwic3RhdHVzVGV4dCIsImNsb25lIiwiYiIsInJlZGlyZWN0IiwibG9jYXRpb24iLCJFIiwiRE9NRXhjZXB0aW9uIiwic3RhY2siLCJ3IiwiYWJvcnRlZCIsIlhNTEh0dHBSZXF1ZXN0IiwiYWJvcnQiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJzdWJzdHIiLCJjb25zb2xlIiwid2FybiIsInJlc3BvbnNlVVJMIiwicmVzcG9uc2UiLCJyZXNwb25zZVRleHQiLCJzZXRUaW1lb3V0Iiwib250aW1lb3V0Iiwib25hYm9ydCIsIm9wZW4iLCJocmVmIiwid2l0aENyZWRlbnRpYWxzIiwicmVzcG9uc2VUeXBlIiwiSGVhZGVycyIsInNldFJlcXVlc3RIZWFkZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZW5kIiwicG9seWZpbGwiLCJmZXRjaCIsIlJlcXVlc3QiLCJSZXNwb25zZSIsIkMiLCJrIiwiQSIsIlAiLCJPIiwiTCIsIlMiLCJCIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiVCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiaiIsIkgiLCJNIiwiRiIsIkNGIiwia2Vmb3Jtc1VybCIsIlUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJEIiwiUmVnRXhwIiwiaG9zdCIsIkciLCJzZWFyY2giLCJmaW5kIiwicmV0dXJuIiwiZnJvbSIsIngiLCJSIiwiZ2Z2IiwiZW5naW5lVmVyc2lvbiIsImVudHJ5UG9pbnQiLCJyZXNvdXJjZVpvbmUiLCJxIiwic3R5bGVTaGVldCIsInNjcmlwdCIsIk4iLCJwdWJsaWNGb3JtIiwiY2F0Y2giLCJLIiwia29udHVyRG9tYWlucyIsImF1dGhvcml6ZWQiLCJhdXRoZW50aWNhdGlvbiIsImF1dGhTaWQiLCJBdXRob3JpemF0aW9uIiwiY2F1bGRyb25BcGlVcmwiLCJpc1Rlc3RTZXJ2ZXIiLCJyZW5kZXJDYWNoaW5nRm9ySUU4Iiwibm9ybWFsaXphdGlvbk9uU2VydmVyIiwibm9ybWF0aXZlVXJsIiwic2hvd05hdmlnYXRpb25TaWRlYmFyIiwib25SZW1vdmVBdHRhY2htZW50IiwiZmVlZGJhY2tFbmFibGVkIiwiaXNEaXNhYmxlZENsZWFuRm9ybSIsImlzRGlzYWJsZWRDbG9zZUJ1dHRvbiIsImlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b24iLCJ0aGVtZSIsInRlbXBsYXRlc0FwaSIsInJlbmRlckZvcm0iLCJWIiwiVyIsInoiLCJzdGFydCIsInBhcnRpYWxSZW5kZXJpbmdGb3JJRTgiLCJwYXJzZUludCIsImNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0iLCJfQ29tbW9uX0Vycm9yc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImFyZyIsIndyYXAiLCJfaW52b2tlIiwiX19hd2FpdCIsImRlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJyZXN1bHROYW1lIiwibmV4dExvYyIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwibWFyayIsImF3cmFwIiwiQXN5bmNJdGVyYXRvciIsImFzeW5jIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzdG9wIiwicnZhbCIsImNvbXBsZXRlIiwiZmluaXNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwib3duS2V5cyIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJtb2RlbENoYW5nZUV2ZW50UGF0aCIsIm1hcENodW5rVmFsdWVzIiwicmVkdWNlQ2h1bmtWYWx1ZXMiLCJyZWR1Y2UiLCJMZWdhY3lQdWJsaWNGb3JtIiwiZm9ybSIsIl92YWxpZGF0ZUNoaWxkcmVuQnlQYXRoIiwiX0lOVEVSTkFMX19nZXRTZWxlY3RGdW5jdGlvbkZvckRpc2FibGVFbXBsb3llZUluU1MiLCJwaWNrbGlzdHNQcm92aWRlciIsImdldERpZ2VzdEFwaVBpY2tsaXN0IiwicXVlcnkiLCJldmVudE1hbmFnZXIiLCJvbiIsIm9mZiIsImNoYW5nZVNldCIsInN0b3BBdXRvc2VuZCIsInVubW91bnQiLCJtb2RlbCIsImdldENodW5rIiwic2V0dGluZ3MiLCJmb3JtUm9vdCIsInZhbGlkYXRvciIsInZhbGlkYXRlQWxsIiwiX3JlbG9hZElubmVyIiwiZmlsbCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJkb2N1bWVudEVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwic3JjIiwic2V0QXR0cmlidXRlIiwiYXBwZW5kQ2hpbGQiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJleHBvcnRzIiwiaWQiLCJsb2FkZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwid2luZG93IiwiY2hpbGRyZW4iXSwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NsaWVudERyYWZ0SW5mby9HZXRDbGllbnREcmFmdEluZm9VcmwudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvQ29tbW9uL0Vycm9ycy50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9Db21tb24vVHlwaW5nVXRpbHMudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzL3doYXR3Zy1mZXRjaC9mZXRjaC5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0Zvcm1zL0NsaWVudC9DbGllbnQudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvQ2xpZW50U2V0dGluZ3MudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvTGVnYWN5UHVibGljRm9ybS9DcmVhdGVMZWdhY3lQdWJsaWNGb3JtLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvSGVscGVycy9Mb2FkSW50b0RvY3VtZW50LnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9oYXJtb255IG1vZHVsZSBkZWNvcmF0b3IiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHJhZnRGdWxsSWQgfSBmcm9tIFwiLi4vVHlwZXMvRHJhZnRGdWxsSWRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENsaWVudERyYWZ0SW5mb1VybChkcmFmdElkOiBEcmFmdEZ1bGxJZCkge1xuICAgIC8vIE5PVEUg0K3RgtCwINGE0YPQvdC60YbQuNGPINC+0LHRitGP0LLQu9C10L3QsCDQvtGC0LTQtdC70YzQvdC+LCDQuNCx0L4g0L7QvdCwINCy0YXQvtC00LjRgiDQsiDRgdC+0YHRgtCw0LIgY2xpZW50LmpzINC4XG4gICAgLy8g0L3QtSDQtNC+0LvQttC90L4g0L/RgNC+0LjRgdGF0L7QtNC40YLRjCDRg9GC0LXQttC10LvQtdC90LjRjyBjbGllbnQuanMt0LBcbiAgICByZXR1cm4gYHYxL25zLyR7ZHJhZnRJZC5uc30vZHJhZnRzLyR7ZHJhZnRJZC5kcmFmdElkfS9jbGllbnQtZHJhZnQtaW5mb2A7XG59XG4iLCJleHBvcnQgY2xhc3MgQXBwbGljYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTm90SW1wbGVtZW50ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoXCJPcGVyYXRpb24gbm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdFN1cHBvcnRlZEVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSA/PyBcIk9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRQcm9ncmFtU3RhdGVFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCBwcm9ncmFtIHN0YXRlXCIgKyAobWVzc2FnZSAhPSB1bmRlZmluZWQgPyBcIjogXCIgKyBtZXNzYWdlIDogXCJcIikpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRBcmd1bWVudEVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGFyZ3VtZW50TmFtZTogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgbWVzc2FnZSAhPSB1bmRlZmluZWQgPyBgJHttZXNzYWdlfSAoYXJndW1lbnQ6ICR7YXJndW1lbnROYW1lfSlgIDogYEludmFsaWQgYXJndW1lbnQgdmFsdWU6ICR7YXJndW1lbnROYW1lfWBcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUeXBpbmdFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoXCJJbnZhbGlkIHR5cGluZ1wiKTtcbiAgICB9XG59XG4iLCIvKioqXG4gKiDQodGC0YDQvtCz0L7RgtC40L/QuNC30LjRgNC+0LLQsNC90L3QsNGPINC30LDQvNC10L3QsCDQtNC70Y8gQm9vbGVhbiguLi4pXG4gKiDQntCx0YvRh9C90L4g0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyBbLi4uXS5maWx0ZXIoaXNOb3ROdWxsT3JVbmRlZmluZWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGlucHV0IGlzIE5vbk51bGxhYmxlPFQ+IHtcbiAgICByZXR1cm4gaW5wdXQgIT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5VW5rbm93bkVycm9yKGVycm9yOiB1bmtub3duKTogdW5kZWZpbmVkIHwgc3RyaW5nIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICByZXR1cm4gdHlwZW9mIGVycm9yID09PSBcIm9iamVjdFwiICYmIGVycm9yPy5bXCJtZXNzYWdlXCJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlTm90TnVsbE9yVW5kZWZpbmVkPFQ+KGlucHV0OiBUKTogYXNzZXJ0cyBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgaWYgKCFpc05vdE51bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBWYWx1ZSBtdXN0IGJlIGRlZmluZWRgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub29wKCk6IHZvaWQge1xuICAgIC8vIG5vb3Bcbn1cblxuZXhwb3J0IHR5cGUgRXJyb3JGaXJzdENhbGxiYWNrPFQ+ID0gKC4uLmFyZ3M6IFtFcnJvciwgbnVsbCB8IHVuZGVmaW5lZF0gfCBbbnVsbCB8IHVuZGVmaW5lZCwgVF0gfCBbRXJyb3JdKSA9PiB2b2lkO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVqZWN0KG1lc3NhZ2U/OiBzdHJpbmcgfCBFcnJvcik6IG5ldmVyIHtcbiAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09IFwic3RyaW5nXCIgfHwgbWVzc2FnZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgPz8gXCJVbmRlZmluZWQgaXMgbm90IGFsbG93ZWRcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbWVzc2FnZTtcbiAgICB9XG59XG5cbnR5cGUgQXJyYXlPZkxlbmd0aDxUSXRlbSwgVExlbmd0aCBleHRlbmRzIG51bWJlciwgVFJlc3QgZXh0ZW5kcyBUSXRlbVtdID0gW10+ID0gVFJlc3QgZXh0ZW5kcyB7IGxlbmd0aDogVExlbmd0aCB9XG4gICAgPyBUUmVzdFxuICAgIDogQXJyYXlPZkxlbmd0aDxUSXRlbSwgVExlbmd0aCwgW1RJdGVtLCAuLi5UUmVzdF0+O1xuXG5leHBvcnQgdHlwZSBNaW5MZW5ndGhBcnJheTxUSXRlbSwgVExlbmd0aCBleHRlbmRzIG51bWJlciwgVFJlc3QgZXh0ZW5kcyBUSXRlbVtdID0gW10+ID0gVFJlc3QgZXh0ZW5kcyB7XG4gICAgbGVuZ3RoOiBUTGVuZ3RoO1xufVxuICAgID8gWy4uLlRSZXN0LCAuLi5USXRlbVtdXVxuICAgIDogTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGgsIFsuLi5UUmVzdCwgVEl0ZW1dPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbWluTGVuZ3RoOiBUTnVtXG4pOiBpdGVtcyBpcyBNaW5MZW5ndGhBcnJheTxULCBUTnVtPiB7XG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+PSBtaW5MZW5ndGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW5MZW5ndGhPclVuZGVmaW5lZDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogdW5kZWZpbmVkIHwgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIGlmIChpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbChpdGVtcywgbWluTGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVJc0FycmF5PFQ+KGl0ZW1zOiB1bmtub3duKTogVFtdIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTXVzdCBiZSBhbiBhcnJheSFgKTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1zIGFzIFRbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SGFzTGVuZ3RoPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICByZXR1cm4gaXRlbXMubGVuZ3RoID09PSBsZW5ndGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUlzTm90RW1wdHk8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSk6IGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICByZXR1cm4gaXRlbXMubGVuZ3RoID4gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SGFzQXRMZWFzdE9uZUl0ZW08VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSk6IGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICByZXR1cm4gaXRlbXMubGVuZ3RoID4gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5SXNOb3RFbXB0eTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogYXNzZXJ0cyBpdGVtcyBpcyBNaW5MZW5ndGhBcnJheTxULCAxPiB7XG4gICAgaWYgKCFhcnJheUlzTm90RW1wdHkoaXRlbXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgbXVzdCBiZSBub3QgZW1wdHlgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUhhc0xlbmd0aDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogYXNzZXJ0cyBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICBpZiAoIWFycmF5SGFzTGVuZ3RoKGl0ZW1zLCBsZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgc2hvdWxkIGhhcyBsZW5ndGggJHtsZW5ndGh9YCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWw8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGFzc2VydHMgaXRlbXMgaXMgQXJyYXlPZkxlbmd0aDxULCBUTnVtPiB7XG4gICAgaWYgKCFpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbChpdGVtcywgbGVuZ3RoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFycmF5IG11c3QgaGF2ZSBtaW5pbWFsIGxlbmd0aCAke2xlbmd0aH1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVOZXZlcihuZXZlckFyZ3VtZW50OiBuZXZlcik6IHZvaWQge1xuICAgIC8vIG5vb3Bcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFuZEdldFN0cmluZyhuZXZlckFyZ3VtZW50OiBuZXZlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke25ldmVyQXJndW1lbnR9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bkFzeW5jQWN0aW9uKGFjdGlvbjogKCkgPT4gUHJvbWlzZTx2b2lkPik6IHZvaWQge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICBhY3Rpb24oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yRW1wdHkoaW5wdXQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGlucHV0IGlzIHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dCA9PT0gXCJcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm90TnVsbE9yRW1wdHkoaW5wdXQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGlucHV0IGlzIHN0cmluZyB7XG4gICAgcmV0dXJuICFpc051bGxPckVtcHR5KGlucHV0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yV2hpdGVTcGFjZShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCk6IGlucHV0IGlzIHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiBpbnB1dCA9PSB1bmRlZmluZWQgfHwgaW5wdXQudHJpbSgpID09PSBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJpbUxhc3RTbGFzaCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybC5zbGljZSgtMSkgPT09IFwiL1wiID8gdXJsLnNsaWNlKDAsIC0xKSA6IHVybDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydElzPFQ+KHZhbHVlOiBUKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXG52YXIgZyA9XG4gICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyAmJiBzZWxmKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbCkgfHxcbiAge31cblxudmFyIHN1cHBvcnQgPSB7XG4gIHNlYXJjaFBhcmFtczogJ1VSTFNlYXJjaFBhcmFtcycgaW4gZyxcbiAgaXRlcmFibGU6ICdTeW1ib2wnIGluIGcgJiYgJ2l0ZXJhdG9yJyBpbiBTeW1ib2wsXG4gIGJsb2I6XG4gICAgJ0ZpbGVSZWFkZXInIGluIGcgJiZcbiAgICAnQmxvYicgaW4gZyAmJlxuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBCbG9iKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSkoKSxcbiAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gZyxcbiAgYXJyYXlCdWZmZXI6ICdBcnJheUJ1ZmZlcicgaW4gZ1xufVxuXG5mdW5jdGlvbiBpc0RhdGFWaWV3KG9iaikge1xuICByZXR1cm4gb2JqICYmIERhdGFWaWV3LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKG9iailcbn1cblxuaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHZpZXdDbGFzc2VzID0gW1xuICAgICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nXG4gIF1cblxuICB2YXIgaXNBcnJheUJ1ZmZlclZpZXcgPVxuICAgIEFycmF5QnVmZmVyLmlzVmlldyB8fFxuICAgIGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB2aWV3Q2xhc3Nlcy5pbmRleE9mKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopKSA+IC0xXG4gICAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVOYW1lKG5hbWUpIHtcbiAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgIG5hbWUgPSBTdHJpbmcobmFtZSlcbiAgfVxuICBpZiAoL1teYS16MC05XFwtIyQlJicqKy5eX2B8fiFdL2kudGVzdChuYW1lKSB8fCBuYW1lID09PSAnJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1lOiBcIicgKyBuYW1lICsgJ1wiJylcbiAgfVxuICByZXR1cm4gbmFtZS50b0xvd2VyQ2FzZSgpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8vIEJ1aWxkIGEgZGVzdHJ1Y3RpdmUgaXRlcmF0b3IgZm9yIHRoZSB2YWx1ZSBsaXN0XG5mdW5jdGlvbiBpdGVyYXRvckZvcihpdGVtcykge1xuICB2YXIgaXRlcmF0b3IgPSB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdmFsdWUgPSBpdGVtcy5zaGlmdCgpXG4gICAgICByZXR1cm4ge2RvbmU6IHZhbHVlID09PSB1bmRlZmluZWQsIHZhbHVlOiB2YWx1ZX1cbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICAgIGl0ZXJhdG9yW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBpdGVyYXRvclxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpdGVyYXRvclxufVxuXG5leHBvcnQgZnVuY3Rpb24gSGVhZGVycyhoZWFkZXJzKSB7XG4gIHRoaXMubWFwID0ge31cblxuICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIHZhbHVlKVxuICAgIH0sIHRoaXMpXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzKSkge1xuICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbihoZWFkZXIpIHtcbiAgICAgIGlmIChoZWFkZXIubGVuZ3RoICE9IDIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSGVhZGVycyBjb25zdHJ1Y3RvcjogZXhwZWN0ZWQgbmFtZS92YWx1ZSBwYWlyIHRvIGJlIGxlbmd0aCAyLCBmb3VuZCcgKyBoZWFkZXIubGVuZ3RoKVxuICAgICAgfVxuICAgICAgdGhpcy5hcHBlbmQoaGVhZGVyWzBdLCBoZWFkZXJbMV0pXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChoZWFkZXJzKSB7XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCBoZWFkZXJzW25hbWVdKVxuICAgIH0sIHRoaXMpXG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAgdmFsdWUgPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbiAgdmFyIG9sZFZhbHVlID0gdGhpcy5tYXBbbmFtZV1cbiAgdGhpcy5tYXBbbmFtZV0gPSBvbGRWYWx1ZSA/IG9sZFZhbHVlICsgJywgJyArIHZhbHVlIDogdmFsdWVcbn1cblxuSGVhZGVycy5wcm90b3R5cGVbJ2RlbGV0ZSddID0gZnVuY3Rpb24obmFtZSkge1xuICBkZWxldGUgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24obmFtZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICByZXR1cm4gdGhpcy5oYXMobmFtZSkgPyB0aGlzLm1hcFtuYW1lXSA6IG51bGxcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gdGhpcy5tYXAuaGFzT3duUHJvcGVydHkobm9ybWFsaXplTmFtZShuYW1lKSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV0gPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGlzQXJnKSB7XG4gIGZvciAodmFyIG5hbWUgaW4gdGhpcy5tYXApIHtcbiAgICBpZiAodGhpcy5tYXAuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdGhpcy5tYXBbbmFtZV0sIG5hbWUsIHRoaXMpXG4gICAgfVxuICB9XG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChuYW1lKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpdGVtcy5wdXNoKHZhbHVlKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChbbmFtZSwgdmFsdWVdKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbmlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gIEhlYWRlcnMucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzXG59XG5cbmZ1bmN0aW9uIGNvbnN1bWVkKGJvZHkpIHtcbiAgaWYgKGJvZHkuX25vQm9keSkgcmV0dXJuXG4gIGlmIChib2R5LmJvZHlVc2VkKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpKVxuICB9XG4gIGJvZHkuYm9keVVzZWQgPSB0cnVlXG59XG5cbmZ1bmN0aW9uIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdClcbiAgICB9XG4gICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiByZWFkQmxvYkFzQXJyYXlCdWZmZXIoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5mdW5jdGlvbiByZWFkQmxvYkFzVGV4dChibG9iKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgdmFyIG1hdGNoID0gL2NoYXJzZXQ9KFtBLVphLXowLTlfLV0rKS8uZXhlYyhibG9iLnR5cGUpXG4gIHZhciBlbmNvZGluZyA9IG1hdGNoID8gbWF0Y2hbMV0gOiAndXRmLTgnXG4gIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IsIGVuY29kaW5nKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5mdW5jdGlvbiByZWFkQXJyYXlCdWZmZXJBc1RleHQoYnVmKSB7XG4gIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKVxuICB2YXIgY2hhcnMgPSBuZXcgQXJyYXkodmlldy5sZW5ndGgpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aWV3Lmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhcnNbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHZpZXdbaV0pXG4gIH1cbiAgcmV0dXJuIGNoYXJzLmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGJ1ZmZlckNsb25lKGJ1Zikge1xuICBpZiAoYnVmLnNsaWNlKSB7XG4gICAgcmV0dXJuIGJ1Zi5zbGljZSgwKVxuICB9IGVsc2Uge1xuICAgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmLmJ5dGVMZW5ndGgpXG4gICAgdmlldy5zZXQobmV3IFVpbnQ4QXJyYXkoYnVmKSlcbiAgICByZXR1cm4gdmlldy5idWZmZXJcbiAgfVxufVxuXG5mdW5jdGlvbiBCb2R5KCkge1xuICB0aGlzLmJvZHlVc2VkID0gZmFsc2VcblxuICB0aGlzLl9pbml0Qm9keSA9IGZ1bmN0aW9uKGJvZHkpIHtcbiAgICAvKlxuICAgICAgZmV0Y2gtbW9jayB3cmFwcyB0aGUgUmVzcG9uc2Ugb2JqZWN0IGluIGFuIEVTNiBQcm94eSB0b1xuICAgICAgcHJvdmlkZSB1c2VmdWwgdGVzdCBoYXJuZXNzIGZlYXR1cmVzIHN1Y2ggYXMgZmx1c2guIEhvd2V2ZXIsIG9uXG4gICAgICBFUzUgYnJvd3NlcnMgd2l0aG91dCBmZXRjaCBvciBQcm94eSBzdXBwb3J0IHBvbGx5ZmlsbHMgbXVzdCBiZSB1c2VkO1xuICAgICAgdGhlIHByb3h5LXBvbGx5ZmlsbCBpcyB1bmFibGUgdG8gcHJveHkgYW4gYXR0cmlidXRlIHVubGVzcyBpdCBleGlzdHNcbiAgICAgIG9uIHRoZSBvYmplY3QgYmVmb3JlIHRoZSBQcm94eSBpcyBjcmVhdGVkLiBUaGlzIGNoYW5nZSBlbnN1cmVzXG4gICAgICBSZXNwb25zZS5ib2R5VXNlZCBleGlzdHMgb24gdGhlIGluc3RhbmNlLCB3aGlsZSBtYWludGFpbmluZyB0aGVcbiAgICAgIHNlbWFudGljIG9mIHNldHRpbmcgUmVxdWVzdC5ib2R5VXNlZCBpbiB0aGUgY29uc3RydWN0b3IgYmVmb3JlXG4gICAgICBfaW5pdEJvZHkgaXMgY2FsbGVkLlxuICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtYXNzaWduXG4gICAgdGhpcy5ib2R5VXNlZCA9IHRoaXMuYm9keVVzZWRcbiAgICB0aGlzLl9ib2R5SW5pdCA9IGJvZHlcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgIHRoaXMuX25vQm9keSA9IHRydWU7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9ICcnXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iICYmIEJsb2IucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlCbG9iID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5mb3JtRGF0YSAmJiBGb3JtRGF0YS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUZvcm1EYXRhID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkudG9TdHJpbmcoKVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiBzdXBwb3J0LmJsb2IgJiYgaXNEYXRhVmlldyhib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keS5idWZmZXIpXG4gICAgICAvLyBJRSAxMC0xMSBjYW4ndCBoYW5kbGUgYSBEYXRhVmlldyBib2R5LlxuICAgICAgdGhpcy5fYm9keUluaXQgPSBuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgKEFycmF5QnVmZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpIHx8IGlzQXJyYXlCdWZmZXJWaWV3KGJvZHkpKSkge1xuICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5ID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGJvZHkpXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSkge1xuICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04JylcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUJsb2IgJiYgdGhpcy5fYm9keUJsb2IudHlwZSkge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCB0aGlzLl9ib2R5QmxvYi50eXBlKVxuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04JylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgdGhpcy5ibG9iID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiByZWplY3RlZFxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QmxvYilcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIGJsb2InKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keVRleHRdKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLmFycmF5QnVmZmVyID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgdmFyIGlzQ29uc3VtZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgaWYgKGlzQ29uc3VtZWQpIHtcbiAgICAgICAgcmV0dXJuIGlzQ29uc3VtZWRcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnVmZmVyLnNsaWNlKFxuICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZU9mZnNldCArIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlTGVuZ3RoXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcilcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgICAgcmV0dXJuIHRoaXMuYmxvYigpLnRoZW4ocmVhZEJsb2JBc0FycmF5QnVmZmVyKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIGFzIEFycmF5QnVmZmVyJylcbiAgICB9XG4gIH1cblxuICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICByZXR1cm4gcmVhZEJsb2JBc1RleHQodGhpcy5fYm9keUJsb2IpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVhZEFycmF5QnVmZmVyQXNUZXh0KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5mb3JtRGF0YSkge1xuICAgIHRoaXMuZm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcbiAgICB9XG4gIH1cblxuICB0aGlzLmpzb24gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG52YXIgbWV0aG9kcyA9IFsnQ09OTkVDVCcsICdERUxFVEUnLCAnR0VUJywgJ0hFQUQnLCAnT1BUSU9OUycsICdQQVRDSCcsICdQT1NUJywgJ1BVVCcsICdUUkFDRSddXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1ldGhvZChtZXRob2QpIHtcbiAgdmFyIHVwY2FzZWQgPSBtZXRob2QudG9VcHBlckNhc2UoKVxuICByZXR1cm4gbWV0aG9kcy5pbmRleE9mKHVwY2FzZWQpID4gLTEgPyB1cGNhc2VkIDogbWV0aG9kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXF1ZXN0KGlucHV0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXF1ZXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BsZWFzZSB1c2UgdGhlIFwibmV3XCIgb3BlcmF0b3IsIHRoaXMgRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJylcbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBib2R5ID0gb3B0aW9ucy5ib2R5XG5cbiAgaWYgKGlucHV0IGluc3RhbmNlb2YgUmVxdWVzdCkge1xuICAgIGlmIChpbnB1dC5ib2R5VXNlZCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJylcbiAgICB9XG4gICAgdGhpcy51cmwgPSBpbnB1dC51cmxcbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gaW5wdXQuY3JlZGVudGlhbHNcbiAgICBpZiAoIW9wdGlvbnMuaGVhZGVycykge1xuICAgICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMoaW5wdXQuaGVhZGVycylcbiAgICB9XG4gICAgdGhpcy5tZXRob2QgPSBpbnB1dC5tZXRob2RcbiAgICB0aGlzLm1vZGUgPSBpbnB1dC5tb2RlXG4gICAgdGhpcy5zaWduYWwgPSBpbnB1dC5zaWduYWxcbiAgICBpZiAoIWJvZHkgJiYgaW5wdXQuX2JvZHlJbml0ICE9IG51bGwpIHtcbiAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXRcbiAgICAgIGlucHV0LmJvZHlVc2VkID0gdHJ1ZVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aGlzLnVybCA9IFN0cmluZyhpbnB1dClcbiAgfVxuXG4gIHRoaXMuY3JlZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzIHx8IHRoaXMuY3JlZGVudGlhbHMgfHwgJ3NhbWUtb3JpZ2luJ1xuICBpZiAob3B0aW9ucy5oZWFkZXJzIHx8ICF0aGlzLmhlYWRlcnMpIHtcbiAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gIH1cbiAgdGhpcy5tZXRob2QgPSBub3JtYWxpemVNZXRob2Qob3B0aW9ucy5tZXRob2QgfHwgdGhpcy5tZXRob2QgfHwgJ0dFVCcpXG4gIHRoaXMubW9kZSA9IG9wdGlvbnMubW9kZSB8fCB0aGlzLm1vZGUgfHwgbnVsbFxuICB0aGlzLnNpZ25hbCA9IG9wdGlvbnMuc2lnbmFsIHx8IHRoaXMuc2lnbmFsIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCdBYm9ydENvbnRyb2xsZXInIGluIGcpIHtcbiAgICAgIHZhciBjdHJsID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgcmV0dXJuIGN0cmwuc2lnbmFsO1xuICAgIH1cbiAgfSgpKTtcbiAgdGhpcy5yZWZlcnJlciA9IG51bGxcblxuICBpZiAoKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSAmJiBib2R5KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9keSBub3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMnKVxuICB9XG4gIHRoaXMuX2luaXRCb2R5KGJvZHkpXG5cbiAgaWYgKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSB7XG4gICAgaWYgKG9wdGlvbnMuY2FjaGUgPT09ICduby1zdG9yZScgfHwgb3B0aW9ucy5jYWNoZSA9PT0gJ25vLWNhY2hlJykge1xuICAgICAgLy8gU2VhcmNoIGZvciBhICdfJyBwYXJhbWV0ZXIgaW4gdGhlIHF1ZXJ5IHN0cmluZ1xuICAgICAgdmFyIHJlUGFyYW1TZWFyY2ggPSAvKFs/Jl0pXz1bXiZdKi9cbiAgICAgIGlmIChyZVBhcmFtU2VhcmNoLnRlc3QodGhpcy51cmwpKSB7XG4gICAgICAgIC8vIElmIGl0IGFscmVhZHkgZXhpc3RzIHRoZW4gc2V0IHRoZSB2YWx1ZSB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdGhpcy51cmwgPSB0aGlzLnVybC5yZXBsYWNlKHJlUGFyYW1TZWFyY2gsICckMV89JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlIGFkZCBhIG5ldyAnXycgcGFyYW1ldGVyIHRvIHRoZSBlbmQgd2l0aCB0aGUgY3VycmVudCB0aW1lXG4gICAgICAgIHZhciByZVF1ZXJ5U3RyaW5nID0gL1xcPy9cbiAgICAgICAgdGhpcy51cmwgKz0gKHJlUXVlcnlTdHJpbmcudGVzdCh0aGlzLnVybCkgPyAnJicgOiAnPycpICsgJ189JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblJlcXVlc3QucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgUmVxdWVzdCh0aGlzLCB7Ym9keTogdGhpcy5fYm9keUluaXR9KVxufVxuXG5mdW5jdGlvbiBkZWNvZGUoYm9keSkge1xuICB2YXIgZm9ybSA9IG5ldyBGb3JtRGF0YSgpXG4gIGJvZHlcbiAgICAudHJpbSgpXG4gICAgLnNwbGl0KCcmJylcbiAgICAuZm9yRWFjaChmdW5jdGlvbihieXRlcykge1xuICAgICAgaWYgKGJ5dGVzKSB7XG4gICAgICAgIHZhciBzcGxpdCA9IGJ5dGVzLnNwbGl0KCc9JylcbiAgICAgICAgdmFyIG5hbWUgPSBzcGxpdC5zaGlmdCgpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIHZhciB2YWx1ZSA9IHNwbGl0LmpvaW4oJz0nKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICBmb3JtLmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQobmFtZSksIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpXG4gICAgICB9XG4gICAgfSlcbiAgcmV0dXJuIGZvcm1cbn1cblxuZnVuY3Rpb24gcGFyc2VIZWFkZXJzKHJhd0hlYWRlcnMpIHtcbiAgdmFyIGhlYWRlcnMgPSBuZXcgSGVhZGVycygpXG4gIC8vIFJlcGxhY2UgaW5zdGFuY2VzIG9mIFxcclxcbiBhbmQgXFxuIGZvbGxvd2VkIGJ5IGF0IGxlYXN0IG9uZSBzcGFjZSBvciBob3Jpem9udGFsIHRhYiB3aXRoIGEgc3BhY2VcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjJcbiAgdmFyIHByZVByb2Nlc3NlZEhlYWRlcnMgPSByYXdIZWFkZXJzLnJlcGxhY2UoL1xccj9cXG5bXFx0IF0rL2csICcgJylcbiAgLy8gQXZvaWRpbmcgc3BsaXQgdmlhIHJlZ2V4IHRvIHdvcmsgYXJvdW5kIGEgY29tbW9uIElFMTEgYnVnIHdpdGggdGhlIGNvcmUtanMgMy42LjAgcmVnZXggcG9seWZpbGxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9mZXRjaC9pc3N1ZXMvNzQ4XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy83NTFcbiAgcHJlUHJvY2Vzc2VkSGVhZGVyc1xuICAgIC5zcGxpdCgnXFxyJylcbiAgICAubWFwKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgcmV0dXJuIGhlYWRlci5pbmRleE9mKCdcXG4nKSA9PT0gMCA/IGhlYWRlci5zdWJzdHIoMSwgaGVhZGVyLmxlbmd0aCkgOiBoZWFkZXJcbiAgICB9KVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgIHZhciBwYXJ0cyA9IGxpbmUuc3BsaXQoJzonKVxuICAgICAgdmFyIGtleSA9IHBhcnRzLnNoaWZ0KCkudHJpbSgpXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHBhcnRzLmpvaW4oJzonKS50cmltKClcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBoZWFkZXJzLmFwcGVuZChrZXksIHZhbHVlKVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUud2FybignUmVzcG9uc2UgJyArIGVycm9yLm1lc3NhZ2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gaGVhZGVyc1xufVxuXG5Cb2R5LmNhbGwoUmVxdWVzdC5wcm90b3R5cGUpXG5cbmV4cG9ydCBmdW5jdGlvbiBSZXNwb25zZShib2R5SW5pdCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVzcG9uc2UpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fVxuICB9XG5cbiAgdGhpcy50eXBlID0gJ2RlZmF1bHQnXG4gIHRoaXMuc3RhdHVzID0gb3B0aW9ucy5zdGF0dXMgPT09IHVuZGVmaW5lZCA/IDIwMCA6IG9wdGlvbnMuc3RhdHVzXG4gIGlmICh0aGlzLnN0YXR1cyA8IDIwMCB8fCB0aGlzLnN0YXR1cyA+IDU5OSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiRmFpbGVkIHRvIGNvbnN0cnVjdCAnUmVzcG9uc2UnOiBUaGUgc3RhdHVzIHByb3ZpZGVkICgwKSBpcyBvdXRzaWRlIHRoZSByYW5nZSBbMjAwLCA1OTldLlwiKVxuICB9XG4gIHRoaXMub2sgPSB0aGlzLnN0YXR1cyA+PSAyMDAgJiYgdGhpcy5zdGF0dXMgPCAzMDBcbiAgdGhpcy5zdGF0dXNUZXh0ID0gb3B0aW9ucy5zdGF0dXNUZXh0ID09PSB1bmRlZmluZWQgPyAnJyA6ICcnICsgb3B0aW9ucy5zdGF0dXNUZXh0XG4gIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgdGhpcy51cmwgPSBvcHRpb25zLnVybCB8fCAnJ1xuICB0aGlzLl9pbml0Qm9keShib2R5SW5pdClcbn1cblxuQm9keS5jYWxsKFJlc3BvbnNlLnByb3RvdHlwZSlcblxuUmVzcG9uc2UucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UodGhpcy5fYm9keUluaXQsIHtcbiAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgIHN0YXR1c1RleHQ6IHRoaXMuc3RhdHVzVGV4dCxcbiAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh0aGlzLmhlYWRlcnMpLFxuICAgIHVybDogdGhpcy51cmxcbiAgfSlcbn1cblxuUmVzcG9uc2UuZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IDIwMCwgc3RhdHVzVGV4dDogJyd9KVxuICByZXNwb25zZS5vayA9IGZhbHNlXG4gIHJlc3BvbnNlLnN0YXR1cyA9IDBcbiAgcmVzcG9uc2UudHlwZSA9ICdlcnJvcidcbiAgcmV0dXJuIHJlc3BvbnNlXG59XG5cbnZhciByZWRpcmVjdFN0YXR1c2VzID0gWzMwMSwgMzAyLCAzMDMsIDMwNywgMzA4XVxuXG5SZXNwb25zZS5yZWRpcmVjdCA9IGZ1bmN0aW9uKHVybCwgc3RhdHVzKSB7XG4gIGlmIChyZWRpcmVjdFN0YXR1c2VzLmluZGV4T2Yoc3RhdHVzKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBzdGF0dXMgY29kZScpXG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IHN0YXR1cywgaGVhZGVyczoge2xvY2F0aW9uOiB1cmx9fSlcbn1cblxuZXhwb3J0IHZhciBET01FeGNlcHRpb24gPSBnLkRPTUV4Y2VwdGlvblxudHJ5IHtcbiAgbmV3IERPTUV4Y2VwdGlvbigpXG59IGNhdGNoIChlcnIpIHtcbiAgRE9NRXhjZXB0aW9uID0gZnVuY3Rpb24obWVzc2FnZSwgbmFtZSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2VcbiAgICB0aGlzLm5hbWUgPSBuYW1lXG4gICAgdmFyIGVycm9yID0gRXJyb3IobWVzc2FnZSlcbiAgICB0aGlzLnN0YWNrID0gZXJyb3Iuc3RhY2tcbiAgfVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpXG4gIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBET01FeGNlcHRpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoKGlucHV0LCBpbml0KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KVxuXG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsICYmIHJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHJldHVybiByZWplY3QobmV3IERPTUV4Y2VwdGlvbignQWJvcnRlZCcsICdBYm9ydEVycm9yJykpXG4gICAgfVxuXG4gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpXG5cbiAgICBmdW5jdGlvbiBhYm9ydFhocigpIHtcbiAgICAgIHhoci5hYm9ydCgpXG4gICAgfVxuXG4gICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgIHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiBwYXJzZUhlYWRlcnMoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIHx8ICcnKVxuICAgICAgfVxuICAgICAgLy8gVGhpcyBjaGVjayBpZiBzcGVjaWZpY2FsbHkgZm9yIHdoZW4gYSB1c2VyIGZldGNoZXMgYSBmaWxlIGxvY2FsbHkgZnJvbSB0aGUgZmlsZSBzeXN0ZW1cbiAgICAgIC8vIE9ubHkgaWYgdGhlIHN0YXR1cyBpcyBvdXQgb2YgYSBub3JtYWwgcmFuZ2VcbiAgICAgIGlmIChyZXF1ZXN0LnVybC5pbmRleE9mKCdmaWxlOi8vJykgPT09IDAgJiYgKHhoci5zdGF0dXMgPCAyMDAgfHwgeGhyLnN0YXR1cyA+IDU5OSkpIHtcbiAgICAgICAgb3B0aW9ucy5zdGF0dXMgPSAyMDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zLnN0YXR1cyA9IHhoci5zdGF0dXM7XG4gICAgICB9XG4gICAgICBvcHRpb25zLnVybCA9ICdyZXNwb25zZVVSTCcgaW4geGhyID8geGhyLnJlc3BvbnNlVVJMIDogb3B0aW9ucy5oZWFkZXJzLmdldCgnWC1SZXF1ZXN0LVVSTCcpXG4gICAgICB2YXIgYm9keSA9ICdyZXNwb25zZScgaW4geGhyID8geGhyLnJlc3BvbnNlIDogeGhyLnJlc3BvbnNlVGV4dFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVzb2x2ZShuZXcgUmVzcG9uc2UoYm9keSwgb3B0aW9ucykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub250aW1lb3V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IHRpbWVkIG91dCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25hYm9ydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaXhVcmwodXJsKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdXJsID09PSAnJyAmJiBnLmxvY2F0aW9uLmhyZWYgPyBnLmxvY2F0aW9uLmhyZWYgOiB1cmxcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfVxuICAgIH1cblxuICAgIHhoci5vcGVuKHJlcXVlc3QubWV0aG9kLCBmaXhVcmwocmVxdWVzdC51cmwpLCB0cnVlKVxuXG4gICAgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdpbmNsdWRlJykge1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdvbWl0Jykge1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKCdyZXNwb25zZVR5cGUnIGluIHhocikge1xuICAgICAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2Jsb2InXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBzdXBwb3J0LmFycmF5QnVmZmVyXG4gICAgICApIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcidcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5pdCAmJiB0eXBlb2YgaW5pdC5oZWFkZXJzID09PSAnb2JqZWN0JyAmJiAhKGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMgfHwgKGcuSGVhZGVycyAmJiBpbml0LmhlYWRlcnMgaW5zdGFuY2VvZiBnLkhlYWRlcnMpKSkge1xuICAgICAgdmFyIG5hbWVzID0gW107XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhpbml0LmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgICBuYW1lcy5wdXNoKG5vcm1hbGl6ZU5hbWUobmFtZSkpXG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIG5vcm1hbGl6ZVZhbHVlKGluaXQuaGVhZGVyc1tuYW1lXSkpXG4gICAgICB9KVxuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgaWYgKG5hbWVzLmluZGV4T2YobmFtZSkgPT09IC0xKSB7XG4gICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAocmVxdWVzdC5zaWduYWwpIHtcbiAgICAgIHJlcXVlc3Quc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG5cbiAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gRE9ORSAoc3VjY2VzcyBvciBmYWlsdXJlKVxuICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDQpIHtcbiAgICAgICAgICByZXF1ZXN0LnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0WGhyKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLnNlbmQodHlwZW9mIHJlcXVlc3QuX2JvZHlJbml0ID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiByZXF1ZXN0Ll9ib2R5SW5pdClcbiAgfSlcbn1cblxuZmV0Y2gucG9seWZpbGwgPSB0cnVlXG5cbmlmICghZy5mZXRjaCkge1xuICBnLmZldGNoID0gZmV0Y2hcbiAgZy5IZWFkZXJzID0gSGVhZGVyc1xuICBnLlJlcXVlc3QgPSBSZXF1ZXN0XG4gIGcuUmVzcG9uc2UgPSBSZXNwb25zZVxufVxuIiwiLyogdHNsaW50OmRpc2FibGU6bm8tbnVsbC1rZXl3b3JkIG5vLWFueSBuby11bnNhZmUtYW55ICovXG5pbXBvcnQgeyBmZXRjaCB9IGZyb20gXCJ3aGF0d2ctZmV0Y2hcIjtcbmltcG9ydCB7IEFsbEljb25OYW1lcyB9IGZyb20gXCJyZWFjdC11aVwiO1xuXG5pbXBvcnQgeyBFcnJvckZpcnN0Q2FsbGJhY2ssIHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB7IExvYWRJbnRvRG9jdW1lbnQgfSBmcm9tIFwiLi4vLi4vSGVscGVycy9Mb2FkSW50b0RvY3VtZW50XCI7XG5pbXBvcnQgdHlwZSB7IElQdWJsaWNGb3JtIH0gZnJvbSBcIi4uL1B1YmxpY0Zvcm0vSVB1YmxpY0Zvcm1cIjtcbmltcG9ydCB0eXBlIHsgSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50IH0gZnJvbSBcIi4uL1R5cGVzL0lLZVdlYlRlbXBsYXRlc0FwaUNsaWVudFwiO1xuaW1wb3J0IHR5cGUgeyBDbGllbnREcmFmdEluZm9SZXNwb25zZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvQ2xpZW50RHJhZnRJbmZvL0NsaWVudERyYWZ0SW5mb1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBnZXRDbGllbnREcmFmdEluZm9VcmwgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NsaWVudERyYWZ0SW5mby9HZXRDbGllbnREcmFmdEluZm9VcmxcIjtcbmltcG9ydCB7IEFVT09wdGlvbnMgfSBmcm9tIFwiLi4vVHlwZXMvQVVPT3B0aW9uc1wiO1xuaW1wb3J0IHR5cGUgeyBMYXlvdXRFdmVudHNTdGF0aWMgfSBmcm9tIFwiLi4vLi4vQ29udHJvbHMvSW50ZXJuYWxzL0xheW91dEV2ZW50cy9MYXlvdXRFdmVudHNcIjtcblxuaW1wb3J0IHsgY2xpZW50U2V0dGluZ3MgfSBmcm9tIFwiLi9DbGllbnRTZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlTGVnYWN5UHVibGljRm9ybSB9IGZyb20gXCIuL0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybVwiO1xuXG50eXBlIEZvcm1Db250YWluZXIgPSBzdHJpbmcgfCBIVE1MRWxlbWVudDtcblxudHlwZSBFbmdpbmVFbnRyeVBvaW50ID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25EZXNjcmlwdGlvbiB7XG4gICAgaWNvbjogQWxsSWNvbk5hbWVzO1xuICAgIHRleHQ/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcbiAgICBvbkNsaWNrOiAoKSA9PiB2b2lkO1xuICAgIGhpbnQ/OiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aWQ/OiBzdHJpbmc7XG4gICAgd2VpZ2h0OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBSZW5kZXJGb3JtU2V0dGluZ3Mge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGVuZ2luZVZlcnNpb24/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgcmVuZGVyRm9ybTogdW5kZWZpbmVkIHwgRW5naW5lRW50cnlQb2ludDtcbiAgICB0ZW1wbGF0ZXNBcGk/OiBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQ7XG4gICAgcGFuZWxBY3Rpb25zPzogQWN0aW9uRGVzY3JpcHRpb25bXTtcbn1cblxudHlwZSBTdGFydEZvcm1GdW5jID0gKHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLCBleHRlbmRlZFNldHRpbmdzOiBSZW5kZXJGb3JtU2V0dGluZ3MpID0+IFByb21pc2U8SUZvcm0+O1xuXG5pbnRlcmZhY2UgQ2FuZHlHbG9iYWxJbmplY3RlZFZhciB7XG4gICAgc3RhcnQ6IChwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lciwgb3B0aW9uczogU3RhcnRGb3JtT3B0aW9ucywgY2FsbGJhY2s/OiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+KSA9PiB2b2lkO1xuICAgIGtlZm9ybXNVcmw/OiBzdHJpbmc7XG4gICAgcGFydGlhbFJlbmRlcmluZ0ZvcklFODogYm9vbGVhbjtcbiAgICBlbnRyeVBvaW50OiB7IFtrZXk6IHN0cmluZ106IFN0YXJ0Rm9ybUZ1bmMgfTtcbiAgICBsb2FkRXJyb3I/OiB1bmtub3duO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgICAgIENGOiBDYW5keUdsb2JhbEluamVjdGVkVmFyO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlXG4gICAgbmFtZXNwYWNlIE5vZGVKUyB7XG4gICAgICAgIGludGVyZmFjZSBHbG9iYWwge1xuICAgICAgICAgICAgQ0Y6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmRlY2xhcmUgY29uc3QgZ2xvYmFsOiBXaW5kb3c7XG5cbmZ1bmN0aW9uIGRlZmF1bHRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAvKiBlbXB0eSAqL1xufVxuXG5mdW5jdGlvbiBwYXJzZUJvb2wodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHVybChyZWxhdGl2ZVVybDogc3RyaW5nID0gXCJcIik6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZVVybCA9IGdsb2JhbC5DRi5rZWZvcm1zVXJsIHx8IFwiXCI7XG5cbiAgICByZXR1cm4gYCR7YmFzZVVybH0vJHtyZWxhdGl2ZVVybH1gLnJlcGxhY2UoLyhbXjpdKVxcL3syLH0vZywgXCIkMS9cIik7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkVXJsKHBhdGg6IHN0cmluZywgcGFyYW1zOiB7IFtwYXJhbU5hbWU6IHN0cmluZ106IHVuZGVmaW5lZCB8IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgICBpZiAocGFyYW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIGNvbnN0IHF1ZXJ5UGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBwYXJhbU5hbWUgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xuICAgICAgICBjb25zdCBwYXJhbVZhbHVlID0gcGFyYW1zW3BhcmFtTmFtZV07XG4gICAgICAgIGlmIChwYXJhbVZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcXVlcnlQYXJ0cy5wdXNoKGAke3BhcmFtTmFtZX09JHtlbmNvZGVVUklDb21wb25lbnQocGFyYW1WYWx1ZSl9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHF1ZXJ5UGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aCArIFwiP1wiICsgcXVlcnlQYXJ0cy5qb2luKFwiJlwiKTtcbn1cblxuZnVuY3Rpb24gaXNBbGxvd2VkKGRvbWFpbnM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGBeKD86JHtkb21haW5zLnJlcGxhY2UoL1xcLi9nLCBcIlxcXFwuXCIpLnJlcGxhY2UoL1xcKi9nLCBcIlthLXowLTktLl9dK1wiKX0pJGApLnRlc3QoXG4gICAgICAgIGdsb2JhbC5sb2NhdGlvbi5ob3N0XG4gICAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyYW1ldGVyQnlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKGdsb2JhbC5sb2NhdGlvbi5zZWFyY2hcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5yZXBsYWNlKC9eKFxcP3wjfCYpLywgXCJcIilcbiAgICAgICAgICAgIC5zcGxpdChcIiZcIilcbiAgICAgICAgICAgIC5tYXAocGFyYW0gPT4gcGFyYW0ucmVwbGFjZSgvXFwrL2csIFwiIFwiKS5zcGxpdChcIj1cIikubWFwKGRlY29kZVVSSUNvbXBvbmVudCkpXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dHJpcGxlLWVxdWFsc1xuICAgICAgICAgICAgLmZpbmQoKFtrZXldKSA9PiBrZXkgPT0gbmFtZSkgfHwgW10pWzFdXG4gICAgKTtcbn1cblxudHlwZSBUYXNrID0gKGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCkgPT4gdm9pZDtcblxuZnVuY3Rpb24gcnVuUGFyYWxsZWwodGFza3M6IFRhc2tbXSwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgbGV0IGNvbXBsZXRlZCA9IDA7XG5cbiAgICB0YXNrcy5mb3JFYWNoKHRhc2sgPT4ge1xuICAgICAgICB0YXNrKGVycm9yID0+IHtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRhc2tzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wbGV0ZWQgKz0gMTtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5pbnRlcmZhY2UgU3RhcnRGb3JtU2V0dGluZyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZW5naW5lVmVyc2lvbj86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW5naW5lVmVyc2lvbkdyZWF0ZXJUaGFuT3JFcXVhbChsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBsZWZ0TnVtYmVycyA9IGxlZnRcbiAgICAgICAgICAgIC5zcGxpdChcIi5cIilcbiAgICAgICAgICAgIC5zbGljZSgwLCAzKVxuICAgICAgICAgICAgLm1hcCh4ID0+IHBhcnNlSW50KHgsIDEwKSk7XG4gICAgICAgIGNvbnN0IHJpZ2h0TnVtYmVycyA9IHJpZ2h0XG4gICAgICAgICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICAuc2xpY2UoMCwgMylcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXJzZUludCh4LCAxMCkpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKGxlZnROdW1iZXJzWzBdID8/IDApID4gKHJpZ2h0TnVtYmVyc1swXSA/PyAwKSB8fFxuICAgICAgICAgICAgKChsZWZ0TnVtYmVyc1swXSA/PyAwKSA9PT0gKHJpZ2h0TnVtYmVyc1swXSA/PyAwKSAmJlxuICAgICAgICAgICAgICAgICgobGVmdE51bWJlcnNbMV0gPz8gMCkgPiAocmlnaHROdW1iZXJzWzFdID8/IDApIHx8XG4gICAgICAgICAgICAgICAgICAgICgobGVmdE51bWJlcnNbMV0gPz8gMCkgPT09IChyaWdodE51bWJlcnNbMV0gPz8gMCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZWZ0TnVtYmVyc1syXSA/PyAwKSA+PSAocmlnaHROdW1iZXJzWzJdID8/IDApKSkpXG4gICAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGxvYWRGb3JtKHNldHRpbmdzOiBTdGFydEZvcm1TZXR0aW5nLCBjYWxsYmFjazogKGVycm9yPzogbnVsbCB8IHVuZGVmaW5lZCB8IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgeyBnZnYsIGVuZ2luZVZlcnNpb24gfSA9IHNldHRpbmdzO1xuXG4gICAgaWYgKGdsb2JhbC5DRi5lbnRyeVBvaW50W2dmdl0pIHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpc05lZWRFbmdpbmUgPSBlbmdpbmVWZXJzaW9uICYmICFnbG9iYWxbZW5naW5lVmVyc2lvbl07XG4gICAgY29uc3Qgbm9TdHlsZXNGb3JHZnYgPSBmYWxzZTsgLy8gZW5naW5lVmVyc2lvbiAhPSB1bmRlZmluZWQgJiYgKGlzRW5naW5lVmVyc2lvbkdyZWF0ZXJUaGFuT3JFcXVhbChlbmdpbmVWZXJzaW9uLCBcIjQuMjE0LjBcIikgfHwgZW5naW5lVmVyc2lvbiA9PT0gXCJsb2NhbFwiKTtcbiAgICBjb25zdCBuZWVkTG9hZFN0eWxlc0ZvckdmdiA9ICFub1N0eWxlc0ZvckdmdjtcbiAgICBjb25zdCBtaW4gPSBnZXRQYXJhbWV0ZXJCeU5hbWUoXCJkZWJ1Z1wiKSA9PT0gXCJ0cnVlXCIgPyBcIlwiIDogXCIubWluXCI7XG4gICAgY29uc3QgdGFza3M6IFRhc2tbXSA9IFtdO1xuXG4gICAgY29uc3QgcGFyYW1zID0geyByZXNvdXJjZVpvbmU6IHNldHRpbmdzLnJlc291cmNlWm9uZSB9O1xuICAgIGlmIChuZWVkTG9hZFN0eWxlc0Zvckdmdikge1xuICAgICAgICB0YXNrcy5wdXNoKGNiID0+XG4gICAgICAgICAgICBMb2FkSW50b0RvY3VtZW50LnN0eWxlU2hlZXQodXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3N0eWxlcy8ke2dmdn0ke21pbn0uY3NzYCwgcGFyYW1zKSksIHRydWUsIGNiKVxuICAgICAgICApO1xuICAgIH1cbiAgICB0YXNrcy5wdXNoKGNiID0+IExvYWRJbnRvRG9jdW1lbnQuc2NyaXB0KHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zY3JpcHRzLyR7Z2Z2fSR7bWlufS5qc2AsIHBhcmFtcykpLCBjYikpO1xuXG4gICAgaWYgKGlzTmVlZEVuZ2luZSkge1xuICAgICAgICB0YXNrcy5wdXNoKFxuICAgICAgICAgICAgY2IgPT5cbiAgICAgICAgICAgICAgICBMb2FkSW50b0RvY3VtZW50LnN0eWxlU2hlZXQoXG4gICAgICAgICAgICAgICAgICAgIHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zdHlsZXMvY2FuZHlfJHtlbmdpbmVWZXJzaW9ufSR7bWlufS5jc3NgLCBwYXJhbXMpKSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNiXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNiID0+XG4gICAgICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zY3JpcHQoXG4gICAgICAgICAgICAgICAgICAgIHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zY3JpcHRzL2NhbmR5XyR7ZW5naW5lVmVyc2lvbn0ke21pbn0uanNgLCBwYXJhbXMpKSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcnVuUGFyYWxsZWwodGFza3MsIGNhbGxiYWNrKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRm9ybShcbiAgICBwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lcixcbiAgICBleHRlbmRlZFNldHRpbmdzOiBSZW5kZXJGb3JtU2V0dGluZ3MsXG4gICAgY2FsbGJhY2s6IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT5cbik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1FbnRyeVBvaW50ID1cbiAgICAgICAgZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZXh0ZW5kZWRTZXR0aW5ncy5nZnZdID8/IHJlamVjdChgRm9ybSBlbnRyeSBwb2ludCAke2V4dGVuZGVkU2V0dGluZ3MuZ2Z2fSBub3QgZm91bmQuYCk7XG4gICAgZm9ybUVudHJ5UG9pbnQocGFnZUNvbnRlbnQsIGV4dGVuZGVkU2V0dGluZ3MpXG4gICAgICAgIC50aGVuKGZvcm0gPT4ge1xuICAgICAgICAgICAgY29uc3QgcHVibGljRm9ybSA9IGZvcm0ucHVibGljRm9ybSB8fCBjcmVhdGVMZWdhY3lQdWJsaWNGb3JtKGZvcm0pO1xuXG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCBwdWJsaWNGb3JtKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNhbGxiYWNrKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFydEZvcm1PcHRpb25zIGV4dGVuZHMgUGFydGlhbDxBVU9PcHRpb25zPiB7XG4gICAgbnM6IHN0cmluZztcbiAgICBkcmFmdElkOiBzdHJpbmc7XG4gICAgZ2Z2Pzogc3RyaW5nO1xuICAgIHJlc291cmNlWm9uZT86IHN0cmluZztcbiAgICB0ZW1wbGF0ZXNBcGk/OiBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQ7XG4gICAgZmVlZGJhY2tFbmFibGVkPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xvc2VCdXR0b24/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b24/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRDbGVhbkZvcm0/OiBib29sZWFuO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICBhdXRoZW50aWNhdGlvbj86IFwiYnJvd3Nlci1jcmVkZW50aWFscy1pbmNsdWRlXCIgfCB7IGF1dGhTaWQ6IHN0cmluZyB9O1xuICAgIGZldGNoPzogdHlwZW9mIGZldGNoO1xuICAgIG1vZGVsPzogeyBbcGF0aDogc3RyaW5nXTogdW5rbm93biB9O1xuICAgIHBhbmVsQWN0aW9ucz86IEFjdGlvbkRlc2NyaXB0aW9uW107XG4gICAgZXZlbnRFbWl0dGVyPzogTGF5b3V0RXZlbnRzU3RhdGljO1xuICAgIGVtcGxveWVySWQ/OiBzdHJpbmc7XG4gICAgc2hvd05hdmlnYXRpb25TaWRlYmFyPzogYm9vbGVhbjtcbiAgICBvblJlbW92ZUF0dGFjaG1lbnQ/OiAoKSA9PiB2b2lkO1xufVxuXG5mdW5jdGlvbiBnZXRFbmdpbmVFbnRyeVBvaW50KGVuZ2luZVZlcnNpb246IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmcpOiB1bmRlZmluZWQgfCBFbmdpbmVFbnRyeVBvaW50IHtcbiAgICBpZiAoZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIGdsb2JhbFtlbmdpbmVWZXJzaW9uXSAmJiBnbG9iYWxbZW5naW5lVmVyc2lvbl0uZGVmYXVsdDtcbn1cblxuZnVuY3Rpb24gc3RhcnQoXG4gICAgcGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsXG4gICAgb3B0aW9uczogU3RhcnRGb3JtT3B0aW9ucyxcbiAgICBjYWxsYmFjazogRXJyb3JGaXJzdENhbGxiYWNrPElQdWJsaWNGb3JtPiA9IGRlZmF1bHRDYWxsYmFja1xuKTogdm9pZCB7XG4gICAgbGV0IGVycm9yID0gbnVsbDtcbiAgICBjb25zdCB7IG5zLCBkcmFmdElkIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKCFpc0FsbG93ZWQoY2xpZW50U2V0dGluZ3Mua29udHVyRG9tYWlucykpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJkb21haW4udW50cnVzdGVkXCIpO1xuICAgIH0gZWxzZSBpZiAoIWNsaWVudFNldHRpbmdzLmF1dGhvcml6ZWQpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJ1c2VyLnVuYXV0aGVudGljYXRlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFkcmFmdElkKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwib3B0aW9ucy5kcmFmdElkIGlzIHJlcXVpcmVkXCIpO1xuICAgIH0gZWxzZSBpZiAoIW5zKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwib3B0aW9ucy5ucyBpcyByZXF1aXJlZFwiKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb3VyY2Vab25lID0gb3B0aW9ucy5yZXNvdXJjZVpvbmUgPz8gZ2V0UGFyYW1ldGVyQnlOYW1lKFwicmVzb3VyY2Vab25lXCIpO1xuICAgIGNvbnN0IGNsaWVudERyYWZ0VXJsID0gYnVpbGRVcmwodXJsKGdldENsaWVudERyYWZ0SW5mb1VybCh7IG5zOiBucywgZHJhZnRJZDogZHJhZnRJZCB9KSksIHtcbiAgICAgICAgcmVzb3VyY2Vab25lOiByZXNvdXJjZVpvbmUsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQgPSB7IG1ldGhvZDogXCJHRVRcIiB9O1xuICAgIGlmIChvcHRpb25zLmF1dGhlbnRpY2F0aW9uID09IHVuZGVmaW5lZCB8fCBvcHRpb25zLmF1dGhlbnRpY2F0aW9uID09PSBcImJyb3dzZXItY3JlZGVudGlhbHMtaW5jbHVkZVwiKSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJpbmNsdWRlXCI7XG4gICAgfSBlbHNlIGlmIChcImF1dGhTaWRcIiBpbiBvcHRpb25zLmF1dGhlbnRpY2F0aW9uICYmIG9wdGlvbnMuYXV0aGVudGljYXRpb24uYXV0aFNpZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuY3JlZGVudGlhbHMgPSBcIm9taXRcIjtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuaGVhZGVycyA9IHJlcXVlc3RPcHRpb25zLmhlYWRlcnMgPz8ge307XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmhlYWRlcnNbXCJBdXRob3JpemF0aW9uXCJdID0gYEFVVEguU0lEICR7b3B0aW9ucy5hdXRoZW50aWNhdGlvbi5hdXRoU2lkfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuY3JlZGVudGlhbHMgPSBcIm9taXRcIjtcbiAgICB9XG4gICAgY29uc3QgZmV0Y2hJbXBsID0gb3B0aW9ucy5mZXRjaCA/PyBmZXRjaDtcblxuICAgIGZldGNoSW1wbChjbGllbnREcmFmdFVybCwgcmVxdWVzdE9wdGlvbnMpXG4gICAgICAgIC50aGVuKHggPT4geC5qc29uKCkpXG4gICAgICAgIC50aGVuKChjbGllbnREcmFmdEluZm86IENsaWVudERyYWZ0SW5mb1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBnZnYgPSBjbGllbnREcmFmdEluZm8uZ2Z2O1xuICAgICAgICAgICAgY29uc3QgZW5naW5lVmVyc2lvbiA9IGNsaWVudERyYWZ0SW5mby5lbmdpbmVWZXJzaW9uO1xuICAgICAgICAgICAgY29uc3QgZXh0ZW5kZWRTZXR0aW5ncyA9IHtcbiAgICAgICAgICAgICAgICBhdXRob3JpemVkOiBjbGllbnRTZXR0aW5ncy5hdXRob3JpemVkLFxuICAgICAgICAgICAgICAgIGNhdWxkcm9uQXBpVXJsOiBjbGllbnRTZXR0aW5ncy5jYXVsZHJvbkFwaVVybCxcbiAgICAgICAgICAgICAgICBpc1Rlc3RTZXJ2ZXI6IGNsaWVudFNldHRpbmdzLmlzVGVzdFNlcnZlcixcbiAgICAgICAgICAgICAgICByZW5kZXJDYWNoaW5nRm9ySUU4OiBjbGllbnRTZXR0aW5ncy5yZW5kZXJDYWNoaW5nRm9ySUU4LFxuICAgICAgICAgICAgICAgIG5vcm1hbGl6YXRpb25PblNlcnZlcjogY2xpZW50U2V0dGluZ3Mubm9ybWFsaXphdGlvbk9uU2VydmVyLFxuICAgICAgICAgICAgICAgIG5vcm1hdGl2ZVVybDogY2xpZW50U2V0dGluZ3Mubm9ybWF0aXZlVXJsLFxuICAgICAgICAgICAgICAgIGtvbnR1ckRvbWFpbnM6IGNsaWVudFNldHRpbmdzLmtvbnR1ckRvbWFpbnMsXG4gICAgICAgICAgICAgICAgc2hvd05hdmlnYXRpb25TaWRlYmFyOiBvcHRpb25zLnNob3dOYXZpZ2F0aW9uU2lkZWJhciA/PyB0cnVlLFxuICAgICAgICAgICAgICAgIG9uUmVtb3ZlQXR0YWNobWVudDogb3B0aW9ucy5vblJlbW92ZUF0dGFjaG1lbnQsXG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAuLi5jbGllbnREcmFmdEluZm8sXG4gICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvbjogZW5naW5lVmVyc2lvbixcbiAgICAgICAgICAgICAgICBmZWVkYmFja0VuYWJsZWQ6IG9wdGlvbnMuZmVlZGJhY2tFbmFibGVkID8/IGNsaWVudERyYWZ0SW5mby5mZWVkYmFja0VuYWJsZWQsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsZWFuRm9ybTogb3B0aW9ucy5pc0Rpc2FibGVkQ2xlYW5Gb3JtID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbG9zZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VCdXR0b24gPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbG9hZEZvcm0oXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBnZnY6IGV4dGVuZGVkU2V0dGluZ3MuZ2Z2LFxuICAgICAgICAgICAgICAgICAgICBlbmdpbmVWZXJzaW9uOiBleHRlbmRlZFNldHRpbmdzLmVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogZXh0ZW5kZWRTZXR0aW5ncy5yZXNvdXJjZVpvbmUsXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lOiBleHRlbmRlZFNldHRpbmdzLnRoZW1lLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9hZEVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRFcnJvciB8fCAhZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZ2Z2XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKGBkeW5hbWljIGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3IgZ2Z2ICR7Z2Z2fWApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW5kZXIgPSBnZXRFbmdpbmVFbnRyeVBvaW50KGVuZ2luZVZlcnNpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlQ29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5leHRlbmRlZFNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlc0FwaTogb3B0aW9ucy50ZW1wbGF0ZXNBcGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyRm9ybTogcmVuZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNhbGxiYWNrKTtcbn1cblxuY29uc3QgQ2FuZHlDbGllbnRFeHBvcnRzOiBDYW5keUdsb2JhbEluamVjdGVkVmFyID0ge1xuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBlbnRyeVBvaW50OiB7fSxcbiAgICBwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4OiBwYXJzZUJvb2woXCJ7cGFydGlhbFJlbmRlcmluZ0ZvcklFOH1cIiksXG4gICAga2Vmb3Jtc1VybDogXCJ7a2Vmb3Jtc1VybH1cIixcbn07XG5cbmdsb2JhbC5DRiA9IENhbmR5Q2xpZW50RXhwb3J0cztcblxuZXhwb3J0IHsgQ2FuZHlDbGllbnRFeHBvcnRzIH07XG4iLCJmdW5jdGlvbiBwYXJzZUJvb2wodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG59XG5cbmV4cG9ydCBjb25zdCBjbGllbnRTZXR0aW5ncyA9IHtcbiAgICBhdXRob3JpemVkOiBwYXJzZUJvb2woXCJ7YXV0aG9yaXplZH1cIiksXG4gICAgY2F1bGRyb25BcGlVcmw6IFwie2NhdWxkcm9uQXBpVXJsfVwiLFxuICAgIGlzVGVzdFNlcnZlcjogcGFyc2VCb29sKFwie2lzVGVzdFNlcnZlcn1cIiksXG4gICAgcmVuZGVyQ2FjaGluZ0ZvcklFODogcGFyc2VCb29sKFwie3JlbmRlckNhY2hpbmdGb3JJRTh9XCIpLFxuICAgIG5vcm1hbGl6YXRpb25PblNlcnZlcjogcGFyc2VCb29sKFwie25vcm1hbGl6YXRpb25PblNlcnZlcn1cIiksXG4gICAgbm9ybWF0aXZlVXJsOiBcIntub3JtYXRpdmVVcmx9XCIsXG4gICAga29udHVyRG9tYWluczogXCJ7a29udHVyRG9tYWluc31cIixcbn07XG4iLCJpbXBvcnQge1xuICAgIEVtcGxveWVlLFxuICAgIEVtcGxveWVlTGlzdCxcbiAgICBHZXRFbXBsb3llZXNXaXRoQWN0aXZlUGVyaW9kUXVlcnksXG4gICAgR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QsXG4gICAgTWF0Y2hFbXBsb3llZVJlcXVlc3QsXG4gICAgTWF0Y2hFbXBsb3llZVJlc3BvbnNlLFxuICAgIE1lcmdlUmVsYXRpdmVSZXNwb25zZSxcbiAgICBQYXRjaFJlbGF0aXZlUmVzcG9uc2UsXG4gICAgV29ya2luZ0V2ZW50TGlzdCxcbn0gZnJvbSBcIkBza2Jrb250dXIvc3RhZmYtc2VsZWN0b3Itd2lkZ2V0XCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwiRW5naW5lL3NyYy9FbmdpbmUvRm9ybS9Nb2RlbENoYW5nZUV2ZW50TGlzdGVuZXJcIjtcblxuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vRXJyb3JzXCI7XG5pbXBvcnQgdHlwZSB7IFN0ZXAgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvRm9ybVBhcnRzL1RvdXIvVG91clR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9FcnJvckxvZy9TZXJ2ZXJFcnJvckxvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nUGF0aCwgTW9kZWxWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Db3JlVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZXJuYWxIb29rRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvRXZlbnRNYW5hZ2VtZW50L0V4dGVybmFsRXZlbnRzL0V4dGVybmFsSG9va0Z1bmN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWRvbmx5TW9kZWxDaHVuayB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Nb2RlbFN0b3JpbmcvTW9kZWxDaHVua1wiO1xuaW1wb3J0IHR5cGUgeyBQaWNrbGlzdFF1ZXJ5UmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvUGlja2xpc3RzL1BpY2tsaXN0VHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB0eXBlIHsgSVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi4vLi4vUHVibGljRm9ybS9JUHVibGljRm9ybVwiO1xuaW1wb3J0IHsgTW9kZWxFdmVudHNMaXN0ZW5lciB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9FdmVudE1hbmFnZW1lbnQvTW9kZWxFdmVudHMvTW9kZWxFdmVudFwiO1xuaW1wb3J0IHsgRGlnZXN0UXVlcnlGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0RpZ2VzdEFwaUNsaWVudC9UeXBlcy9EaWdlc3RRdWVyeUZpbHRlclwiO1xuaW1wb3J0IHsgSVVwZGF0ZUZvcm1Nb2RlbEFjY2Vzc29yIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtTW9kZWxBY2Nlc3NvclwiO1xuaW1wb3J0IHsgTW9kYWxPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL01vZGFsTWFuYWdlci9JTW9kYWxTdGF0ZVwiO1xuaW1wb3J0IHsgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vTW9kZWxQYXRoL01vZGVsUGF0aFwiO1xuaW1wb3J0IHtcbiAgICBDYWxsSW5pdFNlY3Rpb25MaWdodGJveFByb3BzLFxuICAgIEluaXRTZWN0aW9uRm9ybUxpZ2h0Ym94T3B0aW9ucyxcbiAgICBQcmVmZXJyZWRJbnRlcmRvY3VtZW50VHJhbnNmZXJQcm9wcyxcbn0gZnJvbSBcIi4uLy4uL1B1YmxpY0Zvcm0vSW5pdFNlY3Rpb25MaWdodGJveFwiO1xuaW1wb3J0IHsgTWFzc0FjdGlvblBhcmFtZXRlcnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL01hc3NBY3Rpb25zL01hc3NBY3Rpb25QYXJhbWV0ZXJzXCI7XG5pbXBvcnQgeyBQcmludFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL1ByaW50L1ByaW50VHlwZVwiO1xuaW1wb3J0IHsgRmlhc0FwaSwgRmlhc0NsaWVudEluaXRPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xzL1ZhbHVlRWRpdG9ycy9GaWFzL0ZpYXNJbnB1dC9GaWFzQXBpXCI7XG5pbXBvcnQgeyBJbnN0YW5jZXNEZWxldGluZ1J1bGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0luc3RhbmNlc0RlbGV0aW5nL0luc3RhbmNlc0RlbGV0aW5nUnVsZVwiO1xuaW1wb3J0IHsgQ29tYmluZUZ1ZlJlc3VsdCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvRHJhZnRBY3Rpb25zL0NvbWJpbmVGdWZSZXN1bHRcIjtcbmltcG9ydCB7IElDYW5keUNvbXBvbmVudEhhbmRsZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Db21wb25lbnRIYW5kbGVSZWdpc3RyeS9JQ2FuZHlDb21wb25lbnRIYW5kbGVcIjtcbmltcG9ydCB7IE5hdmlnYXRpb25QYXRoTWFwcGVyIH0gZnJvbSBcIi4uLy4uL0luamVjdGFibGVNb2R1bGVzL0luamVjdGFibGVFbmdpbmVNb2R1bGVzXCI7XG5pbXBvcnQge1xuICAgIEVtcGxveWVyTm9ybWFsaXplZFRhZyxcbiAgICBJbXBvcnRFbXBsb3llckRvY3VtZW50c09wdGlvbnMsXG59IGZyb20gXCIuLi8uLi8uLi9TdGFmZlNlcnZpY2VJbnRlZ3JhdGlvbi9FbXBsb3llZVNlcnZpY2VUeXBlc1wiO1xuaW1wb3J0IHsgVGFiSW5mb3NTdGF0ZSB9IGZyb20gXCIuLi8uLi8uLi9Db250cm9scy9NdWx0aUNvbnRyb2xzL1RhYnMvU3RvcmUvVGFiSW5mb3NTdGF0ZVwiO1xuaW1wb3J0IHsgTWV0cmljc1BheWxvYWQgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvSW50ZXJuYWxzL01ldHJpY3MvTWV0cmljc1Byb3ZpZGVyXCI7XG5cbmltcG9ydCB7IElMZWdhY3lGb3JtIH0gZnJvbSBcIi4vSUxlZ2FjeUZvcm1cIjtcblxuZXhwb3J0IHR5cGUgTW9kZWxFdmVudFBhdGggPVxuICAgIHwgW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgc3RyaW5nLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiLCBzdHJpbmcsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwicmVtb3ZlXCIsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCJdXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiXTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHBhdGg/OiBzdHJpbmcsIGZpZWxkTmFtZT86IHN0cmluZyk6IE1vZGVsRXZlbnRQYXRoIHtcbiAgICBpZiAoZmllbGROYW1lICE9IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAocGF0aCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhdGggbXVzdCBiZSBkZWZpbmVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBwYXRoLCBmaWVsZE5hbWVdO1xuICAgIH1cbiAgICBpZiAocGF0aCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHBhdGhdO1xuICAgIH1cbiAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIl07XG59XG5cbmZ1bmN0aW9uIG1hcENodW5rVmFsdWVzKGNodW5rOiBSZWFkb25seU1vZGVsQ2h1bmspOiBBcnJheTx7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY2h1bmspXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBjaHVua1twYXRoXSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2h1bmtbcGF0aF0sIFwidmFsdWVcIikpXG4gICAgICAgIC5tYXAocGF0aCA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBjaHVua1twYXRoXTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgW3BhdGhdOiByZXN1bHQudmFsdWUgfTtcbiAgICAgICAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZHVjZUNodW5rVmFsdWVzKGNodW5rczogQXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9Pik6IHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfSB7XG4gICAgcmV0dXJuIGNodW5rcy5yZWR1Y2UoXG4gICAgICAgIChyZXN1bHQsIGNodW5rKSA9PiAoe1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgLi4uY2h1bmssXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICk7XG59XG5cbmNsYXNzIExlZ2FjeVB1YmxpY0Zvcm0gaW1wbGVtZW50cyBJUHVibGljRm9ybSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtOiBJTGVnYWN5Rm9ybTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihmb3JtOiBJTGVnYWN5Rm9ybSkge1xuICAgICAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIH1cblxuICAgIHB1YmxpYyBuYXZpZ2F0ZUJ5SGlnaGxhbmRlclBhdGhzKHBhdGhzOiBzdHJpbmdbXSk6IFByb21pc2U8SUNhbmR5Q29tcG9uZW50SGFuZGxlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYW5jZWxTZWxlY3RSZWxhdGl2ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5hdmlnYXRpb25QYXRoTWFwcGVyKCk6IE5hdmlnYXRpb25QYXRoTWFwcGVyIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGJhdGNoVXBkYXRlKHVwZGF0ZVByb2M6ICh1cGRhdGVBY2Nlc3NvcjogSVVwZGF0ZUZvcm1Nb2RlbEFjY2Vzc29yKSA9PiB2b2lkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBydW5DaGVjaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEVycm9yTG9nKGVycm9yTG9nOiBQYXJ0aWFsPFNlcnZlckVycm9yTG9nPik6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgdmFsaWRhdGVDaGlsZHJlbkJ5UGF0aChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIF9fSU5URVJOQUxfX2ltcG9ydEZyb21FbXBsb3llZVNlcnZpY2UoKTogUHJvbWlzZTxFbXBsb3llZVtdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBfX0lOVEVSTkFMX19nZXRTZWxlY3RGdW5jdGlvbkZvckRpc2FibGVFbXBsb3llZUluU1MoXG4gICAgICAgIHBhdGhTcGVjOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPChlbXBsb3llZTogRW1wbG95ZWUpID0+IGJvb2xlYW4+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vZGFsVW5pdE9wZW5lZEluc3RhbmNlKHBhZ2VJZDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUYWJzU3RhdGUoKTogVGFiSW5mb3NTdGF0ZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuYXZpZ2F0ZShuYXZpZ2F0aW9uUGF0aDogc3RyaW5nKTogUHJvbWlzZTxJQ2FuZHlDb21wb25lbnRIYW5kbGUgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGltcG9ydEVtcGxveWVyRG9jdW1lbnRzKFxuICAgICAgICBvcHRpb25zOiBJbXBvcnRFbXBsb3llckRvY3VtZW50c09wdGlvbnNcbiAgICApOiBQcm9taXNlPEVtcGxveWVyTm9ybWFsaXplZFRhZyB8IHVuZGVmaW5lZCB8IG51bGw+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGltcG9ydEVtcGxveWVlcyhlbXBsb3llZXM6IEVtcGxveWVlW10sIG9wdGlvbnM/OiB7IHNjZW5hcmlvPzogc3RyaW5nIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHByaW50KHByaW50VHlwZTogUHJpbnRUeXBlLCBib2R5Pzogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuICAgIHB1YmxpYyBydW5NYXNzQWN0aW9uKGFjdGlvbklkOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBNYXNzQWN0aW9uUGFyYW1ldGVycyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QnlHSWQoZ0lkOiBzdHJpbmcsIGZpbHRlcj86IERpZ2VzdFF1ZXJ5RmlsdGVyKTogUHJvbWlzZTxQaWNrbGlzdFF1ZXJ5UmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5waWNrbGlzdHNQcm92aWRlci5nZXREaWdlc3RBcGlQaWNrbGlzdChnSWQpLnF1ZXJ5KGZpbHRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9uKGV2ZW50TmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogRXh0ZXJuYWxIb29rRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vbihbXCJmb3JtXCIsIGV2ZW50TmFtZV0sIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2ZmKGV2ZW50TmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogRXh0ZXJuYWxIb29rRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vZmYoW1wiZm9ybVwiLCBldmVudE5hbWVdLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2UocGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIGxpc3RlbmVyOiB1bmtub3duKTogU3Vic2NyaXB0aW9uIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJmb3JtLm9uTW9kZWxDaGFuZ2UoKSBpcyBub3Qgc3VwcG9ydGVkIHlldFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2F2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc2VuZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5mb3JtLmNoYW5nZVNldC5zdG9wQXV0b3NlbmQoKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS51bm1vdW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0udW5tb3VudCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc2VuZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUb3VyU3RlcHMoKTogU3RlcFtdIHtcbiAgICAgICAgLy8gRm9yIG9sZCBrZXdlYlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCkpO1xuICAgICAgICAvLyBAdHMtaWdub3JlINCt0YLQviDQsiDRgdGC0LDRgNGL0YUg0LTQstC40LbQutCw0YUg0YLRg9GCINGC0LDQutC+0Lkg0LLRi9C30L7QslxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS52YWxpZGF0b3IudmFsaWRhdGVBbGwoa2V5cyk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXRBZGRpdGlvbmFsRW1wbG95ZWVJbmZvKGZpbHRlcnM6IEdldEVtcGxveWVlc1dpdGhBY3RpdmVQZXJpb2RRdWVyeSk6IFByb21pc2U8RW1wbG95ZWVMaXN0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW1wbG95ZWVzKCk6IFByb21pc2U8RW1wbG95ZWVMaXN0PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWVyZ2VSZWxhdGl2ZSgpOiBQcm9taXNlPE1lcmdlUmVsYXRpdmVSZXNwb25zZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIHBhdGNoUmVsYXRpdmUoKTogUHJvbWlzZTxQYXRjaFJlbGF0aXZlUmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZW5kTWV0cmljcyhhY3Rpb246IHN0cmluZywgcGF5bG9hZD86IE1ldHJpY3NQYXlsb2FkKTogdm9pZCB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG1hdGNoRW1wbG95ZWUocXVlcnk6IE1hdGNoRW1wbG95ZWVSZXF1ZXN0KTogUHJvbWlzZTxNYXRjaEVtcGxveWVlUmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWxvYWRJbm5lcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRXb3JraW5nRXZlbnRzRm9yRW1wbG95ZWUoZmlsdGVyczogR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QpOiBQcm9taXNlPFdvcmtpbmdFdmVudExpc3QgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNFcnJvcnMoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGVycm9yQ291bnQgPSB0aGlzLmZvcm0ubW9kZWwuZ2V0KHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKTtcbiAgICAgICAgcmV0dXJuIGVycm9yQ291bnQgIT0gdW5kZWZpbmVkICYmIGVycm9yQ291bnQgPiAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkVycm9yc0NvdW50Q2hhbmdlZChsaXN0ZW5lcjogTW9kZWxFdmVudHNMaXN0ZW5lcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9uKG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvZmZFcnJvcnNDb3VudENoYW5nZWQobGlzdGVuZXI6IE1vZGVsRXZlbnRzTGlzdGVuZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vZmYobW9kZWxDaGFuZ2VFdmVudFBhdGgodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290LCBcImVycm9yc0NvdW50XCIpLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIHNldChwYXRoT3JNb2RlbENodW5rOiB7IFtwYXRoOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIHB1YmxpYyBzZXQocGF0aE9yTW9kZWxDaHVuazogc3RyaW5nLCB2YWx1ZTogTW9kZWxWYWx1ZSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIHB1YmxpYyBzZXQoXG4gICAgICAgIHBhdGhPck1vZGVsQ2h1bms6IHN0cmluZyB8IHsgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9LFxuICAgICAgICB2YWx1ZT86IE1vZGVsVmFsdWVcbiAgICApOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHBhdGhPck1vZGVsQ2h1bmsgIT09IG51bGwgJiZcbiAgICAgICAgICAgIHR5cGVvZiBwYXRoT3JNb2RlbENodW5rICE9PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICB0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkocGF0aE9yTW9kZWxDaHVuaylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBpbm5lckNodW5rID0gT2JqZWN0LmtleXMocGF0aE9yTW9kZWxDaHVuaykucmVkdWNlPFJlYWRvbmx5TW9kZWxDaHVuaz4oXG4gICAgICAgICAgICAgICAgKHJlc3VsdCwgcGF0aCkgPT4gKHsgW3BhdGhdOiB7IHZhbHVlOiBwYXRoT3JNb2RlbENodW5rW3BhdGhdIH0sIC4uLnJlc3VsdCB9KSxcbiAgICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5mb3JtLm1vZGVsLmZpbGwoaW5uZXJDaHVuayk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5tb2RlbC5zZXQocGF0aE9yTW9kZWxDaHVuaywgXCJ2YWx1ZVwiLCB2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtLnNldCgpIHBhcmFtZXRlciBzaG91bGQgYmUgc3RyaW5nIHBhdGggb3Igb2JqZWN0IHdpdGggcGF0aC12YWx1ZSBwYWlyc1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0KHBhdGhPckFycmF5OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBhdGhPckFycmF5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKFxuICAgICAgICAgICAgICAgIHBhdGhPckFycmF5XG4gICAgICAgICAgICAgICAgICAgIC5tYXAocGF0aCA9PiBtYXBDaHVua1ZhbHVlcyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsocGF0aCkpKVxuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2U8QXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9Pj4oKHJlc3VsdCwgYXJyYXkpID0+IHJlc3VsdC5jb25jYXQoYXJyYXkpLCBbXSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHBhdGhPckFycmF5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMobWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHBhdGhPckFycmF5KSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhdGhPckFycmF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhtYXBDaHVua1ZhbHVlcyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290KSkpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImZvcm0uZ2V0KCkgcGFyYW1ldGVyIHNob3VsZCBiZSBzdHJpbmcgcGF0aCBvciBhcnJheSBvZiBwYXRoc1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsdWUocGF0aDogc3RyaW5nKTogTW9kZWxWYWx1ZSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLm1vZGVsLmdldChwYXRoLCBcInZhbHVlXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5U3VidHJlZShcbiAgICAgICAgc291cmNlQmluZGluZ1BhdGg6IEJpbmRpbmdQYXRoIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgdGFyZ2V0QmluZGluZ1BhdGg6IEJpbmRpbmdQYXRoIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgZG9Ob3RDb3B5UGF0aHM/OiBzdHJpbmdbXVxuICAgICk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRJbnN0YW5jZShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDaGlsZHJlbihwYXRoOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHV1aWRHZW5lcmF0ZSgpOiBzdHJpbmcge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93TW9kYWwob3B0aW9uczogTW9kYWxPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFNlY3Rpb24ob3B0aW9uczogSW5pdFNlY3Rpb25Gb3JtTGlnaHRib3hPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbGxJbml0U2VjdGlvbihvcHRpb25zOiBDYWxsSW5pdFNlY3Rpb25MaWdodGJveFByb3BzKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHByZWZlcnJlZEludGVyZG9jdW1lbnRUcmFuc2ZlcihvcHRpb25zOiBQcmVmZXJyZWRJbnRlcmRvY3VtZW50VHJhbnNmZXJQcm9wcyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbiAgICBwdWJsaWMgY3JlYXRlRmlhc0FwaUNsaWVudChvcHRpb25zOiBGaWFzQ2xpZW50SW5pdE9wdGlvbnMpOiBGaWFzQXBpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkVtcGxveWVlRWRpdG9yKGVtcGxveWVlSWQ6IHN0cmluZykge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZShwYXRoOiBzdHJpbmcsIGluc3RhbmNlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2VzKHBhdGg6IHN0cmluZywgaW5zdGFuY2VzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1c09uQ29udHJvbElmRXhpc3QocGF0aDogQmluZGluZ1BhdGgpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QXV0b0ZpZWxkc1RvQXV0b1ZhbHVlKHBhdGhQcmVmaXhlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbnN1cmVJbnN0YW5jZUZ1bGx5TG9hZGVkKFxuICAgICAgICBiaW5kaW5nUGF0aDogc3RyaW5nIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgLi4uaW5zdGFuY2VzOiBzdHJpbmdbXVxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3VzdG9tTm9ybWFsaXplKG5vcm1hbGl6ZXJJZDogc3RyaW5nLCBwYXRoUHJlZml4ZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZXNCeVJ1bGVzKHJ1bGVzOiBJbnN0YW5jZXNEZWxldGluZ1J1bGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVEbnAoKTogUHJvbWlzZTxDb21iaW5lRnVmUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNlbGVjdGVkSW5zdGFuY2VzKFxuICAgICAgICBtdWx0aXBsaWNpdHlQYXRoOiBCaW5kaW5nUGF0aCB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIHRhYmxlVW5pcUlkOiBzdHJpbmcsXG4gICAgICAgIHBhdGhUb0NoZWNrZWQ6IHN0cmluZ1xuICAgICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGVnYWN5UHVibGljRm9ybShmb3JtOiBJRm9ybSk6IElQdWJsaWNGb3JtIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIG5ldyBMZWdhY3lQdWJsaWNGb3JtKGZvcm0gYXMgSUxlZ2FjeUZvcm0pO1xufVxuIiwiLy8gdHNsaW50OmRpc2FibGUgbm8tdW5zYWZlLWFueVxuZXhwb3J0IGNsYXNzIExvYWRJbnRvRG9jdW1lbnQge1xuICAgIHB1YmxpYyBzdGF0aWMgc2NyaXB0KHVyaTogc3RyaW5nLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHNjcmlwdExvYWRlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29uc3Qgc2NyaXB0OiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuXG4gICAgICAgIGZ1bmN0aW9uIGxvYWRIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICAgICAgaWYgKHNjcmlwdExvYWRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFzY3JpcHQucmVhZHlTdGF0ZSB8fCBzY3JpcHQucmVhZHlTdGF0ZSA9PT0gXCJsb2FkZWRcIiB8fCBzY3JpcHQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiKSB7XG4gICAgICAgICAgICAgICAgc2NyaXB0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZyB0aGUgdXNlciBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiB0aGUgc2NyaXB0IGNvbXBsZXRlcyB0byBsb2FkLlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBUaGlzIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGluIElFIGV2ZW4gdXBvbiBlcnJvci4gSW4gYW55XG4gICAgICAgIC8vIGNhc2UgaXQgaXMgdGhlIGNsaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIHZlcmlmeSB0aGF0IHRoZSBzY3JpcHQgcmFuXG4gICAgICAgIC8vIHN1Y2Nlc3NmdWxseS5cbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGxvYWRIYW5kbGVyO1xuICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gbG9hZEhhbmRsZXI7XG5cbiAgICAgICAgLy8gQWRkIGFuIGVycm9yIGNhbGxiYWNrLlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBOb3Qgc3VwcG9ydGVkIGluIElFLlxuICAgICAgICBzY3JpcHQub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChzY3JpcHQucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIHNjcmlwdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSBsb2FkaW5nIHNjcmlwdC5cIikpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIEFkZCB0aGUgc2NyaXB0IGVsZW1lbnQgdG8gdGhlIGRvY3VtZW50LlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBTYWZhcmkgbmV2ZXIgbG9hZHMgdGhlIHNjcmlwdCBpZiB3ZSBkb24ndCBzZXRcbiAgICAgICAgLy8gdGhlIHNyYyBhdHRyaWJ1dGUgYmVmb3JlIGFwcGVuZGluZy5cbiAgICAgICAgc2NyaXB0LnNyYyA9IHVyaTtcbiAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZShcImNyb3Nzb3JpZ2luXCIsIFwidXNlLWNyZWRlbnRpYWxzXCIpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzdHlsZVNoZWV0KHVyaTogc3RyaW5nLCBpZ25vcmVFcnJvcjogYm9vbGVhbiwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc29sdmUgPSAoKSA9PiBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgICBjb25zdCByZWplY3QgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSBsb2FkaW5nIHN0eWxlc2hlZXQuXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdID8/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO1xuXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwicmVsXCIsIFwic3R5bGVzaGVldFwiKTtcbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIFwidGV4dC9jc3NcIik7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgcmVzb2x2ZSk7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB1cmkpO1xuICAgIH1cbn1cbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdGxvYWRlZDogZmFsc2UsXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuXHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmhtZCA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRtb2R1bGUgPSBPYmplY3QuY3JlYXRlKG1vZHVsZSk7XG5cdGlmICghbW9kdWxlLmNoaWxkcmVuKSBtb2R1bGUuY2hpbGRyZW4gPSBbXTtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgJ2V4cG9ydHMnLCB7XG5cdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRzZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdFUyBNb2R1bGVzIG1heSBub3QgYXNzaWduIG1vZHVsZS5leHBvcnRzIG9yIGV4cG9ydHMuKiwgVXNlIEVTTSBleHBvcnQgc3ludGF4LCBpbnN0ZWFkOiAnICsgbW9kdWxlLmlkKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gbW9kdWxlO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gc3RhcnR1cFxuLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vLyBUaGlzIGVudHJ5IG1vZHVsZSBpcyByZWZlcmVuY2VkIGJ5IG90aGVyIG1vZHVsZXMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU5MSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O2VBTUNBLENBQUEsRUFKb0NDLENBQUE7UUFBOUIsU0FBU0MsRUFBc0JDLENBQUE7VUFHbEMsT0FBTyxTQUFQQyxNQUFBLENBQWdCRCxDQUFBLENBQVFFLEVBQUEsRUFBRSxZQUFBRCxNQUFBLENBQVdELENBQUEsQ0FBUUcsT0FBQSxFQUFPLHFCQUN4RDtRQUFBO1FBQUFDLENBQUEsQ0FBQUMsQ0FBQSxDQUFBQyxDQUFBO1VBQUFDLENBQUEsV0FBQUEsQ0FBQTtZQUFBLE9BQUFSLENBQUE7VUFBQTtRQUFBLElBQUFDLENBQUEsR0FBQUksQ0FBQSxDQUFBSSxHQUFBLENBQUFSLENBQUEsSUFBQVMsQ0FBQSx5QkFBQUMsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUMsV0FBQSxjQUFBRixDQUFBLENBQUFULENBQUEseUJBQUFVLG9CQUFBLElBQUFBLG9CQUFBLENBQUFFLE9BQUEsQ0FBQUMsU0FBQSxHQUFDaEIsQ0FBQSx5QkFBQWEsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUUsT0FBQSxjQUFBZixDQUFBLENBQUFpQixRQUFBLENBSmVmLENBQUEsRUFBcUIsK0lBQUFELENB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
|
|
1722
|
+
//# sourceMappingURL=client.js.map
|