__vite_ssr_exportName__("OrchestrationV2Actor", () => { try { return OrchestrationV2Actor } catch {} });
__vite_ssr_exportName__("OrchestrationV2CreationSource", () => { try { return OrchestrationV2CreationSource } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadHistoryOrigin", () => { try { return OrchestrationV2ThreadHistoryOrigin } catch {} });
__vite_ssr_exportName__("OrchestrationV2NativeRefStrength", () => { try { return OrchestrationV2NativeRefStrength } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderRef", () => { try { return OrchestrationV2ProviderRef } catch {} });
__vite_ssr_exportName__("OrchestrationV2AppThreadLineage", () => { try { return OrchestrationV2AppThreadLineage } catch {} });
__vite_ssr_exportName__("OrchestrationV2ContextTransferType", () => { try { return OrchestrationV2ContextTransferType } catch {} });
__vite_ssr_exportName__("OrchestrationV2ContextSourcePoint", () => { try { return OrchestrationV2ContextSourcePoint } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadForkSourcePoint", () => { try { return OrchestrationV2ThreadForkSourcePoint } catch {} });
__vite_ssr_exportName__("OrchestrationV2ContextTransferResolution", () => { try { return OrchestrationV2ContextTransferResolution } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderTurnTokenUsage", () => { try { return OrchestrationV2ProviderTurnTokenUsage } catch {} });
__vite_ssr_exportName__("OrchestrationV2ContextTransfer", () => { try { return OrchestrationV2ContextTransfer } catch {} });
__vite_ssr_exportName__("OrchestrationV2SessionCapabilities", () => { try { return OrchestrationV2SessionCapabilities } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadCapabilities", () => { try { return OrchestrationV2ThreadCapabilities } catch {} });
__vite_ssr_exportName__("OrchestrationV2TurnCapabilities", () => { try { return OrchestrationV2TurnCapabilities } catch {} });
__vite_ssr_exportName__("OrchestrationV2StreamingCapabilities", () => { try { return OrchestrationV2StreamingCapabilities } catch {} });
__vite_ssr_exportName__("OrchestrationV2ToolCapabilities", () => { try { return OrchestrationV2ToolCapabilities } catch {} });
__vite_ssr_exportName__("OrchestrationV2ApprovalCapabilities", () => { try { return OrchestrationV2ApprovalCapabilities } catch {} });
__vite_ssr_exportName__("OrchestrationV2PlanningCapabilities", () => { try { return OrchestrationV2PlanningCapabilities } catch {} });
__vite_ssr_exportName__("OrchestrationV2SubagentCapabilities", () => { try { return OrchestrationV2SubagentCapabilities } catch {} });
__vite_ssr_exportName__("OrchestrationV2ContextCapabilities", () => { try { return OrchestrationV2ContextCapabilities } catch {} });
__vite_ssr_exportName__("OrchestrationV2CheckpointCapabilities", () => { try { return OrchestrationV2CheckpointCapabilities } catch {} });
__vite_ssr_exportName__("OrchestrationV2RuntimePolicyCapabilities", () => { try { return OrchestrationV2RuntimePolicyCapabilities } catch {} });
__vite_ssr_exportName__("OrchestrationV2IdentityCapabilities", () => { try { return OrchestrationV2IdentityCapabilities } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderCapabilities", () => { try { return OrchestrationV2ProviderCapabilities } catch {} });
__vite_ssr_exportName__("OrchestrationV2LimitRecovery", () => { try { return OrchestrationV2LimitRecovery } catch {} });
__vite_ssr_exportName__("OrchestrationV2LimitRecoveryUpdate", () => { try { return OrchestrationV2LimitRecoveryUpdate } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadOpens", () => { try { return OrchestrationV2ThreadOpens } catch {} });
__vite_ssr_exportName__("OrchestrationV2AppThread", () => { try { return OrchestrationV2AppThread } catch {} });
__vite_ssr_exportName__("isProviderNativeSubagentThread", () => { try { return isProviderNativeSubagentThread } catch {} });
__vite_ssr_exportName__("IDLE_COMPACTION_TEXT", () => { try { return IDLE_COMPACTION_TEXT } catch {} });
__vite_ssr_exportName__("isCompactionCommandMessage", () => { try { return isCompactionCommandMessage } catch {} });
__vite_ssr_exportName__("idleCompactionOf", () => { try { return idleCompactionOf } catch {} });
__vite_ssr_exportName__("OrchestrationV2RunStatus", () => { try { return OrchestrationV2RunStatus } catch {} });
__vite_ssr_exportName__("OrchestrationV2DelegatedCompletionTaskDeliveryState", () => { try { return OrchestrationV2DelegatedCompletionTaskDeliveryState } catch {} });
__vite_ssr_exportName__("OrchestrationV2DelegatedCompletionTaskDelivery", () => { try { return OrchestrationV2DelegatedCompletionTaskDelivery } catch {} });
__vite_ssr_exportName__("OrchestrationV2DelegatedCompletionDelivery", () => { try { return OrchestrationV2DelegatedCompletionDelivery } catch {} });
__vite_ssr_exportName__("OrchestrationV2DelegatedCompletionCohort", () => { try { return OrchestrationV2DelegatedCompletionCohort } catch {} });
__vite_ssr_exportName__("OrchestrationV2RestartCancelledBackgroundWork", () => { try { return OrchestrationV2RestartCancelledBackgroundWork } catch {} });
__vite_ssr_exportName__("OrchestrationV2RunBackgroundWorkCancelled", () => { try { return OrchestrationV2RunBackgroundWorkCancelled } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadLaunchWorkspaceStrategy", () => { try { return OrchestrationV2ThreadLaunchWorkspaceStrategy } catch {} });
__vite_ssr_exportName__("ORCHESTRATION_V2_WORKSPACE_PREPARATION_FAILURE_CODE", () => { try { return ORCHESTRATION_V2_WORKSPACE_PREPARATION_FAILURE_CODE } catch {} });
__vite_ssr_exportName__("OrchestrationV2Run", () => { try { return OrchestrationV2Run } catch {} });
__vite_ssr_exportName__("orchestrationV2RunWorkStartedAt", () => { try { return orchestrationV2RunWorkStartedAt } catch {} });
__vite_ssr_exportName__("OrchestrationV2RunAttempt", () => { try { return OrchestrationV2RunAttempt } catch {} });
__vite_ssr_exportName__("OrchestrationV2ExecutionNode", () => { try { return OrchestrationV2ExecutionNode } catch {} });
__vite_ssr_exportName__("OrchestrationV2WorkflowPhase", () => { try { return OrchestrationV2WorkflowPhase } catch {} });
__vite_ssr_exportName__("OrchestrationV2WorkflowAgent", () => { try { return OrchestrationV2WorkflowAgent } catch {} });
__vite_ssr_exportName__("OrchestrationV2WorkflowRunHandles", () => { try { return OrchestrationV2WorkflowRunHandles } catch {} });
__vite_ssr_exportName__("OrchestrationV2SubagentWorkflow", () => { try { return OrchestrationV2SubagentWorkflow } catch {} });
__vite_ssr_exportName__("OrchestrationV2Subagent", () => { try { return OrchestrationV2Subagent } catch {} });
__vite_ssr_exportName__("isOrchestrationV2WorkActive", () => { try { return isOrchestrationV2WorkActive } catch {} });
__vite_ssr_exportName__("OrchestrationV2CheckpointScope", () => { try { return OrchestrationV2CheckpointScope } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderSession", () => { try { return OrchestrationV2ProviderSession } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderSessionDetached", () => { try { return OrchestrationV2ProviderSessionDetached } catch {} });
__vite_ssr_exportName__("OrchestrationV2PendingBackgroundTask", () => { try { return OrchestrationV2PendingBackgroundTask } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderThreadNativeMetadata", () => { try { return OrchestrationV2ProviderThreadNativeMetadata } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderGoalStatus", () => { try { return OrchestrationV2ProviderGoalStatus } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderGoal", () => { try { return OrchestrationV2ProviderGoal } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderThread", () => { try { return OrchestrationV2ProviderThread } catch {} });
__vite_ssr_exportName__("OrchestrationV2HistoricalMessage", () => { try { return OrchestrationV2HistoricalMessage } catch {} });
__vite_ssr_exportName__("OrchestrationV2ContextHandoff", () => { try { return OrchestrationV2ContextHandoff } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderTurn", () => { try { return OrchestrationV2ProviderTurn } catch {} });
__vite_ssr_exportName__("latestProviderTurnForAttempt", () => { try { return latestProviderTurnForAttempt } catch {} });
__vite_ssr_exportName__("OrchestrationV2RuntimeRequest", () => { try { return OrchestrationV2RuntimeRequest } catch {} });
__vite_ssr_exportName__("OrchestrationV2NotificationSource", () => { try { return OrchestrationV2NotificationSource } catch {} });
__vite_ssr_exportName__("OrchestrationV2Notification", () => { try { return OrchestrationV2Notification } catch {} });
__vite_ssr_exportName__("OrchestrationV2IdleCompaction", () => { try { return OrchestrationV2IdleCompaction } catch {} });
__vite_ssr_exportName__("OrchestrationV2ConversationMessage", () => { try { return OrchestrationV2ConversationMessage } catch {} });
__vite_ssr_exportName__("OrchestrationV2PlanStep", () => { try { return OrchestrationV2PlanStep } catch {} });
__vite_ssr_exportName__("OrchestrationV2UserInputQuestion", () => { try { return OrchestrationV2UserInputQuestion } catch {} });
__vite_ssr_exportName__("OrchestrationV2PlanArtifact", () => { try { return OrchestrationV2PlanArtifact } catch {} });
__vite_ssr_exportName__("OrchestrationV2CheckpointFileSummary", () => { try { return OrchestrationV2CheckpointFileSummary } catch {} });
__vite_ssr_exportName__("OrchestrationV2Checkpoint", () => { try { return OrchestrationV2Checkpoint } catch {} });
__vite_ssr_exportName__("OrchestrationV2CheckpointRollbackRequest", () => { try { return OrchestrationV2CheckpointRollbackRequest } catch {} });
__vite_ssr_exportName__("OrchestrationV2CheckpointUnavailableError", () => { try { return OrchestrationV2CheckpointUnavailableError } catch {} });
__vite_ssr_exportName__("OrchestrationV2TurnItemStatus", () => { try { return OrchestrationV2TurnItemStatus } catch {} });
__vite_ssr_exportName__("OrchestrationV2FileChangeDetail", () => { try { return OrchestrationV2FileChangeDetail } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderFailureClass", () => { try { return OrchestrationV2ProviderFailureClass } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderFailure", () => { try { return OrchestrationV2ProviderFailure } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderRetry", () => { try { return OrchestrationV2ProviderRetry } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderThreadDisposition", () => { try { return OrchestrationV2ProviderThreadDisposition } catch {} });
__vite_ssr_exportName__("OrchestrationV2UserMessageInputIntent", () => { try { return OrchestrationV2UserMessageInputIntent } catch {} });
__vite_ssr_exportName__("OrchestrationV2FileSearchResult", () => { try { return OrchestrationV2FileSearchResult } catch {} });
__vite_ssr_exportName__("OrchestrationV2WebSearchResult", () => { try { return OrchestrationV2WebSearchResult } catch {} });
__vite_ssr_exportName__("OrchestrationV2SecretRequestStatus", () => { try { return OrchestrationV2SecretRequestStatus } catch {} });
__vite_ssr_exportName__("OrchestrationV2TurnItem", () => { try { return OrchestrationV2TurnItem } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProjectedTurnItem", () => { try { return OrchestrationV2ProjectedTurnItem } catch {} });
__vite_ssr_exportName__("OrchestrationV2RawProviderEvent", () => { try { return OrchestrationV2RawProviderEvent } catch {} });
__vite_ssr_exportName__("OrchestrationV2DomainEvent", () => { try { return OrchestrationV2DomainEvent } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadProjection", () => { try { return OrchestrationV2ThreadProjection } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadTranscript", () => { try { return OrchestrationV2ThreadTranscript } catch {} });
__vite_ssr_exportName__("OrchestrationV2ShellThreadStatus", () => { try { return OrchestrationV2ShellThreadStatus } catch {} });
__vite_ssr_exportName__("OrchestrationV2PendingRuntimeRequestSummary", () => { try { return OrchestrationV2PendingRuntimeRequestSummary } catch {} });
__vite_ssr_exportName__("OrchestrationV2LatestVisibleMessageSummary", () => { try { return OrchestrationV2LatestVisibleMessageSummary } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadShell", () => { try { return OrchestrationV2ThreadShell } catch {} });
__vite_ssr_exportName__("isLiveSubagentShell", () => { try { return isLiveSubagentShell } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadShellSnapshot", () => { try { return OrchestrationV2ThreadShellSnapshot } catch {} });
__vite_ssr_exportName__("OrchestrationV2ShellSnapshot", () => { try { return OrchestrationV2ShellSnapshot } catch {} });
__vite_ssr_exportName__("OrchestrationV2ShellStreamItem", () => { try { return OrchestrationV2ShellStreamItem } catch {} });
__vite_ssr_exportName__("OrchestrationV2StoredEvent", () => { try { return OrchestrationV2StoredEvent } catch {} });
__vite_ssr_exportName__("OrchestrationV2AppThreadJson", () => { try { return OrchestrationV2AppThreadJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2RunJson", () => { try { return OrchestrationV2RunJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2RunAttemptJson", () => { try { return OrchestrationV2RunAttemptJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2ExecutionNodeJson", () => { try { return OrchestrationV2ExecutionNodeJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2SubagentJson", () => { try { return OrchestrationV2SubagentJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2CheckpointScopeJson", () => { try { return OrchestrationV2CheckpointScopeJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderSessionJson", () => { try { return OrchestrationV2ProviderSessionJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderSessionDetachedJson", () => { try { return OrchestrationV2ProviderSessionDetachedJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderThreadJson", () => { try { return OrchestrationV2ProviderThreadJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2ContextHandoffJson", () => { try { return OrchestrationV2ContextHandoffJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2ContextTransferJson", () => { try { return OrchestrationV2ContextTransferJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProviderTurnJson", () => { try { return OrchestrationV2ProviderTurnJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2RuntimeRequestJson", () => { try { return OrchestrationV2RuntimeRequestJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2ConversationMessageJson", () => { try { return OrchestrationV2ConversationMessageJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2CheckpointJson", () => { try { return OrchestrationV2CheckpointJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2CheckpointRollbackRequestJson", () => { try { return OrchestrationV2CheckpointRollbackRequestJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2TurnItemJson", () => { try { return OrchestrationV2TurnItemJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2ProjectedTurnItemJson", () => { try { return OrchestrationV2ProjectedTurnItemJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadProjectionJson", () => { try { return OrchestrationV2ThreadProjectionJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2PendingRuntimeRequestSummaryJson", () => { try { return OrchestrationV2PendingRuntimeRequestSummaryJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2LatestVisibleMessageSummaryJson", () => { try { return OrchestrationV2LatestVisibleMessageSummaryJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadShellJson", () => { try { return OrchestrationV2ThreadShellJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2ShellSnapshotJson", () => { try { return OrchestrationV2ShellSnapshotJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2RawProviderEventJson", () => { try { return OrchestrationV2RawProviderEventJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2DomainEventJson", () => { try { return OrchestrationV2DomainEventJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2StoredEventJson", () => { try { return OrchestrationV2StoredEventJson } catch {} });
__vite_ssr_exportName__("OrchestrationV2Command", () => { try { return OrchestrationV2Command } catch {} });
__vite_ssr_exportName__("ORCHESTRATION_V2_WS_METHODS", () => { try { return ORCHESTRATION_V2_WS_METHODS } catch {} });
__vite_ssr_exportName__("OrchestrationV2SubscribeCommandOutputInput", () => { try { return OrchestrationV2SubscribeCommandOutputInput } catch {} });
__vite_ssr_exportName__("OrchestrationV2CommandOutputFrame", () => { try { return OrchestrationV2CommandOutputFrame } catch {} });
__vite_ssr_exportName__("OrchestrationV2CommandOutputError", () => { try { return OrchestrationV2CommandOutputError } catch {} });
__vite_ssr_exportName__("OrchestrationV2ArchivedShellSnapshot", () => { try { return OrchestrationV2ArchivedShellSnapshot } catch {} });
__vite_ssr_exportName__("OrchestrationV2ArchivedShellStreamItem", () => { try { return OrchestrationV2ArchivedShellStreamItem } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadLaunchInput", () => { try { return OrchestrationV2ThreadLaunchInput } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadLaunchResult", () => { try { return OrchestrationV2ThreadLaunchResult } catch {} });
__vite_ssr_exportName__("OrchestrationV2DispatchCommandResult", () => { try { return OrchestrationV2DispatchCommandResult } catch {} });
__vite_ssr_exportName__("OrchestrationV2GetThreadProjectionInput", () => { try { return OrchestrationV2GetThreadProjectionInput } catch {} });
__vite_ssr_exportName__("OrchestrationV2SubscribeShellInput", () => { try { return OrchestrationV2SubscribeShellInput } catch {} });
__vite_ssr_exportName__("OrchestrationV2GetThreadFamilyInput", () => { try { return OrchestrationV2GetThreadFamilyInput } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadFamily", () => { try { return OrchestrationV2ThreadFamily } catch {} });
__vite_ssr_exportName__("OrchestrationV2GetWorktreeThreadIdsInput", () => { try { return OrchestrationV2GetWorktreeThreadIdsInput } catch {} });
__vite_ssr_exportName__("OrchestrationV2WorktreeThreadIds", () => { try { return OrchestrationV2WorktreeThreadIds } catch {} });
__vite_ssr_exportName__("OrchestrationV2SubscribeThreadInput", () => { try { return OrchestrationV2SubscribeThreadInput } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadDetailSnapshot", () => { try { return OrchestrationV2ThreadDetailSnapshot } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadBoundedSnapshot", () => { try { return OrchestrationV2ThreadBoundedSnapshot } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadHistoryPage", () => { try { return OrchestrationV2ThreadHistoryPage } catch {} });
__vite_ssr_exportName__("isKnownOrchestrationV2EventType", () => { try { return isKnownOrchestrationV2EventType } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadStreamItem", () => { try { return OrchestrationV2ThreadStreamItem } catch {} });
__vite_ssr_exportName__("OrchestrationV2DispatchCommandError", () => { try { return OrchestrationV2DispatchCommandError } catch {} });
__vite_ssr_exportName__("OrchestrationV2GetThreadProjectionError", () => { try { return OrchestrationV2GetThreadProjectionError } catch {} });
__vite_ssr_exportName__("OrchestrationV2GetShellSnapshotError", () => { try { return OrchestrationV2GetShellSnapshotError } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadLaunchError", () => { try { return OrchestrationV2ThreadLaunchError } catch {} });
__vite_ssr_exportName__("OrchestrationV2StopWorkflowInput", () => { try { return OrchestrationV2StopWorkflowInput } catch {} });
__vite_ssr_exportName__("OrchestrationV2StopWorkflowError", () => { try { return OrchestrationV2StopWorkflowError } catch {} });
__vite_ssr_exportName__("OrchestrationV2RpcError", () => { try { return OrchestrationV2RpcError } catch {} });
__vite_ssr_exportName__("OrchestrationV2GetWorkflowScriptInput", () => { try { return OrchestrationV2GetWorkflowScriptInput } catch {} });
__vite_ssr_exportName__("OrchestrationV2GetWorkflowScriptResult", () => { try { return OrchestrationV2GetWorkflowScriptResult } catch {} });
__vite_ssr_exportName__("OrchestrationWorkflowFileError", () => { try { return OrchestrationWorkflowFileError } catch {} });
__vite_ssr_exportName__("OrchestrationV2GetTurnItemInput", () => { try { return OrchestrationV2GetTurnItemInput } catch {} });
__vite_ssr_exportName__("OrchestrationV2GetTurnItemResult", () => { try { return OrchestrationV2GetTurnItemResult } catch {} });
__vite_ssr_exportName__("OrchestrationGetWorkflowScriptError", () => { try { return OrchestrationGetWorkflowScriptError } catch {} });
__vite_ssr_exportName__("OrchestrationV2SearchThreadInput", () => { try { return OrchestrationV2SearchThreadInput } catch {} });
__vite_ssr_exportName__("OrchestrationV2ThreadFindMatch", () => { try { return OrchestrationV2ThreadFindMatch } catch {} });
__vite_ssr_exportName__("OrchestrationV2SearchThreadResult", () => { try { return OrchestrationV2SearchThreadResult } catch {} });
__vite_ssr_exportName__("OrchestrationV2SearchThreadError", () => { try { return OrchestrationV2SearchThreadError } catch {} });
__vite_ssr_exportName__("OrchestrationV2RpcSchemas", () => { try { return OrchestrationV2RpcSchemas } catch {} });
__vite_ssr_exportName__("ProviderReplayEntry", () => { try { return ProviderReplayEntry } catch {} });
__vite_ssr_exportName__("ProviderReplayTranscript", () => { try { return ProviderReplayTranscript } catch {} });
__vite_ssr_exportName__("ProviderReplayTranscriptHeader", () => { try { return ProviderReplayTranscriptHeader } catch {} });
__vite_ssr_exportName__("ProviderReplayNdjsonRecord", () => { try { return ProviderReplayNdjsonRecord } catch {} });
const __vite_ssr_import_0__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/composerContext.ts", {"importedNames":["OrchestrationMessageContext"]});
const __vite_ssr_import_1__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/Effect.js");
const __vite_ssr_import_2__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/Schema.js");
const __vite_ssr_import_3__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/SchemaAST.js");
const __vite_ssr_import_4__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/SchemaGetter.js");
const __vite_ssr_import_5__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/SchemaTransformation.js");
const __vite_ssr_import_6__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/baseSchemas.ts", {"importedNames":["CheckpointId","CheckpointRef","CheckpointScopeId","CommandId","ContextHandoffId","ContextTransferId","EventId","GuestMessageId","GuestShareId","IsoDateTime","MessageId","NodeId","ForwardCompatibleUnion","ForwardCompatibleUnionArray","hasUnknownUnionTag","isUnknownUnionMember","NonNegativeInt","PlanId","PositiveInt","ProjectId","ProviderSessionId","ProviderThreadId","ProviderTurnId","RawEventId","RunAttemptId","RunId","RuntimeRequestId","ScheduledTaskId","ThreadId","TrimmedNonEmptyString","TurnItemId"]});
const __vite_ssr_import_7__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/chatAttachment.ts", {"importedNames":["ChatAttachment"]});
const __vite_ssr_import_8__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/guestShare.ts", {"importedNames":["ThreadGuestShare"]});
const __vite_ssr_import_9__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/checkpointDiff.ts", {"importedNames":["OrchestrationGetFullThreadDiffInput","OrchestrationGetFullThreadDiffResult","OrchestrationGetTurnDiffInput","OrchestrationGetTurnDiffResult"]});
const __vite_ssr_import_10__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/modelSelection.ts", {"importedNames":["ModelSelection"]});
const __vite_ssr_import_11__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/threadPullRequest.ts", {"importedNames":["ThreadLinkedPullRequest","ThreadPullRequestLink","ThreadPullRequestKey","ThreadPullRequestLinkSource","ThreadPullRequestSnapshot","ThreadPullRequestStack","ThreadPullRequestWatch"]});
const __vite_ssr_import_12__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/providerPolicy.ts", {"importedNames":["ProviderApprovalDecision","ProviderApprovalFullAccessOverride","ProviderApprovalOption","ProviderInteractionMode","ProviderRequestKind","ProviderUserInputAnswers","UserInputAttachments","UserInputAttachmentAnswerPayload","RuntimeMode"]});
const __vite_ssr_import_13__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/providerInstance.ts", {"importedNames":["ProviderDriverKind","ProviderInstanceId"]});
const __vite_ssr_import_14__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/orchestrationProject.ts", {"importedNames":["OrchestrationProjectShell"]});
const __vite_ssr_import_15__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/providerRuntime.ts", {"importedNames":["TurnTokenUsage","ToolActivitySurface","ToolActivityIcon","ToolActivitySource"]});
const __vite_ssr_import_16__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/providerRuntime.ts", {"importedNames":["ThreadTokenUsageSnapshot"]});

















const OrchestrationV2Actor = __vite_ssr_import_2__.Literals([
	"user",
	"agent",
	"system"
]);
const OrchestrationV2CreationSource = __vite_ssr_import_2__.Literals([
	"web",
	"mobile",
	"mcp",
	"provider",
	"server"
]);
const OrchestrationV2ThreadHistoryOrigin = __vite_ssr_import_2__.Literals(["native", "v1_import"]);
const OrchestrationV2CreationFields = {
	createdBy: OrchestrationV2Actor,
	creationSource: OrchestrationV2CreationSource
};
const OrchestrationV2NativeRefStrength = __vite_ssr_import_2__.Literals([
	"strong",
	"weak",
	"none"
]);
const OrchestrationV2ProviderRef = __vite_ssr_import_2__.Struct({
	driver: __vite_ssr_import_13__.ProviderDriverKind,
	nativeId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	strength: OrchestrationV2NativeRefStrength,
	fingerprint: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	ordinal: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt))
});
const OrchestrationV2AppThreadLineage = __vite_ssr_import_2__.Struct({
	parentThreadId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ThreadId)),
	relationshipToParent: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.Literals(["fork", "subagent"])),
	rootThreadId: __vite_ssr_import_6__.ThreadId
});
const OrchestrationV2ContextTransferType = __vite_ssr_import_2__.Literals([
	"fork",
	"provider_handoff",
	"merge_back",
	"subagent_spawn",
	"subagent_result"
]);
const OrchestrationV2ContextSourcePoint = __vite_ssr_import_2__.Struct({
	threadId: __vite_ssr_import_6__.ThreadId,
	runId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.RunId)),
	checkpointId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.CheckpointId)),
	turnItemId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TurnItemId)),
	providerThreadRef: __vite_ssr_import_2__.optional(OrchestrationV2ProviderRef),
	providerTurnRef: __vite_ssr_import_2__.optional(OrchestrationV2ProviderRef)
});
const OrchestrationV2ThreadForkSourcePoint = __vite_ssr_import_2__.Union([
	__vite_ssr_import_2__.Struct({ type: __vite_ssr_import_2__.Literal("latest_stable") }),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("run"),
		runId: __vite_ssr_import_6__.RunId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("checkpoint"),
		checkpointId: __vite_ssr_import_6__.CheckpointId
	})
]);
const OrchestrationV2ContextTransferResolution = __vite_ssr_import_2__.Union([
	__vite_ssr_import_2__.Struct({
		strategy: __vite_ssr_import_2__.Literal("native_fork"),
		providerThreadRef: OrchestrationV2ProviderRef
	}),
	__vite_ssr_import_2__.Struct({
		strategy: __vite_ssr_import_2__.Literal("portable_context"),
		contextHandoffId: __vite_ssr_import_6__.ContextHandoffId
	}),
	__vite_ssr_import_2__.Struct({
		strategy: __vite_ssr_import_2__.Literal("delta_context"),
		contextHandoffId: __vite_ssr_import_6__.ContextHandoffId
	}),
	__vite_ssr_import_2__.Struct({
		strategy: __vite_ssr_import_2__.Literal("fork_delta_context"),
		contextHandoffId: __vite_ssr_import_6__.ContextHandoffId
	}),
	__vite_ssr_import_2__.Struct({
		strategy: __vite_ssr_import_2__.Literal("checkpoint_context"),
		contextHandoffId: __vite_ssr_import_6__.ContextHandoffId
	})
]);
const OrchestrationV2ProviderTurnTokenUsage = __vite_ssr_import_2__.Struct({
	usedTokens: __vite_ssr_import_6__.NonNegativeInt,
	maxTokens: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.NonNegativeInt))),
	inputTokens: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	cachedInputTokens: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	outputTokens: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	reasoningOutputTokens: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	promptCacheTtlMs: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.PositiveInt)),
	autoCompactThreshold: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.PositiveInt)),
	promptCacheExpiresAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
	updatedAt: __vite_ssr_import_2__.String
});
const OrchestrationV2ContextTransfer = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.ContextTransferId,
	type: OrchestrationV2ContextTransferType,
	sourceThreadId: __vite_ssr_import_6__.ThreadId,
	targetThreadId: __vite_ssr_import_6__.ThreadId,
	sourcePoint: OrchestrationV2ContextSourcePoint,
	basePoint: __vite_ssr_import_2__.NullOr(OrchestrationV2ContextSourcePoint),
	sourceProviderInstanceId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_13__.ProviderInstanceId)),
	sourceTokenUsage: __vite_ssr_import_2__.optional(OrchestrationV2ProviderTurnTokenUsage),
	targetProviderInstanceId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_13__.ProviderInstanceId)),
	targetRunId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId)),
	status: __vite_ssr_import_2__.Literals([
		"pending",
		"resolved_native",
		"resolved_portable",
		"failed",
		"consumed",
		"superseded"
	]),
	resolution: __vite_ssr_import_2__.NullOr(OrchestrationV2ContextTransferResolution),
	createdBy: OrchestrationV2Actor,
	error: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.String),
	createdAt: __vite_ssr_import_2__.DateTimeUtc,
	updatedAt: __vite_ssr_import_2__.DateTimeUtc,
	consumedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)
});
const OrchestrationV2SessionCapabilities = __vite_ssr_import_2__.Struct({
	supportsMultipleProviderThreadsPerSession: __vite_ssr_import_2__.Boolean,
	supportsModelSwitchInSession: __vite_ssr_import_2__.Boolean,
	supportsProviderSwitchingViaHandoff: __vite_ssr_import_2__.Boolean,
	supportsRuntimeModeSwitchInSession: __vite_ssr_import_2__.Boolean,
	pendingRequestsSurviveRestart: __vite_ssr_import_2__.Boolean
});
const OrchestrationV2ThreadCapabilities = __vite_ssr_import_2__.Struct({
	canCreateEmptyThread: __vite_ssr_import_2__.Boolean,
	canReadThreadSnapshot: __vite_ssr_import_2__.Boolean,
	canRollbackThread: __vite_ssr_import_2__.Boolean,
	canForkThread: __vite_ssr_import_2__.Boolean,
	canForkFromTurn: __vite_ssr_import_2__.Boolean,
	canForkFromSubagentThread: __vite_ssr_import_2__.Boolean,
	exposesNativeThreadId: __vite_ssr_import_2__.Boolean
});
const OrchestrationV2TurnCapabilities = __vite_ssr_import_2__.Struct({
	exposesNativeTurnId: __vite_ssr_import_2__.Boolean,
	emitsTurnStarted: __vite_ssr_import_2__.Boolean,
	emitsTurnCompleted: __vite_ssr_import_2__.Boolean,
	supportsInterrupt: __vite_ssr_import_2__.Boolean,
	supportsActiveSteering: __vite_ssr_import_2__.Boolean,
	// Some native steering mechanisms cancel pending tools before consuming the message.
	activeSteeringInterruptsTools: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
	supportsSteeringByInterruptRestart: __vite_ssr_import_2__.Boolean,
	supportsQueuedMessages: __vite_ssr_import_2__.Boolean,
	terminalStatusQuality: __vite_ssr_import_2__.Literals([
		"strong",
		"weak",
		"none"
	])
});
const OrchestrationV2StreamingCapabilities = __vite_ssr_import_2__.Struct({
	streamsAssistantText: __vite_ssr_import_2__.Boolean,
	streamsReasoning: __vite_ssr_import_2__.Boolean,
	streamsToolOutput: __vite_ssr_import_2__.Boolean,
	streamsPlanText: __vite_ssr_import_2__.Boolean,
	emitsMessageCompleted: __vite_ssr_import_2__.Boolean
});
const OrchestrationV2ToolCapabilities = __vite_ssr_import_2__.Struct({
	exposesToolItemIds: __vite_ssr_import_2__.Boolean,
	emitsToolStarted: __vite_ssr_import_2__.Boolean,
	emitsToolCompleted: __vite_ssr_import_2__.Boolean,
	emitsToolOutput: __vite_ssr_import_2__.Boolean,
	supportsMcpTools: __vite_ssr_import_2__.Boolean,
	supportsDynamicToolCallbacks: __vite_ssr_import_2__.Boolean
});
const OrchestrationV2ApprovalCapabilities = __vite_ssr_import_2__.Struct({
	supportsCommandApproval: __vite_ssr_import_2__.Boolean,
	supportsFileReadApproval: __vite_ssr_import_2__.Boolean,
	supportsFileChangeApproval: __vite_ssr_import_2__.Boolean,
	supportsApplyPatchApproval: __vite_ssr_import_2__.Boolean,
	approvalsHaveNativeRequestIds: __vite_ssr_import_2__.Boolean,
	approvalCallbacksAreLiveOnly: __vite_ssr_import_2__.Boolean,
	approvalsCanOriginateFromSubagents: __vite_ssr_import_2__.Boolean
});
const OrchestrationV2PlanningCapabilities = __vite_ssr_import_2__.Struct({
	emitsPlanUpdated: __vite_ssr_import_2__.Boolean,
	emitsTodoList: __vite_ssr_import_2__.Boolean,
	emitsProposedPlan: __vite_ssr_import_2__.Boolean,
	supportsStructuredQuestions: __vite_ssr_import_2__.Boolean,
	planDeltasHaveItemIds: __vite_ssr_import_2__.Boolean
});
const OrchestrationV2SubagentCapabilities = __vite_ssr_import_2__.Struct({
	supportsSubagents: __vite_ssr_import_2__.Boolean,
	exposesSubagentThreadIds: __vite_ssr_import_2__.Boolean,
	emitsSubagentLifecycle: __vite_ssr_import_2__.Boolean,
	canWaitForSubagents: __vite_ssr_import_2__.Boolean,
	canCloseSubagents: __vite_ssr_import_2__.Boolean,
	canForkSubagentThread: __vite_ssr_import_2__.Boolean
});
const OrchestrationV2ContextCapabilities = __vite_ssr_import_2__.Struct({
	acceptsSystemContext: __vite_ssr_import_2__.Boolean,
	acceptsDeveloperContext: __vite_ssr_import_2__.Boolean,
	acceptsSyntheticUserContext: __vite_ssr_import_2__.Boolean,
	canGenerateSummaries: __vite_ssr_import_2__.Boolean,
	canConsumeHandoffSummaries: __vite_ssr_import_2__.Boolean,
	supportsDeltaHandoff: __vite_ssr_import_2__.Boolean,
	supportsFullThreadHandoff: __vite_ssr_import_2__.Boolean,
	maxRecommendedHandoffChars: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.PositiveInt))
});
const OrchestrationV2CheckpointCapabilities = __vite_ssr_import_2__.Struct({
	appCanCheckpointFilesystem: __vite_ssr_import_2__.Boolean,
	supportsNestedCheckpointScopes: __vite_ssr_import_2__.Boolean,
	providerCanRollbackConversation: __vite_ssr_import_2__.Boolean,
	providerRollbackReturnsSnapshot: __vite_ssr_import_2__.Boolean,
	providerCanReadConversationSnapshot: __vite_ssr_import_2__.Boolean
});
const OrchestrationV2RuntimePolicyCapabilities = __vite_ssr_import_2__.Struct({ enforcement: __vite_ssr_import_2__.Literals(["native", "client-boundary"]) });
const OrchestrationV2IdentityCapabilities = __vite_ssr_import_2__.Struct({
	nativeThreadIds: OrchestrationV2NativeRefStrength,
	nativeTurnIds: OrchestrationV2NativeRefStrength,
	nativeItemIds: OrchestrationV2NativeRefStrength,
	nativeRequestIds: OrchestrationV2NativeRefStrength
});
const OrchestrationV2ProviderCapabilities = __vite_ssr_import_2__.Struct({
	sessions: OrchestrationV2SessionCapabilities,
	threads: OrchestrationV2ThreadCapabilities,
	turns: OrchestrationV2TurnCapabilities,
	streaming: OrchestrationV2StreamingCapabilities,
	tools: OrchestrationV2ToolCapabilities,
	approvals: OrchestrationV2ApprovalCapabilities,
	planning: OrchestrationV2PlanningCapabilities,
	subagents: OrchestrationV2SubagentCapabilities,
	context: OrchestrationV2ContextCapabilities,
	checkpointing: OrchestrationV2CheckpointCapabilities,
	identity: OrchestrationV2IdentityCapabilities,
	// Replay defaults old events to the weaker client-boundary guarantee.
	runtimePolicy: OrchestrationV2RuntimePolicyCapabilities.pipe(__vite_ssr_import_2__.withDecodingDefault(__vite_ssr_import_1__.succeed({ enforcement: "client-boundary" })))
});
const OrchestrationV2LimitRecovery = __vite_ssr_import_2__.Struct({
	requestId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.CommandId)),
	runId: __vite_ssr_import_6__.RunId,
	resetAt: __vite_ssr_import_6__.IsoDateTime,
	autoResume: __vite_ssr_import_2__.Boolean,
	snooze: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean)
});
const OrchestrationV2LimitRecoveryUpdate = __vite_ssr_import_2__.Struct({
	runId: __vite_ssr_import_6__.RunId,
	resetAt: __vite_ssr_import_6__.IsoDateTime,
	autoResume: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
	snooze: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean)
}).check(__vite_ssr_import_2__.makeFilter((update) => update.autoResume !== undefined || update.snooze !== undefined || "A recovery update must include autoResume or snooze."));
/**
* `score` is an open count that halves every two weeks, as of `openedAt`.
* `picks` stores lowercase palette queries, newest first.
* Times are epoch milliseconds for ranking arithmetic.
*/
const OrchestrationV2ThreadOpens = __vite_ssr_import_2__.Struct({
	openedAt: __vite_ssr_import_2__.Finite,
	score: __vite_ssr_import_2__.Finite.check(__vite_ssr_import_2__.isGreaterThanOrEqualTo(0)),
	picks: __vite_ssr_import_2__.Array(__vite_ssr_import_2__.Struct({
		query: __vite_ssr_import_2__.String.check(__vite_ssr_import_2__.isMaxLength(32)),
		at: __vite_ssr_import_2__.Finite
	})).check(__vite_ssr_import_2__.isMaxLength(3))
});
// Open stats only rank search results, so a value this build cannot read (an
// older or newer shape) becomes null instead of failing the whole thread.
const LenientThreadOpens = __vite_ssr_import_2__.NullOr(OrchestrationV2ThreadOpens).pipe(__vite_ssr_import_2__.catchDecoding(() => __vite_ssr_import_1__.succeedSome(null)));
const OrchestrationV2AppThread = __vite_ssr_import_2__.Struct({
	...OrchestrationV2CreationFields,
	id: __vite_ssr_import_6__.ThreadId,
	projectId: __vite_ssr_import_6__.ProjectId,
	title: __vite_ssr_import_6__.TrimmedNonEmptyString,
	providerInstanceId: __vite_ssr_import_13__.ProviderInstanceId,
	modelSelection: __vite_ssr_import_10__.ModelSelection,
	runtimeMode: __vite_ssr_import_12__.RuntimeMode,
	interactionMode: __vite_ssr_import_12__.ProviderInteractionMode,
	branch: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	worktreePath: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	linkedPullRequest: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_11__.ThreadLinkedPullRequest))),
	pullRequests: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array((0,__vite_ssr_import_11__.ThreadPullRequestLink))),
	branchPullRequest: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_11__.ThreadLinkedPullRequest))),
	activeProviderThreadId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ProviderThreadId)),
	historyOrigin: __vite_ssr_import_2__.optional(OrchestrationV2ThreadHistoryOrigin),
	lineage: OrchestrationV2AppThreadLineage,
	forkedFrom: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.Union([
		__vite_ssr_import_2__.Struct({
			type: __vite_ssr_import_2__.Literal("run"),
			threadId: __vite_ssr_import_6__.ThreadId,
			runId: __vite_ssr_import_6__.RunId
		}),
		__vite_ssr_import_2__.Struct({
			type: __vite_ssr_import_2__.Literal("node"),
			nodeId: __vite_ssr_import_6__.NodeId
		}),
		__vite_ssr_import_2__.Struct({
			type: __vite_ssr_import_2__.Literal("provider_thread"),
			providerThreadId: __vite_ssr_import_6__.ProviderThreadId,
			providerTurnId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ProviderTurnId))
		})
	])),
	createdAt: __vite_ssr_import_2__.DateTimeUtc,
	updatedAt: __vite_ssr_import_2__.DateTimeUtc,
	archivedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc),
	settledOverride: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.Literals(["settled", "active"])).pipe(__vite_ssr_import_2__.withDecodingDefault(__vite_ssr_import_1__.succeed(null))),
	settledAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc).pipe(__vite_ssr_import_2__.withDecodingDefault(__vite_ssr_import_1__.succeed(null))),
	unsettledAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	snoozedUntil: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	snoozedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	lastSnoozeWakeAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	limitRecovery: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(OrchestrationV2LimitRecovery)),
	guestShare: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_8__.ThreadGuestShare))),
	pinnedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	autoSettleDisabledAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	pinOrderKey: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString))),
	activeOrderKey: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString))),
	lastVisitedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc).pipe(__vite_ssr_import_2__.withDecodingDefault(__vite_ssr_import_1__.succeed(null))),
	opens: __vite_ssr_import_2__.optional(LenientThreadOpens),
	titleRegeneration: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.Struct({
		requestId: __vite_ssr_import_6__.CommandId,
		startedAt: __vite_ssr_import_2__.DateTimeUtc
	}))),
	rollbackRequestId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.CommandId)),
	rollbackFailure: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.Struct({
		requestId: __vite_ssr_import_6__.CommandId,
		message: __vite_ssr_import_6__.TrimmedNonEmptyString
	}))),
	deletedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)
});
/** Provider-native children cannot receive messages; T3 delegate_task children can. */
function isProviderNativeSubagentThread(thread) {
	return thread.lineage.relationshipToParent === "subagent" && thread.creationSource === "provider";
};
const IDLE_COMPACTION_TEXT = "/compact";
/** A prompt that only asks the provider to compact, so its turn is the compaction itself. */
function isCompactionCommandMessage(message) {
	return message.role === "user" && message.text.trim().toLowerCase() === IDLE_COMPACTION_TEXT && (message.attachments?.length ?? 0) === 0;
};
/** Why T3 Code sent this `/compact` on its own, or undefined for one someone asked for. */
function idleCompactionOf(message) {
	if (!isCompactionCommandMessage(message)) return undefined;
	if (message.idleCompaction !== undefined) return message.idleCompaction;
	// Servers before `idleCompaction` marked their own as agent-created.
	return message.createdBy === "agent" && message.creationSource === "server" ? "beforeCacheExpires" : undefined;
};
const OrchestrationV2RunStatus = __vite_ssr_import_2__.Literals([
	"preparing",
	"queued",
	"starting",
	"running",
	"waiting",
	"completed",
	"interrupted",
	"failed",
	"cancelled",
	"rolled_back"
]);
const OrchestrationV2DelegatedCompletionTaskDeliveryState = __vite_ssr_import_2__.Literals([
	"pending",
	"claimed",
	"acknowledged",
	"delivered",
	"disposed"
]);
const OrchestrationV2DelegatedCompletionTaskDelivery = __vite_ssr_import_2__.Struct({
	state: OrchestrationV2DelegatedCompletionTaskDeliveryState,
	observedByRunId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId))
});
const OrchestrationV2DelegatedCompletionDelivery = __vite_ssr_import_2__.Struct({
	generation: __vite_ssr_import_6__.PositiveInt,
	messageId: __vite_ssr_import_6__.MessageId,
	taskIds: __vite_ssr_import_2__.Array((0,__vite_ssr_import_6__.NodeId))
});
const OrchestrationV2DelegatedCompletionCohort = __vite_ssr_import_2__.Struct({
	disposition: __vite_ssr_import_2__.Literals([
		"open",
		"stopped",
		"disposed"
	]),
	nextGeneration: __vite_ssr_import_6__.PositiveInt,
	delivery: __vite_ssr_import_2__.NullOr(OrchestrationV2DelegatedCompletionDelivery)
});
const OrchestrationV2RestartCancelledBackgroundWork = __vite_ssr_import_2__.Struct({
	kind: __vite_ssr_import_2__.Literals([
		"subagent",
		"shell",
		"monitor",
		"task"
	]),
	label: __vite_ssr_import_6__.TrimmedNonEmptyString,
	id: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	/** The agent was waiting on this work, so its restart note wakes the agent even for a shell. */
	awaited: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Literal(true))
});
const OrchestrationV2RunBackgroundWorkCancelled = __vite_ssr_import_2__.Struct({
	runId: __vite_ssr_import_6__.RunId,
	restartCancelledBackgroundWork: __vite_ssr_import_2__.Array(OrchestrationV2RestartCancelledBackgroundWork)
});
const OrchestrationV2ThreadLaunchWorkspaceStrategy = __vite_ssr_import_2__.Union([
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("root"),
		branch: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("existing_worktree"),
		worktreePath: __vite_ssr_import_6__.TrimmedNonEmptyString,
		branch: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("worktree"),
		baseRef: __vite_ssr_import_6__.TrimmedNonEmptyString,
		branch: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
		startFromOrigin: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean)
	})
]);
const ORCHESTRATION_V2_WORKSPACE_PREPARATION_FAILURE_CODE = "workspace_preparation_failed";
const OrchestrationV2Run = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.RunId,
	threadId: __vite_ssr_import_6__.ThreadId,
	ordinal: __vite_ssr_import_6__.PositiveInt,
	providerInstanceId: __vite_ssr_import_13__.ProviderInstanceId,
	modelSelection: __vite_ssr_import_10__.ModelSelection,
	providerThreadId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ProviderThreadId)),
	userMessageId: __vite_ssr_import_6__.MessageId,
	rootNodeId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.NodeId)),
	activeAttemptId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunAttemptId)),
	status: OrchestrationV2RunStatus,
	queuePosition: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.PositiveInt))),
	queueHeld: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
	requestedAt: __vite_ssr_import_2__.DateTimeUtc,
	startedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc),
	completedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc),
	checkpointId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.CheckpointId)),
	contextHandoffId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ContextHandoffId)),
	restartContinuationOfRunId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.RunId)),
	delegatedTaskId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NodeId)),
	workStartedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.DateTimeUtc),
	restartCancelledBackgroundWork: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array(OrchestrationV2RestartCancelledBackgroundWork)),
	sourcePlanRef: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Struct({
		threadId: __vite_ssr_import_6__.ThreadId,
		planId: __vite_ssr_import_6__.PlanId
	})),
	delegatedCompletion: __vite_ssr_import_2__.optional(OrchestrationV2DelegatedCompletionCohort),
	workspacePreparation: __vite_ssr_import_2__.optional(OrchestrationV2ThreadLaunchWorkspaceStrategy)
});
function orchestrationV2RunWorkStartedAt(run) {
	return run.workStartedAt ?? run.startedAt ?? run.requestedAt;
};
const OrchestrationV2RunAttempt = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.RunAttemptId,
	// Provider-thread rows can be reused after recovery; retain the native input destination.
	nativeThreadId: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
	runId: __vite_ssr_import_6__.RunId,
	attemptOrdinal: __vite_ssr_import_6__.PositiveInt,
	rootNodeId: __vite_ssr_import_6__.NodeId,
	providerInstanceId: __vite_ssr_import_13__.ProviderInstanceId,
	providerThreadId: __vite_ssr_import_6__.ProviderThreadId,
	providerTurnId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ProviderTurnId)),
	reason: __vite_ssr_import_2__.Literals([
		"initial",
		"steering_restart",
		"retry",
		"provider_recovery"
	]),
	status: __vite_ssr_import_2__.Literals([
		"pending",
		"running",
		"completed",
		"interrupted",
		"failed",
		"cancelled",
		"superseded"
	]),
	startedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc),
	completedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)
});
const OrchestrationV2ExecutionNode = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.NodeId,
	threadId: __vite_ssr_import_6__.ThreadId,
	runId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId)),
	parentNodeId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.NodeId)),
	rootNodeId: __vite_ssr_import_6__.NodeId,
	kind: __vite_ssr_import_2__.Literals([
		"root_turn",
		"assistant_message",
		"reasoning",
		"plan",
		"todo_list",
		"tool_call",
		"approval_request",
		"user_input_request",
		"subagent",
		"hook",
		"system"
	]),
	status: __vite_ssr_import_2__.Literals([
		"idle",
		"pending",
		"running",
		"waiting",
		"completed",
		"interrupted",
		"failed",
		"cancelled",
		"rolled_back"
	]),
	countsForRun: __vite_ssr_import_2__.Boolean,
	providerThreadId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ProviderThreadId)),
	providerTurnId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ProviderTurnId)),
	nativeItemRef: __vite_ssr_import_2__.NullOr(OrchestrationV2ProviderRef),
	runtimeRequestId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RuntimeRequestId)),
	checkpointScopeId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.CheckpointScopeId)),
	startedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc),
	completedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)
});
/** Append-only: phases discovered at runtime join when they start. */
const OrchestrationV2WorkflowPhase = __vite_ssr_import_2__.Struct({
	index: __vite_ssr_import_6__.NonNegativeInt,
	title: __vite_ssr_import_6__.TrimmedNonEmptyString
});
/** Nested timestamps use epoch milliseconds; only top-level DateTimeUtc fields are remapped for JSON. */
const OrchestrationV2WorkflowAgent = __vite_ssr_import_2__.Struct({
	index: __vite_ssr_import_6__.NonNegativeInt,
	label: __vite_ssr_import_6__.TrimmedNonEmptyString,
	agentId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	childThreadId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ThreadId)),
	state: __vite_ssr_import_2__.Literals([
		"queued",
		"running",
		"completed",
		"failed"
	]),
	phaseIndex: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	phaseTitle: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	model: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	attempt: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	totalTokens: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	toolCalls: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	durationMs: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	queuedAt: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	startedAt: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	completedAt: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	prompt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NonEmptyString),
	result: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NonEmptyString)
});
const OrchestrationV2WorkflowRunHandles = __vite_ssr_import_2__.Struct({
	runId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	transcriptDir: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	scriptPath: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString))
});
const OrchestrationV2SubagentWorkflow = __vite_ssr_import_2__.Struct({
	name: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	runHandles: __vite_ssr_import_2__.optional(OrchestrationV2WorkflowRunHandles),
	phases: __vite_ssr_import_2__.Array(OrchestrationV2WorkflowPhase),
	agents: __vite_ssr_import_2__.Array(OrchestrationV2WorkflowAgent),
	totalTokens: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	toolCalls: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	durationMs: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt))
});
/**
* Wire-only. Set for clients that opted in with `acceptDedupedBodies` or `dedupeBodies=1` when the
* marked field was blanked because the client already holds the same value: in the record it
* received earlier on the same response or stream. Restore with
* `@t3tools/shared/orchestrationV2DedupedBodies` before use; never store or forward a marked
* value. Clients that opted in restore only these fields, so blanking another field needs a new
* opt-in.
*/
const DedupedBodyMarker = __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Literal(true));
const OrchestrationV2Subagent = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.NodeId,
	threadId: __vite_ssr_import_6__.ThreadId,
	runId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId)),
	parentNodeId: __vite_ssr_import_6__.NodeId,
	origin: __vite_ssr_import_2__.Literals(["provider_native", "app_owned"]),
	createdBy: OrchestrationV2Actor,
	driver: __vite_ssr_import_13__.ProviderDriverKind,
	providerInstanceId: __vite_ssr_import_13__.ProviderInstanceId,
	providerThreadId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ProviderThreadId)),
	childThreadId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ThreadId)),
	nativeTaskRef: __vite_ssr_import_2__.NullOr(OrchestrationV2ProviderRef),
	prompt: __vite_ssr_import_2__.String,
	title: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.String),
	model: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.String),
	modelSelection: __vite_ssr_import_2__.optional((0,__vite_ssr_import_10__.ModelSelection)),
	completionWake: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Literals(["always", "settled_only"])),
	completionDelivery: __vite_ssr_import_2__.optional(OrchestrationV2DelegatedCompletionTaskDelivery),
	status: __vite_ssr_import_2__.Literals([
		"idle",
		"pending",
		"running",
		"waiting",
		"completed",
		"failed",
		"cancelled",
		"interrupted"
	]),
	progress: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
	workflow: __vite_ssr_import_2__.optional(OrchestrationV2SubagentWorkflow),
	result: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.String),
	startedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc),
	completedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc),
	updatedAt: __vite_ssr_import_2__.DateTimeUtc,
	/** Same as this subagent's previous record on this stream: its snapshot or `subagent.updated`. */
	promptOmitted: DedupedBodyMarker,
	resultOmitted: DedupedBodyMarker
});
function isOrchestrationV2WorkActive(status) {
	return status === "pending" || status === "running" || status === "waiting";
};
const OrchestrationV2CheckpointScope = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.CheckpointScopeId,
	threadId: __vite_ssr_import_6__.ThreadId,
	runId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId)),
	nodeId: __vite_ssr_import_6__.NodeId,
	parentScopeId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.CheckpointScopeId)),
	providerThreadId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ProviderThreadId)),
	kind: __vite_ssr_import_2__.Literals([
		"root_run",
		"subagent",
		"tool",
		"provider_thread",
		"manual"
	]),
	ordinalWithinParent: __vite_ssr_import_6__.NonNegativeInt,
	advancesAppRunCount: __vite_ssr_import_2__.Boolean,
	cwd: __vite_ssr_import_6__.TrimmedNonEmptyString,
	createdAt: __vite_ssr_import_2__.DateTimeUtc
});
const OrchestrationV2ProviderSession = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.ProviderSessionId,
	driver: __vite_ssr_import_13__.ProviderDriverKind,
	providerInstanceId: __vite_ssr_import_13__.ProviderInstanceId,
	status: __vite_ssr_import_2__.Literals([
		"starting",
		"ready",
		"running",
		"waiting",
		"stopped",
		"error"
	]),
	cwd: __vite_ssr_import_6__.TrimmedNonEmptyString,
	model: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	capabilities: OrchestrationV2ProviderCapabilities,
	createdAt: __vite_ssr_import_2__.DateTimeUtc,
	updatedAt: __vite_ssr_import_2__.DateTimeUtc,
	lastError: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.String)
});
const OrchestrationV2ProviderSessionDetached = __vite_ssr_import_2__.Struct({
	providerSessionId: __vite_ssr_import_6__.ProviderSessionId,
	detachedAt: __vite_ssr_import_2__.DateTimeUtc,
	reason: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String)
});
function encodedKind(member) {
	const encoded = __vite_ssr_import_3__.toEncoded(member.ast);
	const kind = __vite_ssr_import_3__.isObjects(encoded) ? encoded.propertySignatures.find((property) => property.name === "kind")?.type : undefined;
	if (kind !== undefined && __vite_ssr_import_3__.isLiteral(kind) && typeof kind.literal === "string") {
		return kind.literal;
	};
	throw new Error("Each member of a kind union needs a literal string `kind`.");
}
function kindUnionWithFallback(members, unknown, fallback) {
	const knownKinds = new Set(members.map(encodedKind));
	const unknownKind = unknown(__vite_ssr_import_2__.optional(__vite_ssr_import_2__.String.check(__vite_ssr_import_2__.makeFilter((kind) => !knownKinds.has(kind) || "A known kind must decode in full.")))).pipe(__vite_ssr_import_2__.decodeTo(__vite_ssr_import_2__.Union(members), {
		decode: __vite_ssr_import_4__.transform(fallback),
		encode: __vite_ssr_import_4__.forbidden(() => "Unknown kinds are decode-only.")
	}));
	return __vite_ssr_import_2__.Union([...members, unknownKind]);
}
const PendingBackgroundTaskFields = {
	taskId: __vite_ssr_import_6__.TrimmedNonEmptyString,
	description: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	/** The subagent task that started this work and waits on it. */
	parentTaskId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	/**
	* The agent declared it resumes when this work ends, so the thread holds like it does for a
	* subagent. Only the agent knows whether a command is a wait or a dev server it left running.
	*/
	awaited: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Literal(true))
};
const OrchestrationV2PendingBackgroundTask = kindUnionWithFallback([
	__vite_ssr_import_2__.Struct({
		...PendingBackgroundTaskFields,
		kind: __vite_ssr_import_2__.Literal("subagent"),
		/** The owning provider thread's instance, populated in derived pending work. */
		providerInstanceId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_13__.ProviderInstanceId)),
		childThreadId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ThreadId))
	}),
	__vite_ssr_import_2__.Struct({
		...PendingBackgroundTaskFields,
		kind: __vite_ssr_import_2__.Literal("command")
	}),
	__vite_ssr_import_2__.Struct({
		...PendingBackgroundTaskFields,
		kind: __vite_ssr_import_2__.Literal("monitor")
	}),
	__vite_ssr_import_2__.Struct({
		...PendingBackgroundTaskFields,
		kind: __vite_ssr_import_2__.Literal("background_task")
	})
], (kind) => __vite_ssr_import_2__.Struct({
	...PendingBackgroundTaskFields,
	kind
}), ({ taskId, description, parentTaskId }) => ({
	taskId,
	...description === undefined ? {} : { description },
	...parentTaskId === undefined ? {} : { parentTaskId },
	kind: "background_task"
}));
const OrchestrationV2ProviderThreadNativeMetadata = __vite_ssr_import_2__.Struct({
	modelSelection: __vite_ssr_import_2__.optional((0,__vite_ssr_import_10__.ModelSelection)),
	title: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString))),
	updatedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString))),
	itemIdentityVersion: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Literal(2)),
	forkHeadMessageId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString))
});
const OrchestrationV2ProviderGoalStatus = __vite_ssr_import_2__.Literals([
	"active",
	"paused",
	"blocked",
	"usage_limited",
	"budget_limited",
	"complete"
]);
const OrchestrationV2ProviderGoal = __vite_ssr_import_2__.Struct({
	objective: __vite_ssr_import_6__.TrimmedNonEmptyString,
	status: OrchestrationV2ProviderGoalStatus,
	tokensUsed: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	tokenBudget: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.NonNegativeInt))),
	timeUsedSeconds: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	checks: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	lastCheck: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String)
});
const OrchestrationV2ProviderThread = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.ProviderThreadId,
	driver: __vite_ssr_import_13__.ProviderDriverKind,
	providerInstanceId: __vite_ssr_import_13__.ProviderInstanceId,
	providerSessionId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ProviderSessionId)),
	appThreadId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ThreadId)),
	ownerNodeId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.NodeId)),
	nativeThreadRef: __vite_ssr_import_2__.NullOr(OrchestrationV2ProviderRef),
	nativeConversationHeadRef: __vite_ssr_import_2__.NullOr(OrchestrationV2ProviderRef),
	status: __vite_ssr_import_2__.Literals([
		"not_loaded",
		"idle",
		"active",
		"archived",
		"closed",
		"error"
	]),
	firstRunOrdinal: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.PositiveInt)),
	lastRunOrdinal: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.PositiveInt)),
	handoffIds: __vite_ssr_import_2__.Array((0,__vite_ssr_import_6__.ContextHandoffId)),
	forkedFrom: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.Struct({
		providerThreadId: __vite_ssr_import_6__.ProviderThreadId,
		providerTurnId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ProviderTurnId)),
		checkpointId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.CheckpointId))
	})),
	pendingBackgroundTasks: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array(OrchestrationV2PendingBackgroundTask)).pipe(__vite_ssr_import_2__.withDecodingDefault(__vite_ssr_import_1__.succeed([]))),
	contextUsage: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_16__.ThreadTokenUsageSnapshot))).pipe(__vite_ssr_import_2__.withDecodingDefault(__vite_ssr_import_1__.succeed(null))),
	nativeMetadata: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(OrchestrationV2ProviderThreadNativeMetadata)).pipe(__vite_ssr_import_2__.withDecodingDefault(__vite_ssr_import_1__.succeed(null))),
	goal: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(OrchestrationV2ProviderGoal)).pipe(__vite_ssr_import_2__.withDecodingDefault(__vite_ssr_import_1__.succeed(null))),
	createdAt: __vite_ssr_import_2__.DateTimeUtc,
	updatedAt: __vite_ssr_import_2__.DateTimeUtc
});
const OrchestrationV2HistoricalMessage = __vite_ssr_import_2__.Struct({
	role: __vite_ssr_import_2__.Literals(["user", "assistant"]),
	text: __vite_ssr_import_2__.String,
	runStatus: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
	threadId: __vite_ssr_import_6__.ThreadId,
	runId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId)),
	itemId: __vite_ssr_import_6__.TurnItemId,
	providerThreadId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ProviderThreadId)),
	status: __vite_ssr_import_2__.String,
	kind: __vite_ssr_import_2__.String
});
const OrchestrationV2ContextHandoff = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.ContextHandoffId,
	transferId: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ContextTransferId))),
	threadId: __vite_ssr_import_6__.ThreadId,
	targetRunId: __vite_ssr_import_6__.RunId,
	fromProviderThreadIds: __vite_ssr_import_2__.Array((0,__vite_ssr_import_6__.ProviderThreadId)),
	toProviderThreadId: __vite_ssr_import_6__.ProviderThreadId,
	coveredRunOrdinals: __vite_ssr_import_2__.Struct({
		from: __vite_ssr_import_6__.PositiveInt,
		to: __vite_ssr_import_6__.PositiveInt
	}),
	strategy: __vite_ssr_import_2__.Literals([
		"delta_since_target_last_seen",
		"fork_delta_summary",
		"full_thread_summary",
		"checkpoint_summary",
		"manual_context"
	]),
	status: __vite_ssr_import_2__.Literals([
		"pending",
		"ready",
		"failed",
		"superseded"
	]),
	summaryMessageId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.MessageId)),
	summaryText: __vite_ssr_import_2__.String,
	history: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Struct({
		messages: __vite_ssr_import_2__.Array(OrchestrationV2HistoricalMessage),
		coverage: __vite_ssr_import_2__.String,
		omittedItems: __vite_ssr_import_6__.NonNegativeInt,
		omittedItemIds: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array((0,__vite_ssr_import_6__.TurnItemId)))
	})),
	delivery: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Struct({
		nativeThreadId: __vite_ssr_import_2__.String,
		status: __vite_ssr_import_2__.Literals([
			"pending",
			"injected",
			"inline"
		]),
		itemIds: __vite_ssr_import_2__.Array((0,__vite_ssr_import_6__.TurnItemId)),
		omittedItemIds: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array((0,__vite_ssr_import_6__.TurnItemId)))
	})),
	detailInTurnItem: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Literal(true)),
	createdByProviderInstanceId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_13__.ProviderInstanceId)),
	createdAt: __vite_ssr_import_2__.DateTimeUtc,
	updatedAt: __vite_ssr_import_2__.DateTimeUtc
});
const OrchestrationV2ProviderTurn = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.ProviderTurnId,
	providerThreadId: __vite_ssr_import_6__.ProviderThreadId,
	nodeId: __vite_ssr_import_6__.NodeId,
	runAttemptId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunAttemptId)),
	nativeTurnRef: __vite_ssr_import_2__.NullOr(OrchestrationV2ProviderRef),
	ordinal: __vite_ssr_import_6__.PositiveInt,
	status: __vite_ssr_import_2__.Literals([
		"pending",
		"running",
		"completed",
		"interrupted",
		"failed",
		"cancelled"
	]),
	startedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc),
	completedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc),
	tokenUsage: __vite_ssr_import_2__.optional(OrchestrationV2ProviderTurnTokenUsage),
	turnTokenUsage: __vite_ssr_import_2__.optional((0,__vite_ssr_import_15__.TurnTokenUsage))
});
/** Codex goals can span multiple native turns within one attempt. */
function latestProviderTurnForAttempt(providerTurns, attemptId) {
	let latest;
	for (const turn of providerTurns) {
		if (attemptId == null || turn.runAttemptId !== attemptId) continue;
		if (latest === undefined || turn.ordinal > latest.ordinal) latest = turn;
	};
	return latest;
};
const OrchestrationV2RuntimeRequest = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.RuntimeRequestId,
	nodeId: __vite_ssr_import_6__.NodeId,
	providerTurnId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ProviderTurnId)),
	nativeRequestRef: __vite_ssr_import_2__.NullOr(OrchestrationV2ProviderRef),
	kind: __vite_ssr_import_2__.Union([__vite_ssr_import_12__.ProviderRequestKind, __vite_ssr_import_2__.Literals([
		"dynamic_tool_call",
		"user_input",
		"auth_refresh"
	])]),
	status: __vite_ssr_import_2__.Literals([
		"pending",
		"resolved",
		"expired",
		"cancelled"
	]),
	responseCapability: __vite_ssr_import_2__.Union([
		__vite_ssr_import_2__.Struct({
			type: __vite_ssr_import_2__.Literal("live"),
			providerSessionId: __vite_ssr_import_6__.ProviderSessionId,
			supportsFeedback: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean)
		}),
		__vite_ssr_import_2__.Struct({ type: __vite_ssr_import_2__.Literal("message") }),
		__vite_ssr_import_2__.Struct({
			type: __vite_ssr_import_2__.Literal("not_resumable"),
			reason: __vite_ssr_import_2__.String
		})
	]),
	createdAt: __vite_ssr_import_2__.DateTimeUtc,
	resolvedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc),
	decision: __vite_ssr_import_2__.optional((0,__vite_ssr_import_12__.ProviderApprovalDecision)),
	feedback: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
	answers: __vite_ssr_import_2__.optional((0,__vite_ssr_import_12__.ProviderUserInputAnswers))
});
const SubagentNotificationSource = __vite_ssr_import_2__.Struct({
	kind: __vite_ssr_import_2__.Literal("subagent"),
	childThreadId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ThreadId))
});
const CommandNotificationSource = __vite_ssr_import_2__.Struct({ kind: __vite_ssr_import_2__.Literal("command") });
/** Encode legacy background_command/background_task shapes first so older clients accept command/subagent sources. */
const OrchestrationV2NotificationSource = kindUnionWithFallback([
	__vite_ssr_import_2__.Struct({
		kind: __vite_ssr_import_2__.Literal("delegated_task"),
		taskIds: __vite_ssr_import_2__.Array((0,__vite_ssr_import_6__.NodeId)),
		childThreadId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ThreadId))
	}),
	__vite_ssr_import_2__.Struct({
		kind: __vite_ssr_import_2__.Literal("background_task"),
		work: __vite_ssr_import_2__.Literal("subagent"),
		childThreadId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ThreadId))
	}).pipe(__vite_ssr_import_2__.decodeTo(__vite_ssr_import_2__.toType(SubagentNotificationSource), {
		decode: __vite_ssr_import_4__.transform(({ childThreadId }) => childThreadId === undefined ? { kind: "subagent" } : {
			kind: "subagent",
			childThreadId
		}),
		encode: __vite_ssr_import_4__.transform(({ childThreadId }) => ({
			kind: "background_task",
			work: "subagent",
			...childThreadId === undefined ? {} : { childThreadId }
		}))
	})),
	__vite_ssr_import_2__.Struct({ kind: __vite_ssr_import_2__.Literal("background_command").transform("command") }),
	SubagentNotificationSource,
	CommandNotificationSource,
	__vite_ssr_import_2__.Struct({ kind: __vite_ssr_import_2__.Literal("monitor") }),
	__vite_ssr_import_2__.Struct({ kind: __vite_ssr_import_2__.Literal("background_task") }),
	__vite_ssr_import_2__.Struct({ kind: __vite_ssr_import_2__.Literal("system") })
], (kind) => __vite_ssr_import_2__.Struct({ kind }), () => ({ kind: "background_task" }));
const OrchestrationV2Notification = __vite_ssr_import_2__.Struct({
	source: OrchestrationV2NotificationSource,
	outcome: __vite_ssr_import_2__.Literals([
		"completed",
		"failed",
		"cancelled",
		"updated",
		"unknown"
	]),
	summary: __vite_ssr_import_6__.TrimmedNonEmptyString,
	detail: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String)
});
/** Why T3 Code compacted a thread on its own, on the `/compact` it sent. */
const OrchestrationV2IdleCompaction = __vite_ssr_import_2__.Literals(["beforeCacheExpires", "onReturn"]);
const OrchestrationV2ConversationMessage = __vite_ssr_import_2__.Struct({
	notification: __vite_ssr_import_2__.optional(OrchestrationV2Notification),
	...OrchestrationV2CreationFields,
	scheduledTaskId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ScheduledTaskId)),
	senderThreadId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ThreadId)),
	idleCompaction: __vite_ssr_import_2__.optional(OrchestrationV2IdleCompaction),
	/**
	* The message is the script a provider-native workflow run executes, not prose. Clients show
	* the workflow's opening instead and keep the script behind a disclosure.
	*/
	workflowScript: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
	id: __vite_ssr_import_6__.MessageId,
	threadId: __vite_ssr_import_6__.ThreadId,
	runId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId)),
	nodeId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.NodeId)),
	role: __vite_ssr_import_2__.Literals([
		"user",
		"assistant",
		"system"
	]),
	text: __vite_ssr_import_2__.String,
	context: __vite_ssr_import_2__.optional((0,__vite_ssr_import_0__.OrchestrationMessageContext)),
	attachments: __vite_ssr_import_2__.Array((0,__vite_ssr_import_7__.ChatAttachment)),
	streaming: __vite_ssr_import_2__.Boolean,
	createdAt: __vite_ssr_import_2__.DateTimeUtc,
	updatedAt: __vite_ssr_import_2__.DateTimeUtc,
	delegatedCompletion: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Struct({
		parentRunId: __vite_ssr_import_6__.RunId,
		generation: __vite_ssr_import_6__.PositiveInt,
		taskIds: __vite_ssr_import_2__.Array((0,__vite_ssr_import_6__.NodeId))
	}))
});
const OrchestrationV2PlanStep = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.TrimmedNonEmptyString,
	text: __vite_ssr_import_6__.TrimmedNonEmptyString,
	status: __vite_ssr_import_2__.Literals([
		"pending",
		"running",
		"completed"
	]),
	durationAnchorAt: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.IsoDateTime)),
	durationMs: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt))
});
const OrchestrationV2UserInputQuestion = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.TrimmedNonEmptyString,
	header: __vite_ssr_import_6__.TrimmedNonEmptyString,
	question: __vite_ssr_import_6__.TrimmedNonEmptyString,
	options: __vite_ssr_import_2__.Array(__vite_ssr_import_2__.Struct({
		label: __vite_ssr_import_6__.TrimmedNonEmptyString,
		description: __vite_ssr_import_6__.TrimmedNonEmptyString,
		value: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		preview: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String)
	})),
	multiSelect: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
	allowCustomAnswer: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
	initialAnswer: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
	required: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean)
});
const OrchestrationV2PlanArtifactBaseFields = {
	id: __vite_ssr_import_6__.PlanId,
	threadId: __vite_ssr_import_6__.ThreadId,
	runId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId)),
	nodeId: __vite_ssr_import_6__.NodeId,
	status: __vite_ssr_import_2__.Literals([
		"draft",
		"active",
		"completed",
		"superseded"
	]),
	detailInTurnItem: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Literal(true))
};
const OrchestrationV2PlanArtifact = __vite_ssr_import_2__.Union([__vite_ssr_import_2__.Struct({
	...OrchestrationV2PlanArtifactBaseFields,
	kind: __vite_ssr_import_2__.Literal("proposed_plan"),
	markdown: __vite_ssr_import_2__.String
}), __vite_ssr_import_2__.Struct({
	...OrchestrationV2PlanArtifactBaseFields,
	kind: __vite_ssr_import_2__.Literal("todo_list"),
	steps: __vite_ssr_import_2__.Array(OrchestrationV2PlanStep),
	explanation: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String)
})]);
const OrchestrationV2CheckpointFileSummary = __vite_ssr_import_2__.Struct({
	path: __vite_ssr_import_6__.TrimmedNonEmptyString,
	kind: __vite_ssr_import_6__.TrimmedNonEmptyString,
	additions: __vite_ssr_import_6__.NonNegativeInt,
	deletions: __vite_ssr_import_6__.NonNegativeInt
});
const OrchestrationV2Checkpoint = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.CheckpointId,
	threadId: __vite_ssr_import_6__.ThreadId,
	scopeId: __vite_ssr_import_6__.CheckpointScopeId,
	runId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId)),
	nodeId: __vite_ssr_import_6__.NodeId,
	parentCheckpointId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.CheckpointId)),
	ordinalWithinScope: __vite_ssr_import_6__.NonNegativeInt,
	appRunOrdinal: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.PositiveInt)),
	ref: __vite_ssr_import_6__.CheckpointRef,
	status: __vite_ssr_import_2__.Literals([
		"ready",
		"missing",
		"error",
		"stale"
	]),
	files: __vite_ssr_import_2__.Array(OrchestrationV2CheckpointFileSummary),
	capturedAt: __vite_ssr_import_2__.DateTimeUtc
});
const OrchestrationV2CheckpointRollbackRequest = __vite_ssr_import_2__.Struct({
	scopeId: __vite_ssr_import_6__.CheckpointScopeId,
	checkpointId: __vite_ssr_import_6__.CheckpointId,
	requestedAt: __vite_ssr_import_2__.DateTimeUtc
});
class OrchestrationV2CheckpointUnavailableError extends __vite_ssr_import_2__.TaggedError()("OrchestrationV2CheckpointUnavailableError", {
	threadId: __vite_ssr_import_6__.ThreadId,
	target: __vite_ssr_import_2__.String
}) {
	get message() {
		return `Rollback target ${this.target} is unavailable for thread ${this.threadId}.`;
	}
};
const OrchestrationV2TurnItemStatus = __vite_ssr_import_2__.Literals([
	"idle",
	"pending",
	"running",
	"waiting",
	"completed",
	"failed",
	"cancelled",
	"interrupted"
]);
const OrchestrationV2FileChangeDetail = __vite_ssr_import_2__.Struct({
	operation: __vite_ssr_import_6__.TrimmedNonEmptyString,
	path: __vite_ssr_import_6__.TrimmedNonEmptyString,
	oldPath: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	fileType: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	mimeType: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString))
});
const OrchestrationV2ProviderFailureClass = __vite_ssr_import_2__.Literals([
	"usage_limit",
	"provider_error",
	"transport_error",
	"permission_error",
	"validation_error",
	"unknown"
]);
const OrchestrationV2ProviderFailureMessage = __vite_ssr_import_6__.TrimmedNonEmptyString.check(__vite_ssr_import_2__.isMaxLength(4096));
const OrchestrationV2ProviderFailureCode = __vite_ssr_import_6__.TrimmedNonEmptyString.check(__vite_ssr_import_2__.isMaxLength(128));
/** Producers must redact credentials before construction. */
const OrchestrationV2ProviderFailure = __vite_ssr_import_2__.Struct({
	class: OrchestrationV2ProviderFailureClass,
	message: OrchestrationV2ProviderFailureMessage,
	code: __vite_ssr_import_2__.NullOr(OrchestrationV2ProviderFailureCode),
	retryable: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.Boolean),
	resetAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.IsoDateTime)))
});
const OrchestrationV2ProviderRetry = __vite_ssr_import_2__.Struct({
	attempt: __vite_ssr_import_6__.PositiveInt,
	maxAttempts: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.PositiveInt)),
	retryDelayMs: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.NonNegativeInt))
});
const OrchestrationV2ProviderThreadDisposition = __vite_ssr_import_2__.Literals(["reusable", "broken"]);
const OrchestrationV2UserMessageInputIntent = __vite_ssr_import_2__.Literals([
	"turn_start",
	"queued_turn",
	"steer",
	"promoted_queued_to_steer"
]);
const OrchestrationV2TurnItemBaseFields = {
	toolNonExecutionKind: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
	toolSurface: __vite_ssr_import_2__.optional((0,__vite_ssr_import_15__.ToolActivitySurface)),
	toolIcon: __vite_ssr_import_2__.optional((0,__vite_ssr_import_15__.ToolActivityIcon)),
	toolSource: __vite_ssr_import_2__.optional((0,__vite_ssr_import_15__.ToolActivitySource)),
	id: __vite_ssr_import_6__.TurnItemId,
	threadId: __vite_ssr_import_6__.ThreadId,
	runId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId)),
	nodeId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.NodeId)),
	providerThreadId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ProviderThreadId)),
	providerTurnId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ProviderTurnId)),
	nativeItemRef: __vite_ssr_import_2__.NullOr(OrchestrationV2ProviderRef),
	parentItemId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TurnItemId)),
	ordinal: __vite_ssr_import_6__.NonNegativeInt,
	status: OrchestrationV2TurnItemStatus,
	title: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.String),
	startedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc),
	completedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc),
	updatedAt: __vite_ssr_import_2__.DateTimeUtc
};
const OrchestrationV2FileSearchResult = __vite_ssr_import_2__.Struct({
	fileName: __vite_ssr_import_6__.TrimmedNonEmptyString,
	line: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.PositiveInt)),
	column: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.PositiveInt)),
	preview: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String)
});
const OrchestrationV2WebSearchResult = __vite_ssr_import_2__.Struct({
	title: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
	url: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	snippet: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String)
});
const OrchestrationV2SecretRequestStatus = __vite_ssr_import_2__.Literals([
	"pending",
	"saved",
	"declined",
	"cancelled"
]);
const OrchestrationV2SecretRequestFields = {
	type: __vite_ssr_import_2__.Literal("secret_request"),
	label: __vite_ssr_import_6__.TrimmedNonEmptyString,
	reason: __vite_ssr_import_2__.String,
	placeholder: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
	secretStatus: OrchestrationV2SecretRequestStatus
};
const OrchestrationV2TurnItem = __vite_ssr_import_2__.Union([
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("notification"),
		...OrchestrationV2Notification.fields
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		...OrchestrationV2CreationFields,
		type: __vite_ssr_import_2__.Literal("user_message"),
		messageId: __vite_ssr_import_6__.MessageId,
		scheduledTaskId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ScheduledTaskId)),
		senderThreadId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ThreadId)),
		idleCompaction: __vite_ssr_import_2__.optional(OrchestrationV2IdleCompaction),
		workflowScript: OrchestrationV2ConversationMessage.fields.workflowScript,
		inputIntent: OrchestrationV2UserMessageInputIntent,
		text: __vite_ssr_import_2__.String,
		/** Same as the text of message `messageId`. */
		textOmitted: DedupedBodyMarker,
		context: __vite_ssr_import_2__.optional((0,__vite_ssr_import_0__.OrchestrationMessageContext)),
		attachments: __vite_ssr_import_2__.Array((0,__vite_ssr_import_7__.ChatAttachment))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("assistant_message"),
		messageId: __vite_ssr_import_6__.MessageId,
		text: __vite_ssr_import_2__.String,
		textOmitted: DedupedBodyMarker,
		attachments: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array((0,__vite_ssr_import_7__.ChatAttachment))),
		streaming: __vite_ssr_import_2__.Boolean
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("reasoning"),
		text: __vite_ssr_import_2__.String,
		streaming: __vite_ssr_import_2__.Boolean
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("proposed_plan"),
		planId: __vite_ssr_import_6__.PlanId,
		markdown: __vite_ssr_import_2__.String,
		streaming: __vite_ssr_import_2__.Boolean
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("todo_list"),
		planId: __vite_ssr_import_6__.PlanId,
		steps: __vite_ssr_import_2__.Array(OrchestrationV2PlanStep),
		explanation: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String)
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("user_input_request"),
		requestId: __vite_ssr_import_6__.RuntimeRequestId,
		questions: __vite_ssr_import_2__.Array(OrchestrationV2UserInputQuestion),
		questionAnswer: __vite_ssr_import_2__.optional((0,__vite_ssr_import_12__.UserInputAttachmentAnswerPayload)),
		responseMode: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Literal("message"))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("file_change"),
		fileName: __vite_ssr_import_6__.TrimmedNonEmptyString,
		additions: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
		deletions: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
		diffStr: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		oldStr: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		newStr: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		changes: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array(OrchestrationV2FileChangeDetail))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("command_execution"),
		input: __vite_ssr_import_2__.String,
		output: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		/** Set on the wire when output was withheld; fetch it with getTurnItem. */
		outputOmitted: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
		outputIndicatesFailure: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
		exitCode: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Int),
		/** Set when the command is a monitor, so background work lists it as a monitor. */
		monitor: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean)
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("file_search"),
		pattern: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		results: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array(OrchestrationV2FileSearchResult))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("web_search"),
		patterns: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array(__vite_ssr_import_2__.String)),
		results: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array(OrchestrationV2WebSearchResult))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("approval_request"),
		requestId: __vite_ssr_import_6__.RuntimeRequestId,
		requestKind: __vite_ssr_import_12__.ProviderRequestKind,
		prompt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		reason: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		fullAccessOverride: __vite_ssr_import_2__.optional((0,__vite_ssr_import_12__.ProviderApprovalFullAccessOverride)),
		appName: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		options: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array((0,__vite_ssr_import_12__.ProviderApprovalOption)))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("checkpoint"),
		checkpointId: __vite_ssr_import_6__.CheckpointId,
		scopeId: __vite_ssr_import_6__.CheckpointScopeId,
		files: __vite_ssr_import_2__.Array(OrchestrationV2CheckpointFileSummary),
		/** Same as the files of checkpoint `checkpointId`. */
		filesOmitted: DedupedBodyMarker
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("run_interrupt_request"),
		message: __vite_ssr_import_2__.String
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("run_interrupt_result"),
		message: __vite_ssr_import_2__.String
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("system_notice"),
		message: __vite_ssr_import_2__.String
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("error"),
		failure: OrchestrationV2ProviderFailure,
		retry: __vite_ssr_import_2__.optional(OrchestrationV2ProviderRetry)
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("compaction"),
		driver: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_13__.ProviderDriverKind)),
		summary: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		beforeTokenCount: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
		afterTokenCount: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("handoff"),
		contextHandoffId: __vite_ssr_import_6__.ContextHandoffId,
		fromProviderThreadIds: __vite_ssr_import_2__.Array((0,__vite_ssr_import_6__.ProviderThreadId)),
		toProviderThreadId: __vite_ssr_import_6__.ProviderThreadId,
		fromProviderInstanceIds: __vite_ssr_import_2__.Array((0,__vite_ssr_import_13__.ProviderInstanceId)),
		toProviderInstanceId: __vite_ssr_import_13__.ProviderInstanceId,
		fromModelSelections: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array((0,__vite_ssr_import_10__.ModelSelection))),
		toModel: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		strategy: __vite_ssr_import_2__.Literals([
			"delta_since_target_last_seen",
			"fork_delta_summary",
			"full_thread_summary",
			"checkpoint_summary",
			"manual_context"
		]),
		summary: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String)
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("fork"),
		source: __vite_ssr_import_2__.Union([
			__vite_ssr_import_2__.Struct({
				type: __vite_ssr_import_2__.Literal("run"),
				threadId: __vite_ssr_import_6__.ThreadId,
				runId: __vite_ssr_import_6__.RunId
			}),
			__vite_ssr_import_2__.Struct({
				type: __vite_ssr_import_2__.Literal("node"),
				nodeId: __vite_ssr_import_6__.NodeId
			}),
			__vite_ssr_import_2__.Struct({
				type: __vite_ssr_import_2__.Literal("provider_thread"),
				providerThreadId: __vite_ssr_import_6__.ProviderThreadId,
				providerTurnId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ProviderTurnId))
			})
		]),
		targetThreadId: __vite_ssr_import_6__.ThreadId,
		providerThreadId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ProviderThreadId))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("thread_created"),
		targetThreadId: __vite_ssr_import_6__.ThreadId,
		targetRunId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId)),
		targetProviderInstanceId: __vite_ssr_import_13__.ProviderInstanceId,
		targetModel: __vite_ssr_import_6__.TrimmedNonEmptyString
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		...OrchestrationV2SecretRequestFields
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("subagent"),
		subagentId: __vite_ssr_import_6__.NodeId,
		origin: __vite_ssr_import_2__.Literals(["provider_native", "app_owned"]),
		driver: __vite_ssr_import_13__.ProviderDriverKind,
		providerInstanceId: __vite_ssr_import_13__.ProviderInstanceId,
		childThreadId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ThreadId)),
		prompt: __vite_ssr_import_2__.String,
		progress: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		result: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.String),
		/** Same as the prompt and result of subagent `subagentId`. */
		promptOmitted: DedupedBodyMarker,
		resultOmitted: DedupedBodyMarker
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemBaseFields,
		type: __vite_ssr_import_2__.Literal("dynamic_tool"),
		toolName: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
		viewedImagePath: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
		input: __vite_ssr_import_2__.Unknown,
		output: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Unknown),
		/** Set on the wire when output was withheld; fetch it with getTurnItem. */
		outputOmitted: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean)
	})
]);
const isUnknownTurnItem = (0,__vite_ssr_import_6__.hasUnknownUnionTag)(OrchestrationV2TurnItem.members, "type");
const turnItemArray = (union) => (0,__vite_ssr_import_6__.ForwardCompatibleUnionArray)(union.members, "type");
const projectedTurnItemArray = (row, rowWithUnknownItem) => __vite_ssr_import_2__.Array(rowWithUnknownItem).pipe(__vite_ssr_import_2__.decodeTo(__vite_ssr_import_2__.Array(__vite_ssr_import_2__.toType(row)), __vite_ssr_import_5__.transform({
	decode: (rows) => rows.filter((projected) => !(0,__vite_ssr_import_6__.isUnknownUnionMember)(projected.item)),
	encode: (rows) => rows
})));
const OrchestrationV2ProjectedTurnItem = __vite_ssr_import_2__.Struct({
	position: __vite_ssr_import_6__.NonNegativeInt,
	visibility: __vite_ssr_import_2__.Literals([
		"local",
		"inherited",
		"synthetic"
	]),
	sourceThreadId: __vite_ssr_import_6__.ThreadId,
	sourceItemId: __vite_ssr_import_6__.TurnItemId,
	item: OrchestrationV2TurnItem
});
const OrchestrationV2RawProviderEvent = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.RawEventId,
	driver: __vite_ssr_import_13__.ProviderDriverKind,
	providerInstanceId: __vite_ssr_import_13__.ProviderInstanceId,
	providerSessionId: __vite_ssr_import_6__.ProviderSessionId,
	sequence: __vite_ssr_import_6__.PositiveInt,
	direction: __vite_ssr_import_2__.Literals(["incoming", "outgoing"]),
	messageKind: __vite_ssr_import_2__.Literals([
		"request",
		"response",
		"notification",
		"error"
	]),
	method: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	jsonRpcId: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.Union([__vite_ssr_import_2__.String, __vite_ssr_import_2__.Number])),
	payload: __vite_ssr_import_2__.Unknown,
	observedAt: __vite_ssr_import_2__.DateTimeUtc
});
const OrchestrationV2EventBase = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.EventId,
	threadId: __vite_ssr_import_6__.ThreadId,
	runId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.RunId)),
	nodeId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NodeId)),
	driver: __vite_ssr_import_2__.optional((0,__vite_ssr_import_13__.ProviderDriverKind)),
	providerInstanceId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_13__.ProviderInstanceId)),
	rawEventId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.RawEventId)),
	occurredAt: __vite_ssr_import_2__.DateTimeUtc
});
const OrchestrationV2DomainEvent = __vite_ssr_import_2__.Union([
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("thread.created"),
		payload: OrchestrationV2AppThread
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literals([
			"thread.archived",
			"thread.unarchived",
			"thread.deleted",
			"thread.settled",
			"thread.unsettled",
			"thread.snoozed",
			"thread.unsnoozed",
			"thread.pinned",
			"thread.auto-settle-set",
			"thread.unpinned",
			"thread.pin-reordered",
			"thread.active-reordered",
			"thread.visited",
			"thread.marked-unread",
			"thread.metadata-updated",
			"thread.pull-request-synced",
			"thread.runtime-mode-updated",
			"thread.interaction-mode-updated",
			"thread.model-selection-updated",
			"thread.provider-switched",
			"thread.guest-share-updated"
		]),
		payload: OrchestrationV2AppThread
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("thread.pull-request-link-updated"),
		payload: __vite_ssr_import_11__.ThreadPullRequestLink
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("run.created"),
		payload: OrchestrationV2Run
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("run.updated"),
		payload: OrchestrationV2Run
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("run.background-work-cancelled"),
		payload: OrchestrationV2RunBackgroundWorkCancelled
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("run-attempt.created"),
		payload: OrchestrationV2RunAttempt
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("run-attempt.updated"),
		payload: OrchestrationV2RunAttempt
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("node.updated"),
		payload: OrchestrationV2ExecutionNode
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("subagent.updated"),
		payload: OrchestrationV2Subagent
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literals(["provider-session.attached", "provider-session.updated"]),
		payload: OrchestrationV2ProviderSession
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("provider-session.detached"),
		payload: OrchestrationV2ProviderSessionDetached
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("provider-thread.updated"),
		payload: OrchestrationV2ProviderThread
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("provider-turn.updated"),
		payload: OrchestrationV2ProviderTurn
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("runtime-request.updated"),
		payload: OrchestrationV2RuntimeRequest
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("message.updated"),
		payload: OrchestrationV2ConversationMessage
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("turn-item.updated"),
		payload: OrchestrationV2TurnItem
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("plan.updated"),
		payload: OrchestrationV2PlanArtifact
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("checkpoint-scope.created"),
		payload: OrchestrationV2CheckpointScope
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("checkpoint.captured"),
		payload: OrchestrationV2Checkpoint
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("checkpoint.rollback-requested"),
		payload: OrchestrationV2CheckpointRollbackRequest
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("context-handoff.updated"),
		payload: OrchestrationV2ContextHandoff
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("context-transfer.created"),
		payload: OrchestrationV2ContextTransfer
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2EventBase.fields,
		type: __vite_ssr_import_2__.Literal("context-transfer.updated"),
		payload: OrchestrationV2ContextTransfer
	})
]);
const OrchestrationV2ThreadProjection = __vite_ssr_import_2__.Struct({
	thread: OrchestrationV2AppThread,
	runs: __vite_ssr_import_2__.Array(OrchestrationV2Run),
	attempts: __vite_ssr_import_2__.Array(OrchestrationV2RunAttempt),
	nodes: __vite_ssr_import_2__.Array(OrchestrationV2ExecutionNode),
	subagents: __vite_ssr_import_2__.Array(OrchestrationV2Subagent),
	providerSessions: __vite_ssr_import_2__.Array(OrchestrationV2ProviderSession),
	providerThreads: __vite_ssr_import_2__.Array(OrchestrationV2ProviderThread),
	providerTurns: __vite_ssr_import_2__.Array(OrchestrationV2ProviderTurn),
	runtimeRequests: __vite_ssr_import_2__.Array(OrchestrationV2RuntimeRequest),
	messages: __vite_ssr_import_2__.Array(OrchestrationV2ConversationMessage),
	plans: __vite_ssr_import_2__.Array(OrchestrationV2PlanArtifact),
	turnItems: turnItemArray(OrchestrationV2TurnItem),
	checkpointScopes: __vite_ssr_import_2__.Array(OrchestrationV2CheckpointScope),
	checkpoints: __vite_ssr_import_2__.Array(OrchestrationV2Checkpoint),
	contextHandoffs: __vite_ssr_import_2__.Array(OrchestrationV2ContextHandoff),
	contextTransfers: __vite_ssr_import_2__.Array(OrchestrationV2ContextTransfer),
	visibleTurnItems: projectedTurnItemArray(OrchestrationV2ProjectedTurnItem, OrchestrationV2ProjectedTurnItem.mapFields((fields) => ({
		...fields,
		item: (0,__vite_ssr_import_6__.ForwardCompatibleUnion)(OrchestrationV2TurnItem.members, "type")
	}))),
	updatedAt: __vite_ssr_import_2__.DateTimeUtc
});
const OrchestrationV2ThreadTranscript = __vite_ssr_import_2__.Struct({
	threadId: __vite_ssr_import_6__.ThreadId,
	title: __vite_ssr_import_2__.String,
	updatedAt: __vite_ssr_import_2__.DateTimeUtc,
	items: __vite_ssr_import_2__.Array(OrchestrationV2ProjectedTurnItem)
});
const OrchestrationV2ShellThreadStatus = __vite_ssr_import_2__.Union([__vite_ssr_import_2__.Literal("idle"), OrchestrationV2RunStatus]);
const OrchestrationV2PendingRuntimeRequestSummary = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.RuntimeRequestId,
	kind: OrchestrationV2RuntimeRequest.fields.kind,
	createdAt: __vite_ssr_import_2__.DateTimeUtc,
	/** False for async questions the run keeps working past. Absent from older servers. */
	blocking: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean)
});
const OrchestrationV2LatestVisibleMessageSummary = __vite_ssr_import_2__.Struct({
	id: __vite_ssr_import_6__.MessageId,
	role: OrchestrationV2ConversationMessage.fields.role,
	text: __vite_ssr_import_2__.String,
	updatedAt: __vite_ssr_import_2__.DateTimeUtc
});
const OrchestrationV2ThreadShell = __vite_ssr_import_2__.Struct({
	...OrchestrationV2CreationFields,
	id: __vite_ssr_import_6__.ThreadId,
	projectId: __vite_ssr_import_6__.ProjectId,
	title: __vite_ssr_import_2__.String,
	providerInstanceId: __vite_ssr_import_13__.ProviderInstanceId,
	modelSelection: __vite_ssr_import_10__.ModelSelection,
	runtimeMode: __vite_ssr_import_12__.RuntimeMode,
	interactionMode: __vite_ssr_import_12__.ProviderInteractionMode,
	branch: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	worktreePath: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	linkedPullRequest: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_11__.ThreadLinkedPullRequest))),
	pullRequests: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array((0,__vite_ssr_import_11__.ThreadPullRequestLink))),
	branchPullRequest: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_11__.ThreadLinkedPullRequest))),
	lineage: OrchestrationV2AppThreadLineage,
	forkedFrom: __vite_ssr_import_2__.NullOr(OrchestrationV2AppThread.fields.forkedFrom),
	activeProviderThreadId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ProviderThreadId)),
	historyOrigin: __vite_ssr_import_2__.optional(OrchestrationV2ThreadHistoryOrigin),
	latestRunId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId)),
	latestRunRequestedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	latestRunStartedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	latestRunCompletedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	latestRunStopRequested: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
	/** Suppress routine notifications for idle compaction; failures still notify. */
	latestRunSilent: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
	activeRunId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId)),
	activityRunStartedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	activityRunStatus: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.Literals([
		"preparing",
		"starting",
		"running",
		"waiting"
	]))),
	blockedOnThreadWait: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
	status: OrchestrationV2ShellThreadStatus,
	lastError: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.String)),
	lastErrorClass: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(OrchestrationV2ProviderFailureClass)),
	lastErrorCode: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.String)),
	usageLimitResetAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.IsoDateTime))),
	pendingRuntimeRequest: __vite_ssr_import_2__.NullOr(OrchestrationV2PendingRuntimeRequestSummary),
	/** Guest messages waiting for the owner to send or dismiss. Absent from older servers. */
	pendingGuestMessageCount: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
	latestVisibleMessage: __vite_ssr_import_2__.NullOr(OrchestrationV2LatestVisibleMessageSummary),
	latestUserMessageAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc),
	/** Excludes wakes and agent messages that advance latestUserMessageAt through the user role. */
	latestUserAuthoredMessageAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	hasActionableProposedPlan: __vite_ssr_import_2__.Boolean,
	pendingBackgroundTasks: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array(OrchestrationV2PendingBackgroundTask)).pipe(__vite_ssr_import_2__.withDecodingDefault(__vite_ssr_import_1__.succeed([]))),
	providerInstanceHistory: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array((0,__vite_ssr_import_13__.ProviderInstanceId))).pipe(__vite_ssr_import_2__.withDecodingDefault(__vite_ssr_import_1__.succeed([]))),
	goal: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(OrchestrationV2ProviderGoal)),
	itemCount: __vite_ssr_import_6__.NonNegativeInt,
	visibleItemCount: __vite_ssr_import_6__.NonNegativeInt,
	createdAt: __vite_ssr_import_2__.DateTimeUtc,
	updatedAt: __vite_ssr_import_2__.DateTimeUtc,
	archivedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc),
	settledOverride: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.Literals(["settled", "active"])),
	settledAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc),
	unsettledAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	snoozedUntil: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	snoozedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	limitRecovery: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(OrchestrationV2LimitRecovery)),
	pinnedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	autoSettleDisabledAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	pinOrderKey: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString))),
	activeOrderKey: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString))),
	lastVisitedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)),
	opens: __vite_ssr_import_2__.optional(LenientThreadOpens),
	titleRegeneration: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.Struct({
		requestId: __vite_ssr_import_6__.CommandId,
		startedAt: __vite_ssr_import_2__.DateTimeUtc
	}))),
	deletedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtc)
});
const LIVE_SHELL_STATUSES = new Set([
	"queued",
	"preparing",
	"starting",
	"running",
	"waiting"
]);
/**
* A subagent child that can still need the user or hold its parent. Shells that omit idle children
* keep these, so every reader of live child rows (pending requests, working parents, background
* work) still finds them.
*/
function isLiveSubagentShell(thread) {
	return (thread.activityRunStatus ?? null) !== null || LIVE_SHELL_STATUSES.has(thread.status) || thread.pendingRuntimeRequest !== null || (thread.pendingBackgroundTasks?.length ?? 0) > 0;
};
const OrchestrationV2ThreadShellSnapshot = __vite_ssr_import_2__.Struct({
	schemaVersion: __vite_ssr_import_6__.PositiveInt,
	snapshotSequence: __vite_ssr_import_6__.NonNegativeInt,
	threads: __vite_ssr_import_2__.Array(OrchestrationV2ThreadShell),
	archivedThreads: __vite_ssr_import_2__.Array(OrchestrationV2ThreadShell)
});
const OrchestrationV2ShellSnapshot = __vite_ssr_import_2__.Struct({
	...OrchestrationV2ThreadShellSnapshot.fields,
	projects: __vite_ssr_import_2__.Array((0,__vite_ssr_import_14__.OrchestrationProjectShell))
});
const OrchestrationV2ShellStreamItem = __vite_ssr_import_2__.Union([
	__vite_ssr_import_2__.Struct({ kind: __vite_ssr_import_2__.Literal("synchronized") }),
	__vite_ssr_import_2__.Struct({
		kind: __vite_ssr_import_2__.Literal("snapshot"),
		snapshot: OrchestrationV2ShellSnapshot,
		resolvedRepositoryIdentityRoots: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Array(__vite_ssr_import_2__.String))
	}),
	__vite_ssr_import_2__.Struct({
		kind: __vite_ssr_import_2__.Literal("project.updated"),
		sequence: __vite_ssr_import_6__.NonNegativeInt,
		project: __vite_ssr_import_14__.OrchestrationProjectShell
	}),
	__vite_ssr_import_2__.Struct({
		kind: __vite_ssr_import_2__.Literal("project.removed"),
		sequence: __vite_ssr_import_6__.NonNegativeInt,
		projectId: __vite_ssr_import_6__.ProjectId
	}),
	__vite_ssr_import_2__.Struct({
		kind: __vite_ssr_import_2__.Literal("thread.updated"),
		sequence: __vite_ssr_import_6__.NonNegativeInt,
		location: __vite_ssr_import_2__.Literals(["active", "archive"]),
		thread: OrchestrationV2ThreadShell
	}),
	__vite_ssr_import_2__.Struct({
		kind: __vite_ssr_import_2__.Literal("thread.removed"),
		sequence: __vite_ssr_import_6__.NonNegativeInt,
		location: __vite_ssr_import_2__.Literals(["active", "archive"]),
		threadId: __vite_ssr_import_6__.ThreadId
	})
]);
const OrchestrationV2StoredEvent = __vite_ssr_import_2__.Struct({
	sequence: __vite_ssr_import_6__.NonNegativeInt,
	commandId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.CommandId)),
	event: OrchestrationV2DomainEvent
});
const OrchestrationV2AppThreadJson = OrchestrationV2AppThread.mapFields((fields) => ({
	...fields,
	createdAt: __vite_ssr_import_2__.DateTimeUtcFromString,
	updatedAt: __vite_ssr_import_2__.DateTimeUtcFromString,
	archivedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString),
	settledAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString).pipe(__vite_ssr_import_2__.withDecodingDefault(__vite_ssr_import_1__.succeed(null))),
	unsettledAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	snoozedUntil: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	snoozedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	lastSnoozeWakeAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	pinnedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	autoSettleDisabledAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	lastVisitedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString).pipe(__vite_ssr_import_2__.withDecodingDefault(__vite_ssr_import_1__.succeed(null))),
	titleRegeneration: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.Struct({
		requestId: __vite_ssr_import_6__.CommandId,
		startedAt: __vite_ssr_import_2__.DateTimeUtcFromString
	}))),
	deletedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)
}));
const OrchestrationV2RunJson = OrchestrationV2Run.mapFields((fields) => ({
	...fields,
	requestedAt: __vite_ssr_import_2__.DateTimeUtcFromString,
	startedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString),
	completedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString),
	workStartedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.DateTimeUtcFromString)
}));
const OrchestrationV2RunAttemptJson = OrchestrationV2RunAttempt.mapFields((fields) => ({
	...fields,
	startedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString),
	completedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)
}));
const OrchestrationV2ExecutionNodeJson = OrchestrationV2ExecutionNode.mapFields((fields) => ({
	...fields,
	startedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString),
	completedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)
}));
const OrchestrationV2SubagentJson = OrchestrationV2Subagent.mapFields((fields) => ({
	...fields,
	startedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString),
	completedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString),
	updatedAt: __vite_ssr_import_2__.DateTimeUtcFromString
}));
const OrchestrationV2CheckpointScopeJson = OrchestrationV2CheckpointScope.mapFields((fields) => ({
	...fields,
	createdAt: __vite_ssr_import_2__.DateTimeUtcFromString
}));
const OrchestrationV2ProviderSessionJson = OrchestrationV2ProviderSession.mapFields((fields) => ({
	...fields,
	createdAt: __vite_ssr_import_2__.DateTimeUtcFromString,
	updatedAt: __vite_ssr_import_2__.DateTimeUtcFromString
}));
const OrchestrationV2ProviderSessionDetachedJson = OrchestrationV2ProviderSessionDetached.mapFields((fields) => ({
	...fields,
	detachedAt: __vite_ssr_import_2__.DateTimeUtcFromString
}));
const OrchestrationV2ProviderThreadJson = OrchestrationV2ProviderThread.mapFields((fields) => ({
	...fields,
	createdAt: __vite_ssr_import_2__.DateTimeUtcFromString,
	updatedAt: __vite_ssr_import_2__.DateTimeUtcFromString
}));
const OrchestrationV2ContextHandoffJson = OrchestrationV2ContextHandoff.mapFields((fields) => ({
	...fields,
	createdAt: __vite_ssr_import_2__.DateTimeUtcFromString,
	updatedAt: __vite_ssr_import_2__.DateTimeUtcFromString
}));
const OrchestrationV2ContextTransferJson = OrchestrationV2ContextTransfer.mapFields((fields) => ({
	...fields,
	createdAt: __vite_ssr_import_2__.DateTimeUtcFromString,
	updatedAt: __vite_ssr_import_2__.DateTimeUtcFromString,
	consumedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)
}));
const OrchestrationV2ProviderTurnJson = OrchestrationV2ProviderTurn.mapFields((fields) => ({
	...fields,
	startedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString),
	completedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)
}));
const OrchestrationV2RuntimeRequestJson = OrchestrationV2RuntimeRequest.mapFields((fields) => ({
	...fields,
	createdAt: __vite_ssr_import_2__.DateTimeUtcFromString,
	resolvedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)
}));
const OrchestrationV2ConversationMessageJson = OrchestrationV2ConversationMessage.mapFields((fields) => ({
	...fields,
	createdAt: __vite_ssr_import_2__.DateTimeUtcFromString,
	updatedAt: __vite_ssr_import_2__.DateTimeUtcFromString
}));
const OrchestrationV2CheckpointJson = OrchestrationV2Checkpoint.mapFields((fields) => ({
	...fields,
	capturedAt: __vite_ssr_import_2__.DateTimeUtcFromString
}));
const OrchestrationV2CheckpointRollbackRequestJson = OrchestrationV2CheckpointRollbackRequest.mapFields((fields) => ({
	...fields,
	requestedAt: __vite_ssr_import_2__.DateTimeUtcFromString
}));
const OrchestrationV2TurnItemJsonBaseFields = {
	...OrchestrationV2TurnItemBaseFields,
	startedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString),
	completedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString),
	updatedAt: __vite_ssr_import_2__.DateTimeUtcFromString
};
const OrchestrationV2TurnItemJson = __vite_ssr_import_2__.Union([
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("notification"),
		...OrchestrationV2Notification.fields
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		...OrchestrationV2CreationFields,
		type: __vite_ssr_import_2__.Literal("user_message"),
		messageId: __vite_ssr_import_6__.MessageId,
		scheduledTaskId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ScheduledTaskId)),
		senderThreadId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ThreadId)),
		idleCompaction: __vite_ssr_import_2__.optional(OrchestrationV2IdleCompaction),
		workflowScript: OrchestrationV2ConversationMessage.fields.workflowScript,
		inputIntent: OrchestrationV2UserMessageInputIntent,
		text: __vite_ssr_import_2__.String,
		context: __vite_ssr_import_2__.optional((0,__vite_ssr_import_0__.OrchestrationMessageContext)),
		attachments: __vite_ssr_import_2__.Array((0,__vite_ssr_import_7__.ChatAttachment))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("assistant_message"),
		messageId: __vite_ssr_import_6__.MessageId,
		text: __vite_ssr_import_2__.String,
		attachments: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array((0,__vite_ssr_import_7__.ChatAttachment))),
		streaming: __vite_ssr_import_2__.Boolean
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("reasoning"),
		text: __vite_ssr_import_2__.String,
		streaming: __vite_ssr_import_2__.Boolean
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("proposed_plan"),
		planId: __vite_ssr_import_6__.PlanId,
		markdown: __vite_ssr_import_2__.String,
		streaming: __vite_ssr_import_2__.Boolean
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("todo_list"),
		planId: __vite_ssr_import_6__.PlanId,
		steps: __vite_ssr_import_2__.Array(OrchestrationV2PlanStep),
		explanation: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String)
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("user_input_request"),
		requestId: __vite_ssr_import_6__.RuntimeRequestId,
		questions: __vite_ssr_import_2__.Array(OrchestrationV2UserInputQuestion),
		questionAnswer: __vite_ssr_import_2__.optional((0,__vite_ssr_import_12__.UserInputAttachmentAnswerPayload)),
		responseMode: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Literal("message"))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("file_change"),
		fileName: __vite_ssr_import_6__.TrimmedNonEmptyString,
		additions: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
		deletions: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
		diffStr: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		oldStr: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		newStr: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		changes: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array(OrchestrationV2FileChangeDetail))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("command_execution"),
		input: __vite_ssr_import_2__.String,
		output: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		/** Set on the wire when output was withheld; fetch it with getTurnItem. */
		outputOmitted: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
		outputIndicatesFailure: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
		exitCode: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Int),
		/** Set when the command is a monitor, so background work lists it as a monitor. */
		monitor: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean)
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("file_search"),
		pattern: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		results: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array(OrchestrationV2FileSearchResult))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("web_search"),
		patterns: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array(__vite_ssr_import_2__.String)),
		results: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array(OrchestrationV2WebSearchResult))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("approval_request"),
		requestId: __vite_ssr_import_6__.RuntimeRequestId,
		requestKind: __vite_ssr_import_12__.ProviderRequestKind,
		prompt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		reason: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		fullAccessOverride: __vite_ssr_import_2__.optional((0,__vite_ssr_import_12__.ProviderApprovalFullAccessOverride)),
		appName: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		options: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array((0,__vite_ssr_import_12__.ProviderApprovalOption)))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("checkpoint"),
		checkpointId: __vite_ssr_import_6__.CheckpointId,
		scopeId: __vite_ssr_import_6__.CheckpointScopeId,
		files: __vite_ssr_import_2__.Array(OrchestrationV2CheckpointFileSummary)
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("run_interrupt_request"),
		message: __vite_ssr_import_2__.String
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("run_interrupt_result"),
		message: __vite_ssr_import_2__.String
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("system_notice"),
		message: __vite_ssr_import_2__.String
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("error"),
		failure: OrchestrationV2ProviderFailure,
		retry: __vite_ssr_import_2__.optional(OrchestrationV2ProviderRetry)
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("compaction"),
		driver: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_13__.ProviderDriverKind)),
		summary: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		beforeTokenCount: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt)),
		afterTokenCount: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("handoff"),
		contextHandoffId: __vite_ssr_import_6__.ContextHandoffId,
		fromProviderThreadIds: __vite_ssr_import_2__.Array((0,__vite_ssr_import_6__.ProviderThreadId)),
		toProviderThreadId: __vite_ssr_import_6__.ProviderThreadId,
		fromProviderInstanceIds: __vite_ssr_import_2__.Array((0,__vite_ssr_import_13__.ProviderInstanceId)),
		toProviderInstanceId: __vite_ssr_import_13__.ProviderInstanceId,
		fromModelSelections: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array((0,__vite_ssr_import_10__.ModelSelection))),
		toModel: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		strategy: __vite_ssr_import_2__.Literals([
			"delta_since_target_last_seen",
			"fork_delta_summary",
			"full_thread_summary",
			"checkpoint_summary",
			"manual_context"
		]),
		summary: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String)
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("fork"),
		source: __vite_ssr_import_2__.Union([
			__vite_ssr_import_2__.Struct({
				type: __vite_ssr_import_2__.Literal("run"),
				threadId: __vite_ssr_import_6__.ThreadId,
				runId: __vite_ssr_import_6__.RunId
			}),
			__vite_ssr_import_2__.Struct({
				type: __vite_ssr_import_2__.Literal("node"),
				nodeId: __vite_ssr_import_6__.NodeId
			}),
			__vite_ssr_import_2__.Struct({
				type: __vite_ssr_import_2__.Literal("provider_thread"),
				providerThreadId: __vite_ssr_import_6__.ProviderThreadId,
				providerTurnId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ProviderTurnId))
			})
		]),
		targetThreadId: __vite_ssr_import_6__.ThreadId,
		providerThreadId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ProviderThreadId))
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("thread_created"),
		targetThreadId: __vite_ssr_import_6__.ThreadId,
		targetRunId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId)),
		targetProviderInstanceId: __vite_ssr_import_13__.ProviderInstanceId,
		targetModel: __vite_ssr_import_6__.TrimmedNonEmptyString
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		...OrchestrationV2SecretRequestFields
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("subagent"),
		subagentId: __vite_ssr_import_6__.NodeId,
		origin: __vite_ssr_import_2__.Literals(["provider_native", "app_owned"]),
		driver: __vite_ssr_import_13__.ProviderDriverKind,
		providerInstanceId: __vite_ssr_import_13__.ProviderInstanceId,
		childThreadId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.ThreadId)),
		prompt: __vite_ssr_import_2__.String,
		progress: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		result: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.String)
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2TurnItemJsonBaseFields,
		type: __vite_ssr_import_2__.Literal("dynamic_tool"),
		toolName: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
		viewedImagePath: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
		input: __vite_ssr_import_2__.Unknown,
		output: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Unknown),
		/** Set on the wire when output was withheld; fetch it with getTurnItem. */
		outputOmitted: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean)
	})
]);
const OrchestrationV2ProjectedTurnItemJson = OrchestrationV2ProjectedTurnItem.mapFields((fields) => ({
	...fields,
	item: OrchestrationV2TurnItemJson
}));
const OrchestrationV2ThreadProjectionJson = OrchestrationV2ThreadProjection.mapFields((fields) => ({
	...fields,
	thread: OrchestrationV2AppThreadJson,
	runs: __vite_ssr_import_2__.Array(OrchestrationV2RunJson),
	attempts: __vite_ssr_import_2__.Array(OrchestrationV2RunAttemptJson),
	nodes: __vite_ssr_import_2__.Array(OrchestrationV2ExecutionNodeJson),
	subagents: __vite_ssr_import_2__.Array(OrchestrationV2SubagentJson),
	providerSessions: __vite_ssr_import_2__.Array(OrchestrationV2ProviderSessionJson),
	providerThreads: __vite_ssr_import_2__.Array(OrchestrationV2ProviderThreadJson),
	providerTurns: __vite_ssr_import_2__.Array(OrchestrationV2ProviderTurnJson),
	runtimeRequests: __vite_ssr_import_2__.Array(OrchestrationV2RuntimeRequestJson),
	messages: __vite_ssr_import_2__.Array(OrchestrationV2ConversationMessageJson),
	plans: __vite_ssr_import_2__.Array(OrchestrationV2PlanArtifact),
	turnItems: turnItemArray(OrchestrationV2TurnItemJson),
	checkpointScopes: __vite_ssr_import_2__.Array(OrchestrationV2CheckpointScopeJson),
	checkpoints: __vite_ssr_import_2__.Array(OrchestrationV2CheckpointJson),
	contextHandoffs: __vite_ssr_import_2__.Array(OrchestrationV2ContextHandoffJson),
	contextTransfers: __vite_ssr_import_2__.Array(OrchestrationV2ContextTransferJson),
	visibleTurnItems: projectedTurnItemArray(OrchestrationV2ProjectedTurnItemJson, OrchestrationV2ProjectedTurnItemJson.mapFields((fields) => ({
		...fields,
		item: (0,__vite_ssr_import_6__.ForwardCompatibleUnion)(OrchestrationV2TurnItemJson.members, "type")
	}))),
	updatedAt: __vite_ssr_import_2__.DateTimeUtcFromString
}));
const OrchestrationV2PendingRuntimeRequestSummaryJson = OrchestrationV2PendingRuntimeRequestSummary.mapFields((fields) => ({
	...fields,
	createdAt: __vite_ssr_import_2__.DateTimeUtcFromString
}));
const OrchestrationV2LatestVisibleMessageSummaryJson = OrchestrationV2LatestVisibleMessageSummary.mapFields((fields) => ({
	...fields,
	updatedAt: __vite_ssr_import_2__.DateTimeUtcFromString
}));
const OrchestrationV2ThreadShellJson = OrchestrationV2ThreadShell.mapFields((fields) => ({
	...fields,
	latestRunRequestedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	latestRunStartedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	latestRunCompletedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	activityRunStartedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	pendingRuntimeRequest: __vite_ssr_import_2__.NullOr(OrchestrationV2PendingRuntimeRequestSummaryJson),
	latestVisibleMessage: __vite_ssr_import_2__.NullOr(OrchestrationV2LatestVisibleMessageSummaryJson),
	latestUserMessageAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString),
	latestUserAuthoredMessageAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	createdAt: __vite_ssr_import_2__.DateTimeUtcFromString,
	updatedAt: __vite_ssr_import_2__.DateTimeUtcFromString,
	archivedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString),
	settledAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString),
	unsettledAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	snoozedUntil: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	snoozedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	pinnedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	autoSettleDisabledAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	lastVisitedAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)),
	titleRegeneration: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.Struct({
		requestId: __vite_ssr_import_6__.CommandId,
		startedAt: __vite_ssr_import_2__.DateTimeUtcFromString
	}))),
	deletedAt: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.DateTimeUtcFromString)
}));
const OrchestrationV2ShellSnapshotJson = OrchestrationV2ShellSnapshot.mapFields((fields) => ({
	...fields,
	threads: __vite_ssr_import_2__.Array(OrchestrationV2ThreadShellJson),
	archivedThreads: __vite_ssr_import_2__.Array(OrchestrationV2ThreadShellJson)
}));
const OrchestrationV2JsonEventBaseFields = {
	...OrchestrationV2EventBase.fields,
	occurredAt: __vite_ssr_import_2__.DateTimeUtcFromString
};
const OrchestrationV2RawProviderEventJson = OrchestrationV2RawProviderEvent.mapFields((fields) => ({
	...fields,
	observedAt: __vite_ssr_import_2__.DateTimeUtcFromString
}));
const OrchestrationV2DomainEventJson = __vite_ssr_import_2__.Union([
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("thread.created"),
		payload: OrchestrationV2AppThreadJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literals([
			"thread.archived",
			"thread.unarchived",
			"thread.deleted",
			"thread.settled",
			"thread.unsettled",
			"thread.snoozed",
			"thread.unsnoozed",
			"thread.pinned",
			"thread.auto-settle-set",
			"thread.unpinned",
			"thread.pin-reordered",
			"thread.active-reordered",
			"thread.visited",
			"thread.marked-unread",
			"thread.pull-request-synced",
			"thread.metadata-updated",
			"thread.runtime-mode-updated",
			"thread.interaction-mode-updated",
			"thread.model-selection-updated",
			"thread.provider-switched",
			"thread.guest-share-updated"
		]),
		payload: OrchestrationV2AppThreadJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("thread.pull-request-link-updated"),
		payload: __vite_ssr_import_11__.ThreadPullRequestLink
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("run.created"),
		payload: OrchestrationV2RunJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("run.updated"),
		payload: OrchestrationV2RunJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("run.background-work-cancelled"),
		payload: OrchestrationV2RunBackgroundWorkCancelled
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("run-attempt.created"),
		payload: OrchestrationV2RunAttemptJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("run-attempt.updated"),
		payload: OrchestrationV2RunAttemptJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("node.updated"),
		payload: OrchestrationV2ExecutionNodeJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("subagent.updated"),
		payload: OrchestrationV2SubagentJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literals(["provider-session.attached", "provider-session.updated"]),
		payload: OrchestrationV2ProviderSessionJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("provider-session.detached"),
		payload: OrchestrationV2ProviderSessionDetachedJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("provider-thread.updated"),
		payload: OrchestrationV2ProviderThreadJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("provider-turn.updated"),
		payload: OrchestrationV2ProviderTurnJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("runtime-request.updated"),
		payload: OrchestrationV2RuntimeRequestJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("message.updated"),
		payload: OrchestrationV2ConversationMessageJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("turn-item.updated"),
		payload: OrchestrationV2TurnItemJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("plan.updated"),
		payload: OrchestrationV2PlanArtifact
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("checkpoint-scope.created"),
		payload: OrchestrationV2CheckpointScopeJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("checkpoint.captured"),
		payload: OrchestrationV2CheckpointJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("checkpoint.rollback-requested"),
		payload: OrchestrationV2CheckpointRollbackRequestJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("context-handoff.updated"),
		payload: OrchestrationV2ContextHandoffJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("context-transfer.created"),
		payload: OrchestrationV2ContextTransferJson
	}),
	__vite_ssr_import_2__.Struct({
		...OrchestrationV2JsonEventBaseFields,
		type: __vite_ssr_import_2__.Literal("context-transfer.updated"),
		payload: OrchestrationV2ContextTransferJson
	})
]);
const OrchestrationV2StoredEventJson = __vite_ssr_import_2__.Struct({
	sequence: __vite_ssr_import_6__.NonNegativeInt,
	commandId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.CommandId)),
	event: OrchestrationV2DomainEventJson
});
const OrchestrationV2Command = __vite_ssr_import_2__.Union([
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.stop"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		reason: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		/**
		* False when the caller stops the thread's delegated tasks itself, as the server's tree walks
		* do under their caller's dispatch limit. Otherwise Stop also stops every task under the thread.
		*/
		stopDelegatedTasks: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean)
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.create"),
		...OrchestrationV2CreationFields,
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		projectId: __vite_ssr_import_6__.ProjectId,
		title: __vite_ssr_import_6__.TrimmedNonEmptyString,
		modelSelection: __vite_ssr_import_10__.ModelSelection,
		runtimeMode: __vite_ssr_import_12__.RuntimeMode,
		interactionMode: __vite_ssr_import_12__.ProviderInteractionMode,
		branch: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
		worktreePath: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
		importedNativeThread: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Struct({
			ref: __vite_ssr_import_2__.Struct({
				driver: __vite_ssr_import_13__.ProviderDriverKind,
				nativeId: __vite_ssr_import_6__.TrimmedNonEmptyString,
				strength: __vite_ssr_import_2__.Literal("strong")
			}),
			metadata: __vite_ssr_import_2__.optional(OrchestrationV2ProviderThreadNativeMetadata)
		}))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.archive"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.guest-share.close"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.guest-message.dismiss"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		guestMessageId: __vite_ssr_import_6__.GuestMessageId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.unarchive"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.delete"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.settle"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		settledAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.DateTimeUtc)
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.auto-settle"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		snapshotAt: __vite_ssr_import_2__.DateTimeUtc,
		settledAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.DateTimeUtc)
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.unsettle"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		reason: __vite_ssr_import_2__.Literal("user")
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.snooze"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		snoozedUntil: __vite_ssr_import_6__.IsoDateTime
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.unsnooze"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		reason: __vite_ssr_import_2__.Literal("user")
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.auto-settle.set"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		enabled: __vite_ssr_import_2__.Boolean
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.pin"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		orderKey: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.unpin"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.pin.reorder"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		orderKey: __vite_ssr_import_6__.TrimmedNonEmptyString
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.active.reorder"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		orderKey: __vite_ssr_import_6__.TrimmedNonEmptyString
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.visit"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		visitedAt: __vite_ssr_import_6__.IsoDateTime,
		// The user opened the thread, as opposed to new activity on an open one.
		// Older servers ignore both fields and only move the read watermark.
		opened: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
		searchQuery: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String.check(__vite_ssr_import_2__.isMaxLength(200)))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.mark-unread"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.metadata.update"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		title: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
		regenerateTitle: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
		branch: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString))),
		worktreePath: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString))),
		expectedWorktreePath: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString))),
		expectedBranch: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString))),
		/** Reject unless no message or run has landed on this thread. */
		expectedEmpty: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
		limitRecovery: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr(OrchestrationV2LimitRecoveryUpdate)),
		/** Link (object) or unlink (null) a pull request; absent leaves it unchanged. */
		linkedPullRequest: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_11__.ThreadLinkedPullRequest)))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.pull-request.link"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		...__vite_ssr_import_11__.ThreadPullRequestKey.fields,
		url: __vite_ssr_import_6__.TrimmedNonEmptyString,
		source: __vite_ssr_import_11__.ThreadPullRequestLinkSource,
		repositoryWebUrl: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.pull-request.unlink"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		...__vite_ssr_import_11__.ThreadPullRequestKey.fields
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.pull-request-link.sync"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		...__vite_ssr_import_11__.ThreadPullRequestKey.fields,
		snapshot: __vite_ssr_import_11__.ThreadPullRequestSnapshot,
		stack: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_11__.ThreadPullRequestStack))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.pull-request.watch"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		...__vite_ssr_import_11__.ThreadPullRequestKey.fields,
		watching: __vite_ssr_import_2__.Boolean,
		link: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Struct({
			url: __vite_ssr_import_6__.TrimmedNonEmptyString,
			source: __vite_ssr_import_11__.ThreadPullRequestLinkSource,
			repositoryWebUrl: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString))
		}))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.pull-request.sync"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		projectId: __vite_ssr_import_6__.ProjectId,
		snapshotSequence: __vite_ssr_import_6__.NonNegativeInt,
		expected: __vite_ssr_import_2__.Struct({
			workspaceRoot: __vite_ssr_import_6__.TrimmedNonEmptyString,
			branch: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
			worktreePath: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
			linkedPullRequest: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_11__.ThreadLinkedPullRequest)),
			branchPullRequest: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_11__.ThreadLinkedPullRequest))
		}),
		branchPullRequest: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_11__.ThreadLinkedPullRequest)),
		linkedPullRequest: __vite_ssr_import_2__.optional((0,__vite_ssr_import_11__.ThreadLinkedPullRequest))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.title.regeneration.complete"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		requestId: __vite_ssr_import_6__.CommandId,
		title: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.runtime-mode.set"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		runtimeMode: __vite_ssr_import_12__.RuntimeMode
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.interaction-mode.set"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		interactionMode: __vite_ssr_import_12__.ProviderInteractionMode
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.model-selection.set"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		modelSelection: __vite_ssr_import_10__.ModelSelection
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("provider-session.detach"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		providerSessionId: __vite_ssr_import_6__.ProviderSessionId,
		reason: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String)
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("message.dispatch"),
		notification: __vite_ssr_import_2__.optional(OrchestrationV2Notification),
		/** Sends this pending guest message; the server uses the guest's text, not `text`. */
		guestMessageId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.GuestMessageId)),
		...OrchestrationV2CreationFields,
		scheduledTaskId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ScheduledTaskId)),
		senderThreadId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ThreadId)),
		idleCompaction: __vite_ssr_import_2__.optional(OrchestrationV2IdleCompaction),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		messageId: __vite_ssr_import_6__.MessageId,
		text: __vite_ssr_import_2__.String,
		context: __vite_ssr_import_2__.optional((0,__vite_ssr_import_0__.OrchestrationMessageContext)),
		attachments: __vite_ssr_import_2__.Array((0,__vite_ssr_import_7__.ChatAttachment)),
		titleSeed: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
		modelSelection: __vite_ssr_import_2__.optional((0,__vite_ssr_import_10__.ModelSelection)),
		sourcePlanRef: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Struct({
			threadId: __vite_ssr_import_6__.ThreadId,
			planId: __vite_ssr_import_6__.PlanId
		})),
		restartContinuationOfRunId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.RunId)),
		usageLimitContinuationOfRunId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.RunId)),
		manualContinuationOfRunId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.RunId)),
		usageLimitRecoveryRequestId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.CommandId)),
		deliveryIntent: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Literals([
			"auto",
			"steer",
			"restart"
		])),
		delegatedCompletion: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Struct({
			parentRunId: __vite_ssr_import_6__.RunId,
			generation: __vite_ssr_import_6__.PositiveInt,
			taskIds: __vite_ssr_import_2__.Array((0,__vite_ssr_import_6__.NodeId))
		})),
		dispatchMode: __vite_ssr_import_2__.Union([
			__vite_ssr_import_2__.Struct({
				type: __vite_ssr_import_2__.Literal("defer_start"),
				workspaceStrategy: __vite_ssr_import_2__.optional(OrchestrationV2ThreadLaunchWorkspaceStrategy)
			}),
			__vite_ssr_import_2__.Struct({
				type: __vite_ssr_import_2__.Literal("steer_active"),
				targetRunId: __vite_ssr_import_6__.RunId
			}),
			__vite_ssr_import_2__.Struct({
				type: __vite_ssr_import_2__.Literal("restart_active"),
				targetRunId: __vite_ssr_import_6__.RunId
			}),
			__vite_ssr_import_2__.Struct({ type: __vite_ssr_import_2__.Literal("queue_after_active") }),
			__vite_ssr_import_2__.Struct({ type: __vite_ssr_import_2__.Literal("start_immediately") })
		])
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("prepared-run.release"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		runId: __vite_ssr_import_6__.RunId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("notification.delivery.accept"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		messageId: __vite_ssr_import_6__.MessageId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("prepared-run.progress"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		runId: __vite_ssr_import_6__.RunId,
		phase: __vite_ssr_import_2__.Literals(["worktree", "setup"])
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("prepared-run.fail"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		runId: __vite_ssr_import_6__.RunId,
		failure: OrchestrationV2ProviderFailure
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("prepared-run.retry"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		runId: __vite_ssr_import_6__.RunId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("subagent.stop"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		runId: __vite_ssr_import_6__.RunId,
		subagentId: __vite_ssr_import_6__.NodeId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("run.interrupt"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		runId: __vite_ssr_import_6__.RunId,
		reason: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		holdQueue: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean)
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("queued-message.promote-to-steer"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		queuedRunId: __vite_ssr_import_6__.RunId,
		targetRunId: __vite_ssr_import_6__.RunId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("queue.resume"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("queued-run.start"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		runId: __vite_ssr_import_6__.RunId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("queued-run.reorder"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		runId: __vite_ssr_import_6__.RunId,
		beforeRunId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("queued-run.cancel"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		runId: __vite_ssr_import_6__.RunId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("queued-run.edit"),
		context: __vite_ssr_import_2__.optional((0,__vite_ssr_import_0__.OrchestrationMessageContext)),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		runId: __vite_ssr_import_6__.RunId,
		text: __vite_ssr_import_2__.String,
		// Replaces all attachments; absent preserves them for older clients editing text.
		attachments: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array((0,__vite_ssr_import_7__.ChatAttachment)))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("runtime-request.respond"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		requestId: __vite_ssr_import_6__.RuntimeRequestId,
		decision: __vite_ssr_import_2__.optional((0,__vite_ssr_import_12__.ProviderApprovalDecision)),
		feedback: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		answers: __vite_ssr_import_2__.optional((0,__vite_ssr_import_12__.ProviderUserInputAnswers)),
		attachmentsByQuestionId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_12__.UserInputAttachments))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.user-input.dismiss"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		requestId: __vite_ssr_import_6__.RuntimeRequestId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("checkpoint.rollback"),
		restoreFiles: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		scopeId: __vite_ssr_import_6__.CheckpointScopeId,
		checkpointId: __vite_ssr_import_6__.CheckpointId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.fork"),
		...OrchestrationV2CreationFields,
		commandId: __vite_ssr_import_6__.CommandId,
		sourceThreadId: __vite_ssr_import_6__.ThreadId,
		targetThreadId: __vite_ssr_import_6__.ThreadId,
		sourcePoint: OrchestrationV2ThreadForkSourcePoint,
		title: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
		createdAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.DateTimeUtc)
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.merge_back"),
		...OrchestrationV2CreationFields,
		commandId: __vite_ssr_import_6__.CommandId,
		sourceThreadId: __vite_ssr_import_6__.ThreadId,
		targetThreadId: __vite_ssr_import_6__.ThreadId,
		sourcePoint: OrchestrationV2ThreadForkSourcePoint,
		createdAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.DateTimeUtc)
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("delegated_task.request"),
		...OrchestrationV2CreationFields,
		commandId: __vite_ssr_import_6__.CommandId,
		parentThreadId: __vite_ssr_import_6__.ThreadId,
		parentRunId: __vite_ssr_import_6__.RunId,
		parentNodeId: __vite_ssr_import_6__.NodeId,
		task: __vite_ssr_import_6__.TrimmedNonEmptyString,
		title: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
		modelSelection: __vite_ssr_import_10__.ModelSelection,
		runtimeMode: __vite_ssr_import_12__.RuntimeMode,
		interactionMode: __vite_ssr_import_12__.ProviderInteractionMode,
		workspaceStrategy: __vite_ssr_import_2__.optional(OrchestrationV2ThreadLaunchWorkspaceStrategy),
		// Defaults to settled_only; fire-and-forget wakes require always.
		completionWake: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Literals(["always", "settled_only"])),
		createdAt: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.DateTimeUtc)
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("delegated_task.wake-policy"),
		commandId: __vite_ssr_import_6__.CommandId,
		parentThreadId: __vite_ssr_import_6__.ThreadId,
		taskId: __vite_ssr_import_6__.NodeId,
		completionWake: __vite_ssr_import_2__.Literals(["always", "settled_only"])
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("delegated_task.completion-delivery.acknowledge"),
		commandId: __vite_ssr_import_6__.CommandId,
		parentThreadId: __vite_ssr_import_6__.ThreadId,
		taskId: __vite_ssr_import_6__.NodeId,
		observedByRunId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("delegated_task.completion-delivery.dispose"),
		commandId: __vite_ssr_import_6__.CommandId,
		parentThreadId: __vite_ssr_import_6__.ThreadId,
		taskId: __vite_ssr_import_6__.NodeId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.created.record"),
		commandId: __vite_ssr_import_6__.CommandId,
		parentThreadId: __vite_ssr_import_6__.ThreadId,
		parentRunId: __vite_ssr_import_6__.RunId,
		parentNodeId: __vite_ssr_import_6__.NodeId,
		targetThreadId: __vite_ssr_import_6__.ThreadId,
		targetRunId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("provider.switch"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		modelSelection: __vite_ssr_import_10__.ModelSelection
	})
]);
// Excluded from dispatchCommand so only the server can send these.
const OrchestrationV2InternalCommand = __vite_ssr_import_2__.Union([
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.guest-share.open"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		shareId: __vite_ssr_import_6__.GuestShareId,
		host: __vite_ssr_import_6__.TrimmedNonEmptyString,
		expiresAt: __vite_ssr_import_6__.IsoDateTime
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.guest-share.redeem"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		shareId: __vite_ssr_import_6__.GuestShareId,
		guestName: __vite_ssr_import_6__.TrimmedNonEmptyString
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.guest-message.submit"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		shareId: __vite_ssr_import_6__.GuestShareId,
		guestMessageId: __vite_ssr_import_6__.GuestMessageId,
		text: __vite_ssr_import_2__.String,
		attachments: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Array((0,__vite_ssr_import_7__.ChatAttachment)))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.pull-request-watch.sync"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		...__vite_ssr_import_11__.ThreadPullRequestKey.fields,
		startedAt: __vite_ssr_import_6__.IsoDateTime,
		watch: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_11__.ThreadPullRequestWatch)),
		/** With `watch: null`, the state the ended watch keeps instead of its last saved one. */
		endedWatch: __vite_ssr_import_2__.optional((0,__vite_ssr_import_11__.ThreadPullRequestWatch)),
		wake: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Struct({
			messageId: __vite_ssr_import_6__.MessageId,
			text: __vite_ssr_import_2__.String,
			notification: OrchestrationV2Notification
		}))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("checkpoint.rollback.fail"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		requestId: __vite_ssr_import_6__.CommandId,
		message: __vite_ssr_import_6__.TrimmedNonEmptyString
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("runtime-request.delivery.fail"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		requestId: __vite_ssr_import_6__.RuntimeRequestId
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("thread.background-work.settle"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		providerThreadId: __vite_ssr_import_6__.ProviderThreadId,
		providerTurnId: __vite_ssr_import_6__.ProviderTurnId,
		subagent: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Struct({
			id: __vite_ssr_import_6__.NodeId,
			stoppedAt: __vite_ssr_import_2__.DateTimeUtc,
			outcome: __vite_ssr_import_2__.Struct({
				status: __vite_ssr_import_2__.Literals([
					"completed",
					"failed",
					"cancelled"
				]),
				completedAt: __vite_ssr_import_2__.DateTimeUtc,
				result: __vite_ssr_import_2__.NullOr(__vite_ssr_import_2__.String)
			})
		}))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("secret_request.record"),
		commandId: __vite_ssr_import_6__.CommandId,
		threadId: __vite_ssr_import_6__.ThreadId,
		runId: __vite_ssr_import_6__.RunId,
		nodeId: __vite_ssr_import_6__.NodeId,
		turnItemId: __vite_ssr_import_6__.TurnItemId,
		label: __vite_ssr_import_6__.TrimmedNonEmptyString,
		reason: __vite_ssr_import_2__.String,
		placeholder: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
		secretStatus: OrchestrationV2SecretRequestStatus
	})
]);
const ORCHESTRATION_V2_WS_METHODS = {
	dispatchCommand: "orchestration.dispatchCommand",
	getTurnDiff: "orchestration.getTurnDiff",
	getFullThreadDiff: "orchestration.getFullThreadDiff",
	searchThreads: "orchestration.searchThreads",
	searchThread: "orchestration.searchThread",
	searchThreadStream: "orchestration.searchThreadStream",
	getArchivedShellSnapshot: "orchestration.getArchivedShellSnapshot",
	getThreadFamily: "orchestration.getThreadFamily",
	getWorktreeThreadIds: "orchestration.getWorktreeThreadIds",
	getThreadProjection: "orchestration.getThreadProjection",
	getWorkflowScript: "orchestration.getWorkflowScript",
	stopWorkflow: "orchestration.stopWorkflow",
	getTurnItem: "orchestration.getTurnItem",
	launchThread: "orchestration.launchThread",
	subscribeArchivedShell: "orchestration.subscribeArchivedShell",
	subscribeShell: "orchestration.subscribeShell",
	subscribeThread: "orchestration.subscribeThread",
	subscribeCommandOutput: "orchestration.subscribeCommandOutput"
};
const OrchestrationV2SubscribeCommandOutputInput = __vite_ssr_import_2__.Struct({
	threadId: __vite_ssr_import_6__.ThreadId,
	itemId: __vite_ssr_import_6__.TurnItemId
});
/** Unpersisted stream for expanded rows: replace resets the bounded tail, append extends it, and running:false ends it.
* Feed both through @t3tools/shared/terminalOutput appendTerminalOutput to preserve cursor and style escapes. */
const OrchestrationV2CommandOutputFrame = __vite_ssr_import_2__.Struct({
	kind: __vite_ssr_import_2__.Literals(["replace", "append"]),
	text: __vite_ssr_import_2__.String,
	/** Earlier output was dropped to keep the tail bounded. */
	truncated: __vite_ssr_import_2__.Boolean,
	running: __vite_ssr_import_2__.Boolean
});
class OrchestrationV2CommandOutputError extends __vite_ssr_import_2__.TaggedError()("OrchestrationV2CommandOutputError", {
	threadId: __vite_ssr_import_6__.ThreadId,
	message: __vite_ssr_import_2__.String,
	cause: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Defect())
}) {};
const OrchestrationV2ArchivedShellSnapshot = __vite_ssr_import_2__.Struct({
	schemaVersion: __vite_ssr_import_6__.PositiveInt,
	snapshotSequence: __vite_ssr_import_6__.NonNegativeInt,
	projects: __vite_ssr_import_2__.Array((0,__vite_ssr_import_14__.OrchestrationProjectShell)),
	threads: __vite_ssr_import_2__.Array(OrchestrationV2ThreadShell)
});
const OrchestrationV2ArchivedShellStreamItem = __vite_ssr_import_2__.Union([
	__vite_ssr_import_2__.Struct({
		kind: __vite_ssr_import_2__.Literal("snapshot"),
		snapshot: OrchestrationV2ArchivedShellSnapshot
	}),
	__vite_ssr_import_2__.Struct({
		kind: __vite_ssr_import_2__.Literal("thread.updated"),
		sequence: __vite_ssr_import_6__.NonNegativeInt,
		thread: OrchestrationV2ThreadShell
	}),
	__vite_ssr_import_2__.Struct({
		kind: __vite_ssr_import_2__.Literal("thread.removed"),
		sequence: __vite_ssr_import_6__.NonNegativeInt,
		threadId: __vite_ssr_import_6__.ThreadId
	})
]);
const OrchestrationV2ThreadLaunchInput = __vite_ssr_import_2__.Struct({
	commandId: __vite_ssr_import_6__.CommandId,
	creationSource: __vite_ssr_import_2__.optional(OrchestrationV2CreationSource),
	threadId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.ThreadId)),
	reuseExistingThread: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
	projectId: __vite_ssr_import_6__.ProjectId,
	title: __vite_ssr_import_6__.TrimmedNonEmptyString,
	generateTitle: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Boolean),
	modelSelection: __vite_ssr_import_10__.ModelSelection,
	runtimeMode: __vite_ssr_import_12__.RuntimeMode,
	interactionMode: __vite_ssr_import_12__.ProviderInteractionMode,
	workspaceStrategy: OrchestrationV2ThreadLaunchWorkspaceStrategy,
	initialMessage: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Struct({
		messageId: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.MessageId)),
		text: __vite_ssr_import_2__.String,
		context: __vite_ssr_import_2__.optional((0,__vite_ssr_import_0__.OrchestrationMessageContext)),
		attachments: __vite_ssr_import_2__.Array((0,__vite_ssr_import_7__.ChatAttachment))
	}))
});
const OrchestrationV2ThreadLaunchResult = __vite_ssr_import_2__.Struct({
	threadId: __vite_ssr_import_6__.ThreadId,
	projection: OrchestrationV2ThreadProjection,
	resumed: __vite_ssr_import_2__.Boolean
});
const OrchestrationV2DispatchCommandResult = __vite_ssr_import_2__.Struct({ sequence: __vite_ssr_import_6__.NonNegativeInt });
const OrchestrationV2GetThreadProjectionInput = __vite_ssr_import_2__.Struct({ threadId: __vite_ssr_import_6__.ThreadId });
const OrchestrationV2SubscribeShellInput = __vite_ssr_import_2__.Struct({
	afterSequence: __vite_ssr_import_2__.optionalKey((0,__vite_ssr_import_6__.NonNegativeInt)),
	requestCompletionMarker: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Boolean),
	/**
	* Snapshots leave out idle subagent children; read them with `getThreadFamily`. Send only to
	* servers that advertise `shellThreadFamilies`.
	*/
	omitIdleSubagents: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Boolean)
});
const OrchestrationV2GetThreadFamilyInput = __vite_ssr_import_2__.Struct({ threadId: __vite_ssr_import_6__.ThreadId });
/**
* The active subagent threads that share the requested thread's `lineage.rootThreadId`: its whole
* subagent tree, in any run state. An unknown thread has an empty family; a deleted one still
* names its root.
*/
const OrchestrationV2ThreadFamily = __vite_ssr_import_2__.Struct({
	snapshotSequence: __vite_ssr_import_6__.NonNegativeInt,
	threads: __vite_ssr_import_2__.Array(OrchestrationV2ThreadShell)
});
const OrchestrationV2GetWorktreeThreadIdsInput = __vite_ssr_import_2__.Struct({ worktreePath: __vite_ssr_import_6__.TrimmedNonEmptyString });
/** Active threads on a worktree path, including subagent children a shell may leave out. */
const OrchestrationV2WorktreeThreadIds = __vite_ssr_import_2__.Struct({ threadIds: __vite_ssr_import_2__.Array((0,__vite_ssr_import_6__.ThreadId)) });
const OrchestrationV2SubscribeThreadInput = __vite_ssr_import_2__.Struct({
	threadId: __vite_ssr_import_6__.ThreadId,
	afterSequence: __vite_ssr_import_2__.optionalKey((0,__vite_ssr_import_6__.NonNegativeInt)),
	requestCompletionMarker: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Boolean),
	acceptBoundedSnapshot: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Boolean),
	acceptCompactTurnItems: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Boolean),
	/** The client restores `*Omitted` bodies from records it already holds. */
	acceptDedupedBodies: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Boolean)
});
const OrchestrationV2ThreadDetailSnapshot = __vite_ssr_import_2__.Struct({
	snapshotSequence: __vite_ssr_import_6__.NonNegativeInt,
	projection: OrchestrationV2ThreadProjection,
	/** With hasMoreHistory/cursor, this projection is a bounded window, not a complete timeline. */
	historyCursor: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString))),
	hasMoreHistory: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Boolean),
	latestLocalTurnOrdinal: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.NonNegativeInt)))
});
/** Keep historyCursor opaque; resume events with afterSequence = snapshotSequence. */
const OrchestrationV2ThreadBoundedSnapshot = __vite_ssr_import_2__.Struct({
	snapshotSequence: __vite_ssr_import_6__.NonNegativeInt,
	projection: OrchestrationV2ThreadProjection,
	historyCursor: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	hasMoreHistory: __vite_ssr_import_2__.Boolean,
	latestLocalTurnOrdinal: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.NonNegativeInt)),
	/**
	* Set only for clients that opted in: `projection.turnItems` omits the items
	* of local visible rows, which lead the full list. Clients must restore them
	* with `boundedSnapshotProjection` before using the projection.
	*/
	turnItemsOmitLocalVisible: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Literal(true))
});
const OrchestrationV2ThreadHistoryPage = __vite_ssr_import_2__.Struct({
	snapshotSequence: __vite_ssr_import_6__.NonNegativeInt,
	items: projectedTurnItemArray(OrchestrationV2ProjectedTurnItem, OrchestrationV2ProjectedTurnItem.mapFields((fields) => ({
		...fields,
		item: (0,__vite_ssr_import_6__.ForwardCompatibleUnion)(OrchestrationV2TurnItem.members, "type")
	}))),
	nextCursor: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
	hasMoreHistory: __vite_ssr_import_2__.Boolean
});
const knownDomainEventTypes = new Set(OrchestrationV2DomainEvent.members.flatMap((member) => {
	const type = member.fields.type;
	return "literals" in type ? type.literals : [type.literal];
}));
function isKnownOrchestrationV2EventType(type) {
	return knownDomainEventTypes.has(type);
};
// Skip unknown event or turn-item types while advancing the resume cursor.
const OrchestrationV2UnknownThreadStreamEvent = __vite_ssr_import_2__.Struct({
	kind: __vite_ssr_import_2__.Literal("event"),
	sequence: __vite_ssr_import_6__.NonNegativeInt,
	event: __vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.String,
		payload: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Unknown)
	}).check(__vite_ssr_import_2__.makeFilter((event) => !knownDomainEventTypes.has(event.type) || event.type === "turn-item.updated" && isUnknownTurnItem(event.payload) || "A known event type must decode in full."))
}).pipe(__vite_ssr_import_2__.decodeTo(__vite_ssr_import_2__.Struct({
	kind: __vite_ssr_import_2__.Literal("unknown-event"),
	sequence: __vite_ssr_import_6__.NonNegativeInt,
	eventType: __vite_ssr_import_2__.String
}), {
	decode: __vite_ssr_import_4__.transform((item) => ({
		kind: "unknown-event",
		sequence: item.sequence,
		eventType: item.event.type
	})),
	encode: __vite_ssr_import_4__.forbidden(() => "Servers never send unknown thread events.")
}));
const OrchestrationV2ThreadStreamItem = __vite_ssr_import_2__.Union([
	__vite_ssr_import_2__.Struct({ kind: __vite_ssr_import_2__.Literal("synchronized") }),
	__vite_ssr_import_2__.Struct({
		kind: __vite_ssr_import_2__.Literal("snapshot"),
		snapshotSequence: __vite_ssr_import_6__.NonNegativeInt,
		projection: OrchestrationV2ThreadProjection,
		historyCursor: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.TrimmedNonEmptyString))),
		hasMoreHistory: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Boolean),
		latestLocalTurnOrdinal: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.NonNegativeInt))),
		turnItemsOmitLocalVisible: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Literal(true))
	}),
	__vite_ssr_import_2__.Struct({
		kind: __vite_ssr_import_2__.Literal("event"),
		sequence: __vite_ssr_import_6__.NonNegativeInt,
		event: OrchestrationV2DomainEvent
	}),
	OrchestrationV2UnknownThreadStreamEvent
]);
class OrchestrationV2DispatchCommandError extends __vite_ssr_import_2__.TaggedError()("OrchestrationV2DispatchCommandError", {
	commandId: __vite_ssr_import_6__.CommandId,
	commandType: __vite_ssr_import_2__.String,
	message: __vite_ssr_import_2__.String,
	detail: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String),
	cause: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Defect())
}) {};
class OrchestrationV2GetThreadProjectionError extends __vite_ssr_import_2__.TaggedError()("OrchestrationV2GetThreadProjectionError", {
	threadId: __vite_ssr_import_6__.ThreadId,
	message: __vite_ssr_import_2__.String,
	cause: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Defect())
}) {};
class OrchestrationV2GetShellSnapshotError extends __vite_ssr_import_2__.TaggedError()("OrchestrationV2GetShellSnapshotError", {
	message: __vite_ssr_import_2__.String,
	cause: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Defect())
}) {};
class OrchestrationV2ThreadLaunchError extends __vite_ssr_import_2__.TaggedError()("OrchestrationV2ThreadLaunchError", {
	commandId: __vite_ssr_import_6__.CommandId,
	projectId: __vite_ssr_import_6__.ProjectId,
	message: __vite_ssr_import_2__.String,
	cause: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Defect())
}) {};
const OrchestrationV2StopWorkflowInput = __vite_ssr_import_2__.Struct({
	threadId: __vite_ssr_import_6__.ThreadId,
	subagentId: __vite_ssr_import_6__.NodeId
});
class OrchestrationV2StopWorkflowError extends __vite_ssr_import_2__.TaggedError()("OrchestrationV2StopWorkflowError", {
	threadId: __vite_ssr_import_6__.ThreadId,
	subagentId: __vite_ssr_import_6__.NodeId,
	reason: __vite_ssr_import_2__.Literals([
		"not-running",
		"unsupported",
		"unavailable",
		"stop-failed"
	]),
	cause: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Defect())
}) {
	get message() {
		switch (this.reason) {
			case "not-running": return "This workflow is no longer running.";
			case "unsupported": return "This provider cannot stop a workflow.";
			case "unavailable": return "This workflow has no live provider task.";
			case "stop-failed": return "Failed to stop the workflow.";
		}
	}
};
const OrchestrationV2RpcError = __vite_ssr_import_2__.Union([
	OrchestrationV2DispatchCommandError,
	OrchestrationV2GetThreadProjectionError,
	OrchestrationV2GetShellSnapshotError,
	OrchestrationV2ThreadLaunchError,
	OrchestrationV2StopWorkflowError
]);
const OrchestrationV2GetWorkflowScriptInput = __vite_ssr_import_2__.Struct({
	threadId: __vite_ssr_import_6__.ThreadId,
	scriptPath: __vite_ssr_import_6__.TrimmedNonEmptyString
});
const OrchestrationV2GetWorkflowScriptResult = __vite_ssr_import_2__.Struct({
	scriptPath: __vite_ssr_import_6__.TrimmedNonEmptyString,
	contents: __vite_ssr_import_2__.String,
	truncated: __vite_ssr_import_2__.Boolean
});
const WORKFLOW_FILE_ERROR_MESSAGES = {
	"invalid-path": "Workflow files must be absolute paths with the expected extension.",
	"root-unavailable": "Workflow file root unavailable.",
	"not-found": "Workflow file not found.",
	"outside-root": "Path is outside the workflow files root.",
	"wrong-extension": "Resolved file has the wrong extension.",
	"not-regular-file": "Workflow file is not a regular file.",
	"changed-during-read": "Workflow file changed between resolution and open.",
	"read-failed": "Workflow file read failed."
};
class OrchestrationWorkflowFileError extends __vite_ssr_import_2__.TaggedError()("OrchestrationWorkflowFileError", {
	reason: __vite_ssr_import_2__.Literals([
		"invalid-path",
		"root-unavailable",
		"not-found",
		"outside-root",
		"wrong-extension",
		"not-regular-file",
		"changed-during-read",
		"read-failed"
	]),
	path: __vite_ssr_import_2__.String,
	cause: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Defect())
}) {
	get message() {
		return WORKFLOW_FILE_ERROR_MESSAGES[this.reason];
	}
};
const OrchestrationV2GetTurnItemInput = __vite_ssr_import_2__.Struct({
	threadId: __vite_ssr_import_6__.ThreadId,
	itemId: __vite_ssr_import_6__.TurnItemId,
	revision: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String)
});
const OrchestrationV2GetTurnItemResult = __vite_ssr_import_2__.Struct({ item: __vite_ssr_import_2__.NullOr(OrchestrationV2TurnItem) });
const WORKFLOW_SCRIPT_ERROR_MESSAGES = {
	"invalid-path": "Workflow scripts must be absolute .js paths.",
	"root-unavailable": "Script root unavailable.",
	"not-found": "Script not found.",
	"outside-root": "Script path is outside the workflow scripts root.",
	"not-js": "Resolved script is not a .js file.",
	"not-regular-file": "Script is not a regular file.",
	"changed-during-read": "Script changed between resolution and open.",
	"read-failed": "Script read failed."
};
class OrchestrationGetWorkflowScriptError extends __vite_ssr_import_2__.TaggedError()("OrchestrationGetWorkflowScriptError", {
	reason: __vite_ssr_import_2__.Literals([
		"invalid-path",
		"root-unavailable",
		"not-found",
		"outside-root",
		"not-js",
		"not-regular-file",
		"changed-during-read",
		"read-failed"
	]),
	scriptPath: __vite_ssr_import_2__.String,
	cause: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Defect())
}) {
	get message() {
		return WORKFLOW_SCRIPT_ERROR_MESSAGES[this.reason];
	}
};
const OrchestrationV2SearchThreadInput = __vite_ssr_import_2__.Struct({
	threadId: __vite_ssr_import_6__.ThreadId,
	skills: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Array(__vite_ssr_import_2__.Struct({
		name: __vite_ssr_import_2__.String.check(__vite_ssr_import_2__.isMaxLength(200)),
		displayName: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.String.check(__vite_ssr_import_2__.isMaxLength(200)))
	})).check(__vite_ssr_import_2__.isMaxLength(1e3))),
	query: __vite_ssr_import_6__.TrimmedNonEmptyString.check(__vite_ssr_import_2__.isMaxLength(200)),
	index: __vite_ssr_import_2__.optionalKey((0,__vite_ssr_import_6__.NonNegativeInt)),
	offset: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Int),
	start: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Struct({
		entryId: __vite_ssr_import_6__.TrimmedNonEmptyString,
		occurrence: __vite_ssr_import_6__.NonNegativeInt
	}))
});
const OrchestrationV2ThreadFindMatch = __vite_ssr_import_2__.Struct({
	entryId: __vite_ssr_import_6__.TrimmedNonEmptyString,
	runId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId)),
	occurrence: __vite_ssr_import_6__.NonNegativeInt
});
const OrchestrationV2SearchThreadResult = __vite_ssr_import_2__.Struct({
	complete: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Boolean),
	snapshotSequence: __vite_ssr_import_6__.NonNegativeInt,
	totalMatches: __vite_ssr_import_6__.NonNegativeInt,
	activeIndex: __vite_ssr_import_6__.NonNegativeInt,
	match: __vite_ssr_import_2__.NullOr(OrchestrationV2ThreadFindMatch),
	navigation: __vite_ssr_import_2__.optionalKey(__vite_ssr_import_2__.Array(__vite_ssr_import_2__.Struct({
		entryId: __vite_ssr_import_6__.TrimmedNonEmptyString,
		runId: __vite_ssr_import_2__.NullOr((0,__vite_ssr_import_6__.RunId)),
		startIndex: __vite_ssr_import_6__.NonNegativeInt,
		count: __vite_ssr_import_6__.NonNegativeInt
	})).check(__vite_ssr_import_2__.isMaxLength(17)))
});
class OrchestrationV2SearchThreadError extends __vite_ssr_import_2__.TaggedError()("OrchestrationV2SearchThreadError", { cause: __vite_ssr_import_2__.Defect() }) {
	get message() {
		return "Could not search this thread. Please retry.";
	}
};
const OrchestrationV2RpcSchemas = {
	searchThread: {
		input: OrchestrationV2SearchThreadInput,
		output: OrchestrationV2SearchThreadResult
	},
	dispatchCommand: {
		input: OrchestrationV2Command,
		output: OrchestrationV2DispatchCommandResult
	},
	getTurnDiff: {
		input: __vite_ssr_import_9__.OrchestrationGetTurnDiffInput,
		output: __vite_ssr_import_9__.OrchestrationGetTurnDiffResult
	},
	getFullThreadDiff: {
		input: __vite_ssr_import_9__.OrchestrationGetFullThreadDiffInput,
		output: __vite_ssr_import_9__.OrchestrationGetFullThreadDiffResult
	},
	getArchivedShellSnapshot: {
		input: __vite_ssr_import_2__.Struct({}),
		output: OrchestrationV2ArchivedShellSnapshot
	},
	getThreadFamily: {
		input: OrchestrationV2GetThreadFamilyInput,
		output: OrchestrationV2ThreadFamily
	},
	getWorktreeThreadIds: {
		input: OrchestrationV2GetWorktreeThreadIdsInput,
		output: OrchestrationV2WorktreeThreadIds
	},
	getThreadProjection: {
		input: OrchestrationV2GetThreadProjectionInput,
		output: OrchestrationV2ThreadProjection
	},
	stopWorkflow: {
		input: OrchestrationV2StopWorkflowInput,
		output: __vite_ssr_import_2__.Void
	},
	getWorkflowScript: {
		input: OrchestrationV2GetWorkflowScriptInput,
		output: OrchestrationV2GetWorkflowScriptResult
	},
	getTurnItem: {
		input: OrchestrationV2GetTurnItemInput,
		output: OrchestrationV2GetTurnItemResult
	},
	launchThread: {
		input: OrchestrationV2ThreadLaunchInput,
		output: OrchestrationV2ThreadLaunchResult
	},
	subscribeArchivedShell: {
		input: __vite_ssr_import_2__.Struct({}),
		output: OrchestrationV2ArchivedShellStreamItem
	},
	subscribeShell: {
		input: OrchestrationV2SubscribeShellInput,
		output: OrchestrationV2ShellStreamItem
	},
	subscribeThread: {
		input: OrchestrationV2SubscribeThreadInput,
		output: OrchestrationV2ThreadStreamItem
	},
	subscribeCommandOutput: {
		input: OrchestrationV2SubscribeCommandOutputInput,
		output: OrchestrationV2CommandOutputFrame
	}
};
const ProviderReplayEntry = __vite_ssr_import_2__.Union([
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("expect_outbound"),
		label: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
		frame: __vite_ssr_import_2__.Unknown
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("emit_inbound"),
		label: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.TrimmedNonEmptyString)),
		frame: __vite_ssr_import_2__.Unknown,
		afterMs: __vite_ssr_import_2__.optional((0,__vite_ssr_import_6__.NonNegativeInt))
	}),
	__vite_ssr_import_2__.Struct({
		type: __vite_ssr_import_2__.Literal("runtime_exit"),
		status: __vite_ssr_import_2__.Literals([
			"success",
			"error",
			"cancelled"
		]),
		error: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Unknown)
	})
]);
const ProviderReplayTranscript = __vite_ssr_import_2__.Struct({
	provider: __vite_ssr_import_6__.TrimmedNonEmptyString,
	protocol: __vite_ssr_import_6__.TrimmedNonEmptyString,
	version: __vite_ssr_import_6__.TrimmedNonEmptyString,
	scenario: __vite_ssr_import_6__.TrimmedNonEmptyString,
	metadata: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Record(__vite_ssr_import_2__.String, __vite_ssr_import_2__.Unknown)),
	entries: __vite_ssr_import_2__.Array(ProviderReplayEntry)
});
const ProviderReplayTranscriptHeader = __vite_ssr_import_2__.Struct({
	type: __vite_ssr_import_2__.Literal("transcript_start"),
	provider: __vite_ssr_import_6__.TrimmedNonEmptyString,
	protocol: __vite_ssr_import_6__.TrimmedNonEmptyString,
	version: __vite_ssr_import_6__.TrimmedNonEmptyString,
	scenario: __vite_ssr_import_6__.TrimmedNonEmptyString,
	metadata: __vite_ssr_import_2__.optional(__vite_ssr_import_2__.Record(__vite_ssr_import_2__.String, __vite_ssr_import_2__.Unknown))
});
const ProviderReplayNdjsonRecord = __vite_ssr_import_2__.Union([ProviderReplayTranscriptHeader, ProviderReplayEntry]);
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,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TyxRQUFRLHNCQUFPLE9BQU8sQ0FBQztDQUN0RSxTQUFTLHNCQUFPLE1BQU0sbUJBQW1CO0FBQzNDLENBQUM7QUFHTSxNQUFNLGlDQUFpQyxzQkFBTyxPQUFPO0NBQzFELE1BQU0sc0JBQU8sUUFBUSxrQkFBa0I7Q0FDdkMsVUFBVTtDQUNWLFVBQVU7Q0FDVixTQUFTO0NBQ1QsVUFBVTtDQUNWLFVBQVUsc0JBQU8sU0FBUyxzQkFBTyxPQUFPLHNCQUFPLFFBQVEsc0JBQU8sT0FBTyxDQUFDO0FBQ3hFLENBQUM7QUFHTSxNQUFNLDZCQUE2QixzQkFBTyxNQUFNLENBQ3JELGdDQUNBLG1CQUNGLENBQUMiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbIm9yY2hlc3RyYXRpb25WMi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcmNoZXN0cmF0aW9uTWVzc2FnZUNvbnRleHQgfSBmcm9tIFwiLi9jb21wb3NlckNvbnRleHQudHNcIjtcbmltcG9ydCAqIGFzIEVmZmVjdCBmcm9tIFwiZWZmZWN0L0VmZmVjdFwiO1xuaW1wb3J0ICogYXMgU2NoZW1hIGZyb20gXCJlZmZlY3QvU2NoZW1hXCI7XG5pbXBvcnQgKiBhcyBTY2hlbWFBU1QgZnJvbSBcImVmZmVjdC9TY2hlbWFBU1RcIjtcbmltcG9ydCAqIGFzIFNjaGVtYUdldHRlciBmcm9tIFwiZWZmZWN0L1NjaGVtYUdldHRlclwiO1xuaW1wb3J0ICogYXMgU2NoZW1hVHJhbnNmb3JtYXRpb24gZnJvbSBcImVmZmVjdC9TY2hlbWFUcmFuc2Zvcm1hdGlvblwiO1xuXG5pbXBvcnQge1xuICBDaGVja3BvaW50SWQsXG4gIENoZWNrcG9pbnRSZWYsXG4gIENoZWNrcG9pbnRTY29wZUlkLFxuICBDb21tYW5kSWQsXG4gIENvbnRleHRIYW5kb2ZmSWQsXG4gIENvbnRleHRUcmFuc2ZlcklkLFxuICBFdmVudElkLFxuICBHdWVzdE1lc3NhZ2VJZCxcbiAgR3Vlc3RTaGFyZUlkLFxuICBJc29EYXRlVGltZSxcbiAgTWVzc2FnZUlkLFxuICBOb2RlSWQsXG4gIEZvcndhcmRDb21wYXRpYmxlVW5pb24sXG4gIEZvcndhcmRDb21wYXRpYmxlVW5pb25BcnJheSxcbiAgaGFzVW5rbm93blVuaW9uVGFnLFxuICBpc1Vua25vd25Vbmlvbk1lbWJlcixcbiAgTm9uTmVnYXRpdmVJbnQsXG4gIFBsYW5JZCxcbiAgUG9zaXRpdmVJbnQsXG4gIFByb2plY3RJZCxcbiAgUHJvdmlkZXJTZXNzaW9uSWQsXG4gIFByb3ZpZGVyVGhyZWFkSWQsXG4gIFByb3ZpZGVyVHVybklkLFxuICBSYXdFdmVudElkLFxuICBSdW5BdHRlbXB0SWQsXG4gIFJ1bklkLFxuICBSdW50aW1lUmVxdWVzdElkLFxuICBTY2hlZHVsZWRUYXNrSWQsXG4gIFRocmVhZElkLFxuICBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIFR1cm5JdGVtSWQsXG59IGZyb20gXCIuL2Jhc2VTY2hlbWFzLnRzXCI7XG5pbXBvcnQgeyBDaGF0QXR0YWNobWVudCB9IGZyb20gXCIuL2NoYXRBdHRhY2htZW50LnRzXCI7XG5pbXBvcnQgeyBUaHJlYWRHdWVzdFNoYXJlIH0gZnJvbSBcIi4vZ3Vlc3RTaGFyZS50c1wiO1xuaW1wb3J0IHtcbiAgT3JjaGVzdHJhdGlvbkdldEZ1bGxUaHJlYWREaWZmSW5wdXQsXG4gIE9yY2hlc3RyYXRpb25HZXRGdWxsVGhyZWFkRGlmZlJlc3VsdCxcbiAgT3JjaGVzdHJhdGlvbkdldFR1cm5EaWZmSW5wdXQsXG4gIE9yY2hlc3RyYXRpb25HZXRUdXJuRGlmZlJlc3VsdCxcbn0gZnJvbSBcIi4vY2hlY2twb2ludERpZmYudHNcIjtcbmltcG9ydCB7IE1vZGVsU2VsZWN0aW9uIH0gZnJvbSBcIi4vbW9kZWxTZWxlY3Rpb24udHNcIjtcbmltcG9ydCB7XG4gIFRocmVhZExpbmtlZFB1bGxSZXF1ZXN0LFxuICBUaHJlYWRQdWxsUmVxdWVzdExpbmssXG4gIFRocmVhZFB1bGxSZXF1ZXN0S2V5LFxuICBUaHJlYWRQdWxsUmVxdWVzdExpbmtTb3VyY2UsXG4gIFRocmVhZFB1bGxSZXF1ZXN0U25hcHNob3QsXG4gIFRocmVhZFB1bGxSZXF1ZXN0U3RhY2ssXG4gIFRocmVhZFB1bGxSZXF1ZXN0V2F0Y2gsXG59IGZyb20gXCIuL3RocmVhZFB1bGxSZXF1ZXN0LnRzXCI7XG5pbXBvcnQge1xuICBQcm92aWRlckFwcHJvdmFsRGVjaXNpb24sXG4gIFByb3ZpZGVyQXBwcm92YWxGdWxsQWNjZXNzT3ZlcnJpZGUsXG4gIFByb3ZpZGVyQXBwcm92YWxPcHRpb24sXG4gIFByb3ZpZGVySW50ZXJhY3Rpb25Nb2RlLFxuICBQcm92aWRlclJlcXVlc3RLaW5kLFxuICBQcm92aWRlclVzZXJJbnB1dEFuc3dlcnMsXG4gIFVzZXJJbnB1dEF0dGFjaG1lbnRzLFxuICBVc2VySW5wdXRBdHRhY2htZW50QW5zd2VyUGF5bG9hZCxcbiAgUnVudGltZU1vZGUsXG59IGZyb20gXCIuL3Byb3ZpZGVyUG9saWN5LnRzXCI7XG5pbXBvcnQgeyBQcm92aWRlckRyaXZlcktpbmQsIFByb3ZpZGVySW5zdGFuY2VJZCB9IGZyb20gXCIuL3Byb3ZpZGVySW5zdGFuY2UudHNcIjtcbmltcG9ydCB7IE9yY2hlc3RyYXRpb25Qcm9qZWN0U2hlbGwgfSBmcm9tIFwiLi9vcmNoZXN0cmF0aW9uUHJvamVjdC50c1wiO1xuaW1wb3J0IHtcbiAgVHVyblRva2VuVXNhZ2UsXG4gIFRvb2xBY3Rpdml0eVN1cmZhY2UsXG4gIFRvb2xBY3Rpdml0eUljb24sXG4gIFRvb2xBY3Rpdml0eVNvdXJjZSxcbn0gZnJvbSBcIi4vcHJvdmlkZXJSdW50aW1lLnRzXCI7XG5pbXBvcnQgeyBUaHJlYWRUb2tlblVzYWdlU25hcHNob3QgfSBmcm9tIFwiLi9wcm92aWRlclJ1bnRpbWUudHNcIjtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkFjdG9yID0gU2NoZW1hLkxpdGVyYWxzKFtcInVzZXJcIiwgXCJhZ2VudFwiLCBcInN5c3RlbVwiXSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJBY3RvciA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJBY3Rvci5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyQ3JlYXRpb25Tb3VyY2UgPSBTY2hlbWEuTGl0ZXJhbHMoW1xuICBcIndlYlwiLFxuICBcIm1vYmlsZVwiLFxuICBcIm1jcFwiLFxuICBcInByb3ZpZGVyXCIsXG4gIFwic2VydmVyXCIsXG5dKTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMkNyZWF0aW9uU291cmNlID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMkNyZWF0aW9uU291cmNlLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJUaHJlYWRIaXN0b3J5T3JpZ2luID0gU2NoZW1hLkxpdGVyYWxzKFtcIm5hdGl2ZVwiLCBcInYxX2ltcG9ydFwiXSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJUaHJlYWRIaXN0b3J5T3JpZ2luID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlRocmVhZEhpc3RvcnlPcmlnaW4uVHlwZTtcblxuY29uc3QgT3JjaGVzdHJhdGlvblYyQ3JlYXRpb25GaWVsZHMgPSB7XG4gIGNyZWF0ZWRCeTogT3JjaGVzdHJhdGlvblYyQWN0b3IsXG4gIGNyZWF0aW9uU291cmNlOiBPcmNoZXN0cmF0aW9uVjJDcmVhdGlvblNvdXJjZSxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJOYXRpdmVSZWZTdHJlbmd0aCA9IFNjaGVtYS5MaXRlcmFscyhbXCJzdHJvbmdcIiwgXCJ3ZWFrXCIsIFwibm9uZVwiXSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJOYXRpdmVSZWZTdHJlbmd0aCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJOYXRpdmVSZWZTdHJlbmd0aC5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJSZWYgPSBTY2hlbWEuU3RydWN0KHtcbiAgZHJpdmVyOiBQcm92aWRlckRyaXZlcktpbmQsXG4gIG5hdGl2ZUlkOiBTY2hlbWEuTnVsbE9yKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gIHN0cmVuZ3RoOiBPcmNoZXN0cmF0aW9uVjJOYXRpdmVSZWZTdHJlbmd0aCxcbiAgZmluZ2VycHJpbnQ6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICBvcmRpbmFsOiBTY2hlbWEub3B0aW9uYWwoTm9uTmVnYXRpdmVJbnQpLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclJlZiA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclJlZi5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyQXBwVGhyZWFkTGluZWFnZSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBwYXJlbnRUaHJlYWRJZDogU2NoZW1hLk51bGxPcihUaHJlYWRJZCksXG4gIHJlbGF0aW9uc2hpcFRvUGFyZW50OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5MaXRlcmFscyhbXCJmb3JrXCIsIFwic3ViYWdlbnRcIl0pKSxcbiAgcm9vdFRocmVhZElkOiBUaHJlYWRJZCxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyQXBwVGhyZWFkTGluZWFnZSA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJBcHBUaHJlYWRMaW5lYWdlLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJDb250ZXh0VHJhbnNmZXJUeXBlID0gU2NoZW1hLkxpdGVyYWxzKFtcbiAgXCJmb3JrXCIsXG4gIFwicHJvdmlkZXJfaGFuZG9mZlwiLFxuICBcIm1lcmdlX2JhY2tcIixcbiAgXCJzdWJhZ2VudF9zcGF3blwiLFxuICBcInN1YmFnZW50X3Jlc3VsdFwiLFxuXSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJDb250ZXh0VHJhbnNmZXJUeXBlID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMkNvbnRleHRUcmFuc2ZlclR5cGUuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkNvbnRleHRTb3VyY2VQb2ludCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gIHJ1bklkOiBTY2hlbWEub3B0aW9uYWwoUnVuSWQpLFxuICBjaGVja3BvaW50SWQ6IFNjaGVtYS5vcHRpb25hbChDaGVja3BvaW50SWQpLFxuICB0dXJuSXRlbUlkOiBTY2hlbWEub3B0aW9uYWwoVHVybkl0ZW1JZCksXG4gIHByb3ZpZGVyVGhyZWFkUmVmOiBTY2hlbWEub3B0aW9uYWwoT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJSZWYpLFxuICBwcm92aWRlclR1cm5SZWY6IFNjaGVtYS5vcHRpb25hbChPcmNoZXN0cmF0aW9uVjJQcm92aWRlclJlZiksXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMkNvbnRleHRTb3VyY2VQb2ludCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJDb250ZXh0U291cmNlUG9pbnQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlRocmVhZEZvcmtTb3VyY2VQb2ludCA9IFNjaGVtYS5VbmlvbihbXG4gIFNjaGVtYS5TdHJ1Y3QoeyB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcImxhdGVzdF9zdGFibGVcIikgfSksXG4gIFNjaGVtYS5TdHJ1Y3QoeyB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInJ1blwiKSwgcnVuSWQ6IFJ1bklkIH0pLFxuICBTY2hlbWEuU3RydWN0KHsgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJjaGVja3BvaW50XCIpLCBjaGVja3BvaW50SWQ6IENoZWNrcG9pbnRJZCB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyVGhyZWFkRm9ya1NvdXJjZVBvaW50ID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlRocmVhZEZvcmtTb3VyY2VQb2ludC5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyQ29udGV4dFRyYW5zZmVyUmVzb2x1dGlvbiA9IFNjaGVtYS5VbmlvbihbXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHN0cmF0ZWd5OiBTY2hlbWEuTGl0ZXJhbChcIm5hdGl2ZV9mb3JrXCIpLFxuICAgIHByb3ZpZGVyVGhyZWFkUmVmOiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclJlZixcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHN0cmF0ZWd5OiBTY2hlbWEuTGl0ZXJhbChcInBvcnRhYmxlX2NvbnRleHRcIiksXG4gICAgY29udGV4dEhhbmRvZmZJZDogQ29udGV4dEhhbmRvZmZJZCxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHN0cmF0ZWd5OiBTY2hlbWEuTGl0ZXJhbChcImRlbHRhX2NvbnRleHRcIiksXG4gICAgY29udGV4dEhhbmRvZmZJZDogQ29udGV4dEhhbmRvZmZJZCxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHN0cmF0ZWd5OiBTY2hlbWEuTGl0ZXJhbChcImZvcmtfZGVsdGFfY29udGV4dFwiKSxcbiAgICBjb250ZXh0SGFuZG9mZklkOiBDb250ZXh0SGFuZG9mZklkLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgc3RyYXRlZ3k6IFNjaGVtYS5MaXRlcmFsKFwiY2hlY2twb2ludF9jb250ZXh0XCIpLFxuICAgIGNvbnRleHRIYW5kb2ZmSWQ6IENvbnRleHRIYW5kb2ZmSWQsXG4gIH0pLFxuXSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJDb250ZXh0VHJhbnNmZXJSZXNvbHV0aW9uID1cbiAgdHlwZW9mIE9yY2hlc3RyYXRpb25WMkNvbnRleHRUcmFuc2ZlclJlc29sdXRpb24uVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyVHVyblRva2VuVXNhZ2UgPSBTY2hlbWEuU3RydWN0KHtcbiAgdXNlZFRva2VuczogTm9uTmVnYXRpdmVJbnQsXG4gIG1heFRva2VuczogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoTm9uTmVnYXRpdmVJbnQpKSxcbiAgaW5wdXRUb2tlbnM6IFNjaGVtYS5vcHRpb25hbChOb25OZWdhdGl2ZUludCksXG4gIGNhY2hlZElucHV0VG9rZW5zOiBTY2hlbWEub3B0aW9uYWwoTm9uTmVnYXRpdmVJbnQpLFxuICBvdXRwdXRUb2tlbnM6IFNjaGVtYS5vcHRpb25hbChOb25OZWdhdGl2ZUludCksXG4gIHJlYXNvbmluZ091dHB1dFRva2VuczogU2NoZW1hLm9wdGlvbmFsKE5vbk5lZ2F0aXZlSW50KSxcbiAgcHJvbXB0Q2FjaGVUdGxNczogU2NoZW1hLm9wdGlvbmFsKFBvc2l0aXZlSW50KSxcbiAgYXV0b0NvbXBhY3RUaHJlc2hvbGQ6IFNjaGVtYS5vcHRpb25hbChQb3NpdGl2ZUludCksXG4gIHByb21wdENhY2hlRXhwaXJlc0F0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gIHVwZGF0ZWRBdDogU2NoZW1hLlN0cmluZyxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJUdXJuVG9rZW5Vc2FnZSA9XG4gIHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclR1cm5Ub2tlblVzYWdlLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJDb250ZXh0VHJhbnNmZXIgPSBTY2hlbWEuU3RydWN0KHtcbiAgaWQ6IENvbnRleHRUcmFuc2ZlcklkLFxuICB0eXBlOiBPcmNoZXN0cmF0aW9uVjJDb250ZXh0VHJhbnNmZXJUeXBlLFxuICBzb3VyY2VUaHJlYWRJZDogVGhyZWFkSWQsXG4gIHRhcmdldFRocmVhZElkOiBUaHJlYWRJZCxcbiAgc291cmNlUG9pbnQ6IE9yY2hlc3RyYXRpb25WMkNvbnRleHRTb3VyY2VQb2ludCxcbiAgYmFzZVBvaW50OiBTY2hlbWEuTnVsbE9yKE9yY2hlc3RyYXRpb25WMkNvbnRleHRTb3VyY2VQb2ludCksXG4gIHNvdXJjZVByb3ZpZGVySW5zdGFuY2VJZDogU2NoZW1hLk51bGxPcihQcm92aWRlckluc3RhbmNlSWQpLFxuICBzb3VyY2VUb2tlblVzYWdlOiBTY2hlbWEub3B0aW9uYWwoT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJUdXJuVG9rZW5Vc2FnZSksXG4gIHRhcmdldFByb3ZpZGVySW5zdGFuY2VJZDogU2NoZW1hLk51bGxPcihQcm92aWRlckluc3RhbmNlSWQpLFxuICB0YXJnZXRSdW5JZDogU2NoZW1hLk51bGxPcihSdW5JZCksXG4gIHN0YXR1czogU2NoZW1hLkxpdGVyYWxzKFtcbiAgICBcInBlbmRpbmdcIixcbiAgICBcInJlc29sdmVkX25hdGl2ZVwiLFxuICAgIFwicmVzb2x2ZWRfcG9ydGFibGVcIixcbiAgICBcImZhaWxlZFwiLFxuICAgIFwiY29uc3VtZWRcIixcbiAgICBcInN1cGVyc2VkZWRcIixcbiAgXSksXG4gIHJlc29sdXRpb246IFNjaGVtYS5OdWxsT3IoT3JjaGVzdHJhdGlvblYyQ29udGV4dFRyYW5zZmVyUmVzb2x1dGlvbiksXG4gIGNyZWF0ZWRCeTogT3JjaGVzdHJhdGlvblYyQWN0b3IsXG4gIGVycm9yOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpLFxuICBjcmVhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0YyxcbiAgdXBkYXRlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGMsXG4gIGNvbnN1bWVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyQ29udGV4dFRyYW5zZmVyID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMkNvbnRleHRUcmFuc2Zlci5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyU2Vzc2lvbkNhcGFiaWxpdGllcyA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBzdXBwb3J0c011bHRpcGxlUHJvdmlkZXJUaHJlYWRzUGVyU2Vzc2lvbjogU2NoZW1hLkJvb2xlYW4sXG4gIHN1cHBvcnRzTW9kZWxTd2l0Y2hJblNlc3Npb246IFNjaGVtYS5Cb29sZWFuLFxuICBzdXBwb3J0c1Byb3ZpZGVyU3dpdGNoaW5nVmlhSGFuZG9mZjogU2NoZW1hLkJvb2xlYW4sXG4gIHN1cHBvcnRzUnVudGltZU1vZGVTd2l0Y2hJblNlc3Npb246IFNjaGVtYS5Cb29sZWFuLFxuICBwZW5kaW5nUmVxdWVzdHNTdXJ2aXZlUmVzdGFydDogU2NoZW1hLkJvb2xlYW4sXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlNlc3Npb25DYXBhYmlsaXRpZXMgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyU2Vzc2lvbkNhcGFiaWxpdGllcy5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyVGhyZWFkQ2FwYWJpbGl0aWVzID0gU2NoZW1hLlN0cnVjdCh7XG4gIGNhbkNyZWF0ZUVtcHR5VGhyZWFkOiBTY2hlbWEuQm9vbGVhbixcbiAgY2FuUmVhZFRocmVhZFNuYXBzaG90OiBTY2hlbWEuQm9vbGVhbixcbiAgY2FuUm9sbGJhY2tUaHJlYWQ6IFNjaGVtYS5Cb29sZWFuLFxuICBjYW5Gb3JrVGhyZWFkOiBTY2hlbWEuQm9vbGVhbixcbiAgY2FuRm9ya0Zyb21UdXJuOiBTY2hlbWEuQm9vbGVhbixcbiAgY2FuRm9ya0Zyb21TdWJhZ2VudFRocmVhZDogU2NoZW1hLkJvb2xlYW4sXG4gIGV4cG9zZXNOYXRpdmVUaHJlYWRJZDogU2NoZW1hLkJvb2xlYW4sXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlRocmVhZENhcGFiaWxpdGllcyA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJUaHJlYWRDYXBhYmlsaXRpZXMuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlR1cm5DYXBhYmlsaXRpZXMgPSBTY2hlbWEuU3RydWN0KHtcbiAgZXhwb3Nlc05hdGl2ZVR1cm5JZDogU2NoZW1hLkJvb2xlYW4sXG4gIGVtaXRzVHVyblN0YXJ0ZWQ6IFNjaGVtYS5Cb29sZWFuLFxuICBlbWl0c1R1cm5Db21wbGV0ZWQ6IFNjaGVtYS5Cb29sZWFuLFxuICBzdXBwb3J0c0ludGVycnVwdDogU2NoZW1hLkJvb2xlYW4sXG4gIHN1cHBvcnRzQWN0aXZlU3RlZXJpbmc6IFNjaGVtYS5Cb29sZWFuLFxuICAvLyBTb21lIG5hdGl2ZSBzdGVlcmluZyBtZWNoYW5pc21zIGNhbmNlbCBwZW5kaW5nIHRvb2xzIGJlZm9yZSBjb25zdW1pbmcgdGhlIG1lc3NhZ2UuXG4gIGFjdGl2ZVN0ZWVyaW5nSW50ZXJydXB0c1Rvb2xzOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICBzdXBwb3J0c1N0ZWVyaW5nQnlJbnRlcnJ1cHRSZXN0YXJ0OiBTY2hlbWEuQm9vbGVhbixcbiAgc3VwcG9ydHNRdWV1ZWRNZXNzYWdlczogU2NoZW1hLkJvb2xlYW4sXG4gIHRlcm1pbmFsU3RhdHVzUXVhbGl0eTogU2NoZW1hLkxpdGVyYWxzKFtcInN0cm9uZ1wiLCBcIndlYWtcIiwgXCJub25lXCJdKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyVHVybkNhcGFiaWxpdGllcyA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJUdXJuQ2FwYWJpbGl0aWVzLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJTdHJlYW1pbmdDYXBhYmlsaXRpZXMgPSBTY2hlbWEuU3RydWN0KHtcbiAgc3RyZWFtc0Fzc2lzdGFudFRleHQ6IFNjaGVtYS5Cb29sZWFuLFxuICBzdHJlYW1zUmVhc29uaW5nOiBTY2hlbWEuQm9vbGVhbixcbiAgc3RyZWFtc1Rvb2xPdXRwdXQ6IFNjaGVtYS5Cb29sZWFuLFxuICBzdHJlYW1zUGxhblRleHQ6IFNjaGVtYS5Cb29sZWFuLFxuICBlbWl0c01lc3NhZ2VDb21wbGV0ZWQ6IFNjaGVtYS5Cb29sZWFuLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJTdHJlYW1pbmdDYXBhYmlsaXRpZXMgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyU3RyZWFtaW5nQ2FwYWJpbGl0aWVzLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJUb29sQ2FwYWJpbGl0aWVzID0gU2NoZW1hLlN0cnVjdCh7XG4gIGV4cG9zZXNUb29sSXRlbUlkczogU2NoZW1hLkJvb2xlYW4sXG4gIGVtaXRzVG9vbFN0YXJ0ZWQ6IFNjaGVtYS5Cb29sZWFuLFxuICBlbWl0c1Rvb2xDb21wbGV0ZWQ6IFNjaGVtYS5Cb29sZWFuLFxuICBlbWl0c1Rvb2xPdXRwdXQ6IFNjaGVtYS5Cb29sZWFuLFxuICBzdXBwb3J0c01jcFRvb2xzOiBTY2hlbWEuQm9vbGVhbixcbiAgc3VwcG9ydHNEeW5hbWljVG9vbENhbGxiYWNrczogU2NoZW1hLkJvb2xlYW4sXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlRvb2xDYXBhYmlsaXRpZXMgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyVG9vbENhcGFiaWxpdGllcy5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyQXBwcm92YWxDYXBhYmlsaXRpZXMgPSBTY2hlbWEuU3RydWN0KHtcbiAgc3VwcG9ydHNDb21tYW5kQXBwcm92YWw6IFNjaGVtYS5Cb29sZWFuLFxuICBzdXBwb3J0c0ZpbGVSZWFkQXBwcm92YWw6IFNjaGVtYS5Cb29sZWFuLFxuICBzdXBwb3J0c0ZpbGVDaGFuZ2VBcHByb3ZhbDogU2NoZW1hLkJvb2xlYW4sXG4gIHN1cHBvcnRzQXBwbHlQYXRjaEFwcHJvdmFsOiBTY2hlbWEuQm9vbGVhbixcbiAgYXBwcm92YWxzSGF2ZU5hdGl2ZVJlcXVlc3RJZHM6IFNjaGVtYS5Cb29sZWFuLFxuICBhcHByb3ZhbENhbGxiYWNrc0FyZUxpdmVPbmx5OiBTY2hlbWEuQm9vbGVhbixcbiAgYXBwcm92YWxzQ2FuT3JpZ2luYXRlRnJvbVN1YmFnZW50czogU2NoZW1hLkJvb2xlYW4sXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMkFwcHJvdmFsQ2FwYWJpbGl0aWVzID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMkFwcHJvdmFsQ2FwYWJpbGl0aWVzLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJQbGFubmluZ0NhcGFiaWxpdGllcyA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBlbWl0c1BsYW5VcGRhdGVkOiBTY2hlbWEuQm9vbGVhbixcbiAgZW1pdHNUb2RvTGlzdDogU2NoZW1hLkJvb2xlYW4sXG4gIGVtaXRzUHJvcG9zZWRQbGFuOiBTY2hlbWEuQm9vbGVhbixcbiAgc3VwcG9ydHNTdHJ1Y3R1cmVkUXVlc3Rpb25zOiBTY2hlbWEuQm9vbGVhbixcbiAgcGxhbkRlbHRhc0hhdmVJdGVtSWRzOiBTY2hlbWEuQm9vbGVhbixcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUGxhbm5pbmdDYXBhYmlsaXRpZXMgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyUGxhbm5pbmdDYXBhYmlsaXRpZXMuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlN1YmFnZW50Q2FwYWJpbGl0aWVzID0gU2NoZW1hLlN0cnVjdCh7XG4gIHN1cHBvcnRzU3ViYWdlbnRzOiBTY2hlbWEuQm9vbGVhbixcbiAgZXhwb3Nlc1N1YmFnZW50VGhyZWFkSWRzOiBTY2hlbWEuQm9vbGVhbixcbiAgZW1pdHNTdWJhZ2VudExpZmVjeWNsZTogU2NoZW1hLkJvb2xlYW4sXG4gIGNhbldhaXRGb3JTdWJhZ2VudHM6IFNjaGVtYS5Cb29sZWFuLFxuICBjYW5DbG9zZVN1YmFnZW50czogU2NoZW1hLkJvb2xlYW4sXG4gIGNhbkZvcmtTdWJhZ2VudFRocmVhZDogU2NoZW1hLkJvb2xlYW4sXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlN1YmFnZW50Q2FwYWJpbGl0aWVzID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlN1YmFnZW50Q2FwYWJpbGl0aWVzLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJDb250ZXh0Q2FwYWJpbGl0aWVzID0gU2NoZW1hLlN0cnVjdCh7XG4gIGFjY2VwdHNTeXN0ZW1Db250ZXh0OiBTY2hlbWEuQm9vbGVhbixcbiAgYWNjZXB0c0RldmVsb3BlckNvbnRleHQ6IFNjaGVtYS5Cb29sZWFuLFxuICBhY2NlcHRzU3ludGhldGljVXNlckNvbnRleHQ6IFNjaGVtYS5Cb29sZWFuLFxuICBjYW5HZW5lcmF0ZVN1bW1hcmllczogU2NoZW1hLkJvb2xlYW4sXG4gIGNhbkNvbnN1bWVIYW5kb2ZmU3VtbWFyaWVzOiBTY2hlbWEuQm9vbGVhbixcbiAgc3VwcG9ydHNEZWx0YUhhbmRvZmY6IFNjaGVtYS5Cb29sZWFuLFxuICBzdXBwb3J0c0Z1bGxUaHJlYWRIYW5kb2ZmOiBTY2hlbWEuQm9vbGVhbixcbiAgbWF4UmVjb21tZW5kZWRIYW5kb2ZmQ2hhcnM6IFNjaGVtYS5OdWxsT3IoUG9zaXRpdmVJbnQpLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJDb250ZXh0Q2FwYWJpbGl0aWVzID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMkNvbnRleHRDYXBhYmlsaXRpZXMuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkNoZWNrcG9pbnRDYXBhYmlsaXRpZXMgPSBTY2hlbWEuU3RydWN0KHtcbiAgYXBwQ2FuQ2hlY2twb2ludEZpbGVzeXN0ZW06IFNjaGVtYS5Cb29sZWFuLFxuICBzdXBwb3J0c05lc3RlZENoZWNrcG9pbnRTY29wZXM6IFNjaGVtYS5Cb29sZWFuLFxuICBwcm92aWRlckNhblJvbGxiYWNrQ29udmVyc2F0aW9uOiBTY2hlbWEuQm9vbGVhbixcbiAgcHJvdmlkZXJSb2xsYmFja1JldHVybnNTbmFwc2hvdDogU2NoZW1hLkJvb2xlYW4sXG4gIHByb3ZpZGVyQ2FuUmVhZENvbnZlcnNhdGlvblNuYXBzaG90OiBTY2hlbWEuQm9vbGVhbixcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludENhcGFiaWxpdGllcyA9XG4gIHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJDaGVja3BvaW50Q2FwYWJpbGl0aWVzLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJSdW50aW1lUG9saWN5Q2FwYWJpbGl0aWVzID0gU2NoZW1hLlN0cnVjdCh7XG4gIGVuZm9yY2VtZW50OiBTY2hlbWEuTGl0ZXJhbHMoW1wibmF0aXZlXCIsIFwiY2xpZW50LWJvdW5kYXJ5XCJdKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUnVudGltZVBvbGljeUNhcGFiaWxpdGllcyA9XG4gIHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJSdW50aW1lUG9saWN5Q2FwYWJpbGl0aWVzLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJJZGVudGl0eUNhcGFiaWxpdGllcyA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBuYXRpdmVUaHJlYWRJZHM6IE9yY2hlc3RyYXRpb25WMk5hdGl2ZVJlZlN0cmVuZ3RoLFxuICBuYXRpdmVUdXJuSWRzOiBPcmNoZXN0cmF0aW9uVjJOYXRpdmVSZWZTdHJlbmd0aCxcbiAgbmF0aXZlSXRlbUlkczogT3JjaGVzdHJhdGlvblYyTmF0aXZlUmVmU3RyZW5ndGgsXG4gIG5hdGl2ZVJlcXVlc3RJZHM6IE9yY2hlc3RyYXRpb25WMk5hdGl2ZVJlZlN0cmVuZ3RoLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJJZGVudGl0eUNhcGFiaWxpdGllcyA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJJZGVudGl0eUNhcGFiaWxpdGllcy5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJDYXBhYmlsaXRpZXMgPSBTY2hlbWEuU3RydWN0KHtcbiAgc2Vzc2lvbnM6IE9yY2hlc3RyYXRpb25WMlNlc3Npb25DYXBhYmlsaXRpZXMsXG4gIHRocmVhZHM6IE9yY2hlc3RyYXRpb25WMlRocmVhZENhcGFiaWxpdGllcyxcbiAgdHVybnM6IE9yY2hlc3RyYXRpb25WMlR1cm5DYXBhYmlsaXRpZXMsXG4gIHN0cmVhbWluZzogT3JjaGVzdHJhdGlvblYyU3RyZWFtaW5nQ2FwYWJpbGl0aWVzLFxuICB0b29sczogT3JjaGVzdHJhdGlvblYyVG9vbENhcGFiaWxpdGllcyxcbiAgYXBwcm92YWxzOiBPcmNoZXN0cmF0aW9uVjJBcHByb3ZhbENhcGFiaWxpdGllcyxcbiAgcGxhbm5pbmc6IE9yY2hlc3RyYXRpb25WMlBsYW5uaW5nQ2FwYWJpbGl0aWVzLFxuICBzdWJhZ2VudHM6IE9yY2hlc3RyYXRpb25WMlN1YmFnZW50Q2FwYWJpbGl0aWVzLFxuICBjb250ZXh0OiBPcmNoZXN0cmF0aW9uVjJDb250ZXh0Q2FwYWJpbGl0aWVzLFxuICBjaGVja3BvaW50aW5nOiBPcmNoZXN0cmF0aW9uVjJDaGVja3BvaW50Q2FwYWJpbGl0aWVzLFxuICBpZGVudGl0eTogT3JjaGVzdHJhdGlvblYySWRlbnRpdHlDYXBhYmlsaXRpZXMsXG4gIC8vIFJlcGxheSBkZWZhdWx0cyBvbGQgZXZlbnRzIHRvIHRoZSB3ZWFrZXIgY2xpZW50LWJvdW5kYXJ5IGd1YXJhbnRlZS5cbiAgcnVudGltZVBvbGljeTogT3JjaGVzdHJhdGlvblYyUnVudGltZVBvbGljeUNhcGFiaWxpdGllcy5waXBlKFxuICAgIFNjaGVtYS53aXRoRGVjb2RpbmdEZWZhdWx0KEVmZmVjdC5zdWNjZWVkKHsgZW5mb3JjZW1lbnQ6IFwiY2xpZW50LWJvdW5kYXJ5XCIgYXMgY29uc3QgfSkpLFxuICApLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJQcm92aWRlckNhcGFiaWxpdGllcyA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlckNhcGFiaWxpdGllcy5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyTGltaXRSZWNvdmVyeSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICByZXF1ZXN0SWQ6IFNjaGVtYS5vcHRpb25hbChDb21tYW5kSWQpLFxuICBydW5JZDogUnVuSWQsXG4gIHJlc2V0QXQ6IElzb0RhdGVUaW1lLFxuICBhdXRvUmVzdW1lOiBTY2hlbWEuQm9vbGVhbixcbiAgc25vb3plOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJMaW1pdFJlY292ZXJ5ID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMkxpbWl0UmVjb3ZlcnkuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkxpbWl0UmVjb3ZlcnlVcGRhdGUgPSBTY2hlbWEuU3RydWN0KHtcbiAgcnVuSWQ6IFJ1bklkLFxuICByZXNldEF0OiBJc29EYXRlVGltZSxcbiAgYXV0b1Jlc3VtZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgc25vb3plOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxufSkuY2hlY2soXG4gIFNjaGVtYS5tYWtlRmlsdGVyKFxuICAgICh1cGRhdGUpID0+XG4gICAgICB1cGRhdGUuYXV0b1Jlc3VtZSAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICB1cGRhdGUuc25vb3plICE9PSB1bmRlZmluZWQgfHxcbiAgICAgIFwiQSByZWNvdmVyeSB1cGRhdGUgbXVzdCBpbmNsdWRlIGF1dG9SZXN1bWUgb3Igc25vb3plLlwiLFxuICApLFxuKTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMkxpbWl0UmVjb3ZlcnlVcGRhdGUgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyTGltaXRSZWNvdmVyeVVwZGF0ZS5UeXBlO1xuXG4vKipcbiAqIGBzY29yZWAgaXMgYW4gb3BlbiBjb3VudCB0aGF0IGhhbHZlcyBldmVyeSB0d28gd2Vla3MsIGFzIG9mIGBvcGVuZWRBdGAuXG4gKiBgcGlja3NgIHN0b3JlcyBsb3dlcmNhc2UgcGFsZXR0ZSBxdWVyaWVzLCBuZXdlc3QgZmlyc3QuXG4gKiBUaW1lcyBhcmUgZXBvY2ggbWlsbGlzZWNvbmRzIGZvciByYW5raW5nIGFyaXRobWV0aWMuXG4gKi9cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJUaHJlYWRPcGVucyA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBvcGVuZWRBdDogU2NoZW1hLkZpbml0ZSxcbiAgc2NvcmU6IFNjaGVtYS5GaW5pdGUuY2hlY2soU2NoZW1hLmlzR3JlYXRlclRoYW5PckVxdWFsVG8oMCkpLFxuICBwaWNrczogU2NoZW1hLkFycmF5KFxuICAgIFNjaGVtYS5TdHJ1Y3QoeyBxdWVyeTogU2NoZW1hLlN0cmluZy5jaGVjayhTY2hlbWEuaXNNYXhMZW5ndGgoMzIpKSwgYXQ6IFNjaGVtYS5GaW5pdGUgfSksXG4gICkuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDMpKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyVGhyZWFkT3BlbnMgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyVGhyZWFkT3BlbnMuVHlwZTtcblxuLy8gT3BlbiBzdGF0cyBvbmx5IHJhbmsgc2VhcmNoIHJlc3VsdHMsIHNvIGEgdmFsdWUgdGhpcyBidWlsZCBjYW5ub3QgcmVhZCAoYW5cbi8vIG9sZGVyIG9yIG5ld2VyIHNoYXBlKSBiZWNvbWVzIG51bGwgaW5zdGVhZCBvZiBmYWlsaW5nIHRoZSB3aG9sZSB0aHJlYWQuXG5jb25zdCBMZW5pZW50VGhyZWFkT3BlbnMgPSBTY2hlbWEuTnVsbE9yKE9yY2hlc3RyYXRpb25WMlRocmVhZE9wZW5zKS5waXBlKFxuICBTY2hlbWEuY2F0Y2hEZWNvZGluZygoKSA9PiBFZmZlY3Quc3VjY2VlZFNvbWUobnVsbCkpLFxuKTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkFwcFRocmVhZCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICAuLi5PcmNoZXN0cmF0aW9uVjJDcmVhdGlvbkZpZWxkcyxcbiAgaWQ6IFRocmVhZElkLFxuICBwcm9qZWN0SWQ6IFByb2plY3RJZCxcbiAgdGl0bGU6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgcHJvdmlkZXJJbnN0YW5jZUlkOiBQcm92aWRlckluc3RhbmNlSWQsXG4gIG1vZGVsU2VsZWN0aW9uOiBNb2RlbFNlbGVjdGlvbixcbiAgcnVudGltZU1vZGU6IFJ1bnRpbWVNb2RlLFxuICBpbnRlcmFjdGlvbk1vZGU6IFByb3ZpZGVySW50ZXJhY3Rpb25Nb2RlLFxuICBicmFuY2g6IFNjaGVtYS5OdWxsT3IoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgd29ya3RyZWVQYXRoOiBTY2hlbWEuTnVsbE9yKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gIGxpbmtlZFB1bGxSZXF1ZXN0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihUaHJlYWRMaW5rZWRQdWxsUmVxdWVzdCkpLFxuICBwdWxsUmVxdWVzdHM6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQXJyYXkoVGhyZWFkUHVsbFJlcXVlc3RMaW5rKSksXG4gIGJyYW5jaFB1bGxSZXF1ZXN0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihUaHJlYWRMaW5rZWRQdWxsUmVxdWVzdCkpLFxuICBhY3RpdmVQcm92aWRlclRocmVhZElkOiBTY2hlbWEuTnVsbE9yKFByb3ZpZGVyVGhyZWFkSWQpLFxuICBoaXN0b3J5T3JpZ2luOiBTY2hlbWEub3B0aW9uYWwoT3JjaGVzdHJhdGlvblYyVGhyZWFkSGlzdG9yeU9yaWdpbiksXG4gIGxpbmVhZ2U6IE9yY2hlc3RyYXRpb25WMkFwcFRocmVhZExpbmVhZ2UsXG4gIGZvcmtlZEZyb206IFNjaGVtYS5OdWxsT3IoXG4gICAgU2NoZW1hLlVuaW9uKFtcbiAgICAgIFNjaGVtYS5TdHJ1Y3QoeyB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInJ1blwiKSwgdGhyZWFkSWQ6IFRocmVhZElkLCBydW5JZDogUnVuSWQgfSksXG4gICAgICBTY2hlbWEuU3RydWN0KHsgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJub2RlXCIpLCBub2RlSWQ6IE5vZGVJZCB9KSxcbiAgICAgIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgICAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInByb3ZpZGVyX3RocmVhZFwiKSxcbiAgICAgICAgcHJvdmlkZXJUaHJlYWRJZDogUHJvdmlkZXJUaHJlYWRJZCxcbiAgICAgICAgcHJvdmlkZXJUdXJuSWQ6IFNjaGVtYS5vcHRpb25hbChQcm92aWRlclR1cm5JZCksXG4gICAgICB9KSxcbiAgICBdKSxcbiAgKSxcbiAgY3JlYXRlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGMsXG4gIHVwZGF0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjLFxuICBhcmNoaXZlZEF0OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0YyksXG4gIHNldHRsZWRPdmVycmlkZTogU2NoZW1hLk51bGxPcihTY2hlbWEuTGl0ZXJhbHMoW1wic2V0dGxlZFwiLCBcImFjdGl2ZVwiXSkpLnBpcGUoXG4gICAgU2NoZW1hLndpdGhEZWNvZGluZ0RlZmF1bHQoRWZmZWN0LnN1Y2NlZWQobnVsbCkpLFxuICApLFxuICBzZXR0bGVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjKS5waXBlKFxuICAgIFNjaGVtYS53aXRoRGVjb2RpbmdEZWZhdWx0KEVmZmVjdC5zdWNjZWVkKG51bGwpKSxcbiAgKSxcbiAgdW5zZXR0bGVkQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0YykpLFxuICBzbm9vemVkVW50aWw6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0YykpLFxuICBzbm9vemVkQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0YykpLFxuICBsYXN0U25vb3plV2FrZUF0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGMpKSxcbiAgbGltaXRSZWNvdmVyeTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoT3JjaGVzdHJhdGlvblYyTGltaXRSZWNvdmVyeSkpLFxuICBndWVzdFNoYXJlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihUaHJlYWRHdWVzdFNoYXJlKSksXG4gIHBpbm5lZEF0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGMpKSxcbiAgYXV0b1NldHRsZURpc2FibGVkQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0YykpLFxuICBwaW5PcmRlcktleTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSksXG4gIGFjdGl2ZU9yZGVyS2V5OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmcpKSxcbiAgbGFzdFZpc2l0ZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGMpLnBpcGUoXG4gICAgU2NoZW1hLndpdGhEZWNvZGluZ0RlZmF1bHQoRWZmZWN0LnN1Y2NlZWQobnVsbCkpLFxuICApLFxuICBvcGVuczogU2NoZW1hLm9wdGlvbmFsKExlbmllbnRUaHJlYWRPcGVucyksXG4gIHRpdGxlUmVnZW5lcmF0aW9uOiBTY2hlbWEub3B0aW9uYWwoXG4gICAgU2NoZW1hLk51bGxPcihcbiAgICAgIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgICAgICByZXF1ZXN0SWQ6IENvbW1hbmRJZCxcbiAgICAgICAgc3RhcnRlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGMsXG4gICAgICB9KSxcbiAgICApLFxuICApLFxuICByb2xsYmFja1JlcXVlc3RJZDogU2NoZW1hLm9wdGlvbmFsKENvbW1hbmRJZCksXG4gIHJvbGxiYWNrRmFpbHVyZTogU2NoZW1hLm9wdGlvbmFsKFxuICAgIFNjaGVtYS5OdWxsT3IoXG4gICAgICBTY2hlbWEuU3RydWN0KHtcbiAgICAgICAgcmVxdWVzdElkOiBDb21tYW5kSWQsXG4gICAgICAgIG1lc3NhZ2U6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgICAgIH0pLFxuICAgICksXG4gICksXG4gIGRlbGV0ZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGMpLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJBcHBUaHJlYWQgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyQXBwVGhyZWFkLlR5cGU7XG5cbi8qKiBQcm92aWRlci1uYXRpdmUgY2hpbGRyZW4gY2Fubm90IHJlY2VpdmUgbWVzc2FnZXM7IFQzIGRlbGVnYXRlX3Rhc2sgY2hpbGRyZW4gY2FuLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvdmlkZXJOYXRpdmVTdWJhZ2VudFRocmVhZChcbiAgdGhyZWFkOiBQaWNrPE9yY2hlc3RyYXRpb25WMkFwcFRocmVhZCwgXCJsaW5lYWdlXCIgfCBcImNyZWF0aW9uU291cmNlXCI+LFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiB0aHJlYWQubGluZWFnZS5yZWxhdGlvbnNoaXBUb1BhcmVudCA9PT0gXCJzdWJhZ2VudFwiICYmIHRocmVhZC5jcmVhdGlvblNvdXJjZSA9PT0gXCJwcm92aWRlclwiO1xufVxuXG5leHBvcnQgY29uc3QgSURMRV9DT01QQUNUSU9OX1RFWFQgPSBcIi9jb21wYWN0XCI7XG5cbmludGVyZmFjZSBDb21wYWN0aW9uTWVzc2FnZUZpZWxkcyB7XG4gIHJlYWRvbmx5IHJvbGU6IHN0cmluZztcbiAgcmVhZG9ubHkgdGV4dDogc3RyaW5nO1xuICByZWFkb25seSBhdHRhY2htZW50cz86IFJlYWRvbmx5QXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGNyZWF0ZWRCeT86IE9yY2hlc3RyYXRpb25WMkFjdG9yIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBjcmVhdGlvblNvdXJjZT86IE9yY2hlc3RyYXRpb25WMkNyZWF0aW9uU291cmNlIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBpZGxlQ29tcGFjdGlvbj86IE9yY2hlc3RyYXRpb25WMklkbGVDb21wYWN0aW9uIHwgdW5kZWZpbmVkO1xufVxuXG4vKiogQSBwcm9tcHQgdGhhdCBvbmx5IGFza3MgdGhlIHByb3ZpZGVyIHRvIGNvbXBhY3QsIHNvIGl0cyB0dXJuIGlzIHRoZSBjb21wYWN0aW9uIGl0c2VsZi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbXBhY3Rpb25Db21tYW5kTWVzc2FnZShtZXNzYWdlOiBDb21wYWN0aW9uTWVzc2FnZUZpZWxkcyk6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIG1lc3NhZ2Uucm9sZSA9PT0gXCJ1c2VyXCIgJiZcbiAgICBtZXNzYWdlLnRleHQudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IElETEVfQ09NUEFDVElPTl9URVhUICYmXG4gICAgKG1lc3NhZ2UuYXR0YWNobWVudHM/Lmxlbmd0aCA/PyAwKSA9PT0gMFxuICApO1xufVxuXG4vKiogV2h5IFQzIENvZGUgc2VudCB0aGlzIGAvY29tcGFjdGAgb24gaXRzIG93biwgb3IgdW5kZWZpbmVkIGZvciBvbmUgc29tZW9uZSBhc2tlZCBmb3IuICovXG5leHBvcnQgZnVuY3Rpb24gaWRsZUNvbXBhY3Rpb25PZihcbiAgbWVzc2FnZTogQ29tcGFjdGlvbk1lc3NhZ2VGaWVsZHMsXG4pOiBPcmNoZXN0cmF0aW9uVjJJZGxlQ29tcGFjdGlvbiB8IHVuZGVmaW5lZCB7XG4gIGlmICghaXNDb21wYWN0aW9uQ29tbWFuZE1lc3NhZ2UobWVzc2FnZSkpIHJldHVybiB1bmRlZmluZWQ7XG4gIGlmIChtZXNzYWdlLmlkbGVDb21wYWN0aW9uICE9PSB1bmRlZmluZWQpIHJldHVybiBtZXNzYWdlLmlkbGVDb21wYWN0aW9uO1xuICAvLyBTZXJ2ZXJzIGJlZm9yZSBgaWRsZUNvbXBhY3Rpb25gIG1hcmtlZCB0aGVpciBvd24gYXMgYWdlbnQtY3JlYXRlZC5cbiAgcmV0dXJuIG1lc3NhZ2UuY3JlYXRlZEJ5ID09PSBcImFnZW50XCIgJiYgbWVzc2FnZS5jcmVhdGlvblNvdXJjZSA9PT0gXCJzZXJ2ZXJcIlxuICAgID8gXCJiZWZvcmVDYWNoZUV4cGlyZXNcIlxuICAgIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyUnVuU3RhdHVzID0gU2NoZW1hLkxpdGVyYWxzKFtcbiAgXCJwcmVwYXJpbmdcIixcbiAgXCJxdWV1ZWRcIixcbiAgXCJzdGFydGluZ1wiLFxuICBcInJ1bm5pbmdcIixcbiAgXCJ3YWl0aW5nXCIsXG4gIFwiY29tcGxldGVkXCIsXG4gIFwiaW50ZXJydXB0ZWRcIixcbiAgXCJmYWlsZWRcIixcbiAgXCJjYW5jZWxsZWRcIixcbiAgXCJyb2xsZWRfYmFja1wiLFxuXSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJSdW5TdGF0dXMgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyUnVuU3RhdHVzLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJEZWxlZ2F0ZWRDb21wbGV0aW9uVGFza0RlbGl2ZXJ5U3RhdGUgPSBTY2hlbWEuTGl0ZXJhbHMoW1xuICBcInBlbmRpbmdcIixcbiAgXCJjbGFpbWVkXCIsXG4gIFwiYWNrbm93bGVkZ2VkXCIsXG4gIFwiZGVsaXZlcmVkXCIsXG4gIFwiZGlzcG9zZWRcIixcbl0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyRGVsZWdhdGVkQ29tcGxldGlvblRhc2tEZWxpdmVyeVN0YXRlID1cbiAgdHlwZW9mIE9yY2hlc3RyYXRpb25WMkRlbGVnYXRlZENvbXBsZXRpb25UYXNrRGVsaXZlcnlTdGF0ZS5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyRGVsZWdhdGVkQ29tcGxldGlvblRhc2tEZWxpdmVyeSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBzdGF0ZTogT3JjaGVzdHJhdGlvblYyRGVsZWdhdGVkQ29tcGxldGlvblRhc2tEZWxpdmVyeVN0YXRlLFxuICBvYnNlcnZlZEJ5UnVuSWQ6IFNjaGVtYS5OdWxsT3IoUnVuSWQpLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJEZWxlZ2F0ZWRDb21wbGV0aW9uVGFza0RlbGl2ZXJ5ID1cbiAgdHlwZW9mIE9yY2hlc3RyYXRpb25WMkRlbGVnYXRlZENvbXBsZXRpb25UYXNrRGVsaXZlcnkuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkRlbGVnYXRlZENvbXBsZXRpb25EZWxpdmVyeSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBnZW5lcmF0aW9uOiBQb3NpdGl2ZUludCxcbiAgbWVzc2FnZUlkOiBNZXNzYWdlSWQsXG4gIHRhc2tJZHM6IFNjaGVtYS5BcnJheShOb2RlSWQpLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJEZWxlZ2F0ZWRDb21wbGV0aW9uRGVsaXZlcnkgPVxuICB0eXBlb2YgT3JjaGVzdHJhdGlvblYyRGVsZWdhdGVkQ29tcGxldGlvbkRlbGl2ZXJ5LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJEZWxlZ2F0ZWRDb21wbGV0aW9uQ29ob3J0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGRpc3Bvc2l0aW9uOiBTY2hlbWEuTGl0ZXJhbHMoW1wib3BlblwiLCBcInN0b3BwZWRcIiwgXCJkaXNwb3NlZFwiXSksXG4gIG5leHRHZW5lcmF0aW9uOiBQb3NpdGl2ZUludCxcbiAgZGVsaXZlcnk6IFNjaGVtYS5OdWxsT3IoT3JjaGVzdHJhdGlvblYyRGVsZWdhdGVkQ29tcGxldGlvbkRlbGl2ZXJ5KSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyRGVsZWdhdGVkQ29tcGxldGlvbkNvaG9ydCA9XG4gIHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJEZWxlZ2F0ZWRDb21wbGV0aW9uQ29ob3J0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJSZXN0YXJ0Q2FuY2VsbGVkQmFja2dyb3VuZFdvcmsgPSBTY2hlbWEuU3RydWN0KHtcbiAga2luZDogU2NoZW1hLkxpdGVyYWxzKFtcInN1YmFnZW50XCIsIFwic2hlbGxcIiwgXCJtb25pdG9yXCIsIFwidGFza1wiXSksXG4gIGxhYmVsOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIGlkOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgLyoqIFRoZSBhZ2VudCB3YXMgd2FpdGluZyBvbiB0aGlzIHdvcmssIHNvIGl0cyByZXN0YXJ0IG5vdGUgd2FrZXMgdGhlIGFnZW50IGV2ZW4gZm9yIGEgc2hlbGwuICovXG4gIGF3YWl0ZWQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTGl0ZXJhbCh0cnVlKSksXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlJlc3RhcnRDYW5jZWxsZWRCYWNrZ3JvdW5kV29yayA9XG4gIHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJSZXN0YXJ0Q2FuY2VsbGVkQmFja2dyb3VuZFdvcmsuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlJ1bkJhY2tncm91bmRXb3JrQ2FuY2VsbGVkID0gU2NoZW1hLlN0cnVjdCh7XG4gIHJ1bklkOiBSdW5JZCxcbiAgcmVzdGFydENhbmNlbGxlZEJhY2tncm91bmRXb3JrOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyUmVzdGFydENhbmNlbGxlZEJhY2tncm91bmRXb3JrKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUnVuQmFja2dyb3VuZFdvcmtDYW5jZWxsZWQgPVxuICB0eXBlb2YgT3JjaGVzdHJhdGlvblYyUnVuQmFja2dyb3VuZFdvcmtDYW5jZWxsZWQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlRocmVhZExhdW5jaFdvcmtzcGFjZVN0cmF0ZWd5ID0gU2NoZW1hLlVuaW9uKFtcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJyb290XCIpLFxuICAgIGJyYW5jaDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcImV4aXN0aW5nX3dvcmt0cmVlXCIpLFxuICAgIHdvcmt0cmVlUGF0aDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICAgIGJyYW5jaDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcIndvcmt0cmVlXCIpLFxuICAgIGJhc2VSZWY6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgICBicmFuY2g6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICAgIHN0YXJ0RnJvbU9yaWdpbjogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgfSksXG5dKTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlRocmVhZExhdW5jaFdvcmtzcGFjZVN0cmF0ZWd5ID1cbiAgdHlwZW9mIE9yY2hlc3RyYXRpb25WMlRocmVhZExhdW5jaFdvcmtzcGFjZVN0cmF0ZWd5LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPUkNIRVNUUkFUSU9OX1YyX1dPUktTUEFDRV9QUkVQQVJBVElPTl9GQUlMVVJFX0NPREUgPSBcIndvcmtzcGFjZV9wcmVwYXJhdGlvbl9mYWlsZWRcIjtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlJ1biA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBpZDogUnVuSWQsXG4gIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgb3JkaW5hbDogUG9zaXRpdmVJbnQsXG4gIHByb3ZpZGVySW5zdGFuY2VJZDogUHJvdmlkZXJJbnN0YW5jZUlkLFxuICBtb2RlbFNlbGVjdGlvbjogTW9kZWxTZWxlY3Rpb24sXG4gIHByb3ZpZGVyVGhyZWFkSWQ6IFNjaGVtYS5OdWxsT3IoUHJvdmlkZXJUaHJlYWRJZCksXG4gIHVzZXJNZXNzYWdlSWQ6IE1lc3NhZ2VJZCxcbiAgcm9vdE5vZGVJZDogU2NoZW1hLk51bGxPcihOb2RlSWQpLFxuICBhY3RpdmVBdHRlbXB0SWQ6IFNjaGVtYS5OdWxsT3IoUnVuQXR0ZW1wdElkKSxcbiAgc3RhdHVzOiBPcmNoZXN0cmF0aW9uVjJSdW5TdGF0dXMsXG4gIHF1ZXVlUG9zaXRpb246IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFBvc2l0aXZlSW50KSksXG4gIHF1ZXVlSGVsZDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgcmVxdWVzdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0YyxcbiAgc3RhcnRlZEF0OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0YyksXG4gIGNvbXBsZXRlZEF0OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0YyksXG4gIGNoZWNrcG9pbnRJZDogU2NoZW1hLk51bGxPcihDaGVja3BvaW50SWQpLFxuICBjb250ZXh0SGFuZG9mZklkOiBTY2hlbWEuTnVsbE9yKENvbnRleHRIYW5kb2ZmSWQpLFxuICByZXN0YXJ0Q29udGludWF0aW9uT2ZSdW5JZDogU2NoZW1hLm9wdGlvbmFsKFJ1bklkKSxcbiAgZGVsZWdhdGVkVGFza0lkOiBTY2hlbWEub3B0aW9uYWwoTm9kZUlkKSxcbiAgd29ya1N0YXJ0ZWRBdDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5EYXRlVGltZVV0YyksXG4gIHJlc3RhcnRDYW5jZWxsZWRCYWNrZ3JvdW5kV29yazogU2NoZW1hLm9wdGlvbmFsKFxuICAgIFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJSZXN0YXJ0Q2FuY2VsbGVkQmFja2dyb3VuZFdvcmspLFxuICApLFxuICBzb3VyY2VQbGFuUmVmOiBTY2hlbWEub3B0aW9uYWwoXG4gICAgU2NoZW1hLlN0cnVjdCh7XG4gICAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgICBwbGFuSWQ6IFBsYW5JZCxcbiAgICB9KSxcbiAgKSxcbiAgZGVsZWdhdGVkQ29tcGxldGlvbjogU2NoZW1hLm9wdGlvbmFsKE9yY2hlc3RyYXRpb25WMkRlbGVnYXRlZENvbXBsZXRpb25Db2hvcnQpLFxuICB3b3Jrc3BhY2VQcmVwYXJhdGlvbjogU2NoZW1hLm9wdGlvbmFsKE9yY2hlc3RyYXRpb25WMlRocmVhZExhdW5jaFdvcmtzcGFjZVN0cmF0ZWd5KSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUnVuID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlJ1bi5UeXBlO1xuXG5leHBvcnQgZnVuY3Rpb24gb3JjaGVzdHJhdGlvblYyUnVuV29ya1N0YXJ0ZWRBdChcbiAgcnVuOiBQaWNrPE9yY2hlc3RyYXRpb25WMlJ1biwgXCJ3b3JrU3RhcnRlZEF0XCIgfCBcInN0YXJ0ZWRBdFwiIHwgXCJyZXF1ZXN0ZWRBdFwiPixcbik6IE9yY2hlc3RyYXRpb25WMlJ1bltcInJlcXVlc3RlZEF0XCJdIHtcbiAgcmV0dXJuIHJ1bi53b3JrU3RhcnRlZEF0ID8/IHJ1bi5zdGFydGVkQXQgPz8gcnVuLnJlcXVlc3RlZEF0O1xufVxuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyUnVuQXR0ZW1wdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBpZDogUnVuQXR0ZW1wdElkLFxuICAvLyBQcm92aWRlci10aHJlYWQgcm93cyBjYW4gYmUgcmV1c2VkIGFmdGVyIHJlY292ZXJ5OyByZXRhaW4gdGhlIG5hdGl2ZSBpbnB1dCBkZXN0aW5hdGlvbi5cbiAgbmF0aXZlVGhyZWFkSWQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgcnVuSWQ6IFJ1bklkLFxuICBhdHRlbXB0T3JkaW5hbDogUG9zaXRpdmVJbnQsXG4gIHJvb3ROb2RlSWQ6IE5vZGVJZCxcbiAgcHJvdmlkZXJJbnN0YW5jZUlkOiBQcm92aWRlckluc3RhbmNlSWQsXG4gIHByb3ZpZGVyVGhyZWFkSWQ6IFByb3ZpZGVyVGhyZWFkSWQsXG4gIHByb3ZpZGVyVHVybklkOiBTY2hlbWEuTnVsbE9yKFByb3ZpZGVyVHVybklkKSxcbiAgcmVhc29uOiBTY2hlbWEuTGl0ZXJhbHMoW1wiaW5pdGlhbFwiLCBcInN0ZWVyaW5nX3Jlc3RhcnRcIiwgXCJyZXRyeVwiLCBcInByb3ZpZGVyX3JlY292ZXJ5XCJdKSxcbiAgc3RhdHVzOiBTY2hlbWEuTGl0ZXJhbHMoW1xuICAgIFwicGVuZGluZ1wiLFxuICAgIFwicnVubmluZ1wiLFxuICAgIFwiY29tcGxldGVkXCIsXG4gICAgXCJpbnRlcnJ1cHRlZFwiLFxuICAgIFwiZmFpbGVkXCIsXG4gICAgXCJjYW5jZWxsZWRcIixcbiAgICBcInN1cGVyc2VkZWRcIixcbiAgXSksXG4gIHN0YXJ0ZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGMpLFxuICBjb21wbGV0ZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGMpLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJSdW5BdHRlbXB0ID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlJ1bkF0dGVtcHQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkV4ZWN1dGlvbk5vZGUgPSBTY2hlbWEuU3RydWN0KHtcbiAgaWQ6IE5vZGVJZCxcbiAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICBydW5JZDogU2NoZW1hLk51bGxPcihSdW5JZCksXG4gIHBhcmVudE5vZGVJZDogU2NoZW1hLk51bGxPcihOb2RlSWQpLFxuICByb290Tm9kZUlkOiBOb2RlSWQsXG4gIGtpbmQ6IFNjaGVtYS5MaXRlcmFscyhbXG4gICAgXCJyb290X3R1cm5cIixcbiAgICBcImFzc2lzdGFudF9tZXNzYWdlXCIsXG4gICAgXCJyZWFzb25pbmdcIixcbiAgICBcInBsYW5cIixcbiAgICBcInRvZG9fbGlzdFwiLFxuICAgIFwidG9vbF9jYWxsXCIsXG4gICAgXCJhcHByb3ZhbF9yZXF1ZXN0XCIsXG4gICAgXCJ1c2VyX2lucHV0X3JlcXVlc3RcIixcbiAgICBcInN1YmFnZW50XCIsXG4gICAgXCJob29rXCIsXG4gICAgXCJzeXN0ZW1cIixcbiAgXSksXG4gIHN0YXR1czogU2NoZW1hLkxpdGVyYWxzKFtcbiAgICBcImlkbGVcIixcbiAgICBcInBlbmRpbmdcIixcbiAgICBcInJ1bm5pbmdcIixcbiAgICBcIndhaXRpbmdcIixcbiAgICBcImNvbXBsZXRlZFwiLFxuICAgIFwiaW50ZXJydXB0ZWRcIixcbiAgICBcImZhaWxlZFwiLFxuICAgIFwiY2FuY2VsbGVkXCIsXG4gICAgXCJyb2xsZWRfYmFja1wiLFxuICBdKSxcbiAgY291bnRzRm9yUnVuOiBTY2hlbWEuQm9vbGVhbixcbiAgcHJvdmlkZXJUaHJlYWRJZDogU2NoZW1hLk51bGxPcihQcm92aWRlclRocmVhZElkKSxcbiAgcHJvdmlkZXJUdXJuSWQ6IFNjaGVtYS5OdWxsT3IoUHJvdmlkZXJUdXJuSWQpLFxuICBuYXRpdmVJdGVtUmVmOiBTY2hlbWEuTnVsbE9yKE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyUmVmKSxcbiAgcnVudGltZVJlcXVlc3RJZDogU2NoZW1hLk51bGxPcihSdW50aW1lUmVxdWVzdElkKSxcbiAgY2hlY2twb2ludFNjb3BlSWQ6IFNjaGVtYS5OdWxsT3IoQ2hlY2twb2ludFNjb3BlSWQpLFxuICBzdGFydGVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjKSxcbiAgY29tcGxldGVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyRXhlY3V0aW9uTm9kZSA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJFeGVjdXRpb25Ob2RlLlR5cGU7XG5cbi8qKiBBcHBlbmQtb25seTogcGhhc2VzIGRpc2NvdmVyZWQgYXQgcnVudGltZSBqb2luIHdoZW4gdGhleSBzdGFydC4gKi9cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJXb3JrZmxvd1BoYXNlID0gU2NoZW1hLlN0cnVjdCh7XG4gIGluZGV4OiBOb25OZWdhdGl2ZUludCxcbiAgdGl0bGU6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyV29ya2Zsb3dQaGFzZSA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJXb3JrZmxvd1BoYXNlLlR5cGU7XG5cbi8qKiBOZXN0ZWQgdGltZXN0YW1wcyB1c2UgZXBvY2ggbWlsbGlzZWNvbmRzOyBvbmx5IHRvcC1sZXZlbCBEYXRlVGltZVV0YyBmaWVsZHMgYXJlIHJlbWFwcGVkIGZvciBKU09OLiAqL1xuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMldvcmtmbG93QWdlbnQgPSBTY2hlbWEuU3RydWN0KHtcbiAgaW5kZXg6IE5vbk5lZ2F0aXZlSW50LFxuICBsYWJlbDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICBhZ2VudElkOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgY2hpbGRUaHJlYWRJZDogU2NoZW1hLm9wdGlvbmFsKFRocmVhZElkKSxcbiAgc3RhdGU6IFNjaGVtYS5MaXRlcmFscyhbXCJxdWV1ZWRcIiwgXCJydW5uaW5nXCIsIFwiY29tcGxldGVkXCIsIFwiZmFpbGVkXCJdKSxcbiAgcGhhc2VJbmRleDogU2NoZW1hLm9wdGlvbmFsKE5vbk5lZ2F0aXZlSW50KSxcbiAgcGhhc2VUaXRsZTogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gIG1vZGVsOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgYXR0ZW1wdDogU2NoZW1hLm9wdGlvbmFsKE5vbk5lZ2F0aXZlSW50KSxcbiAgdG90YWxUb2tlbnM6IFNjaGVtYS5vcHRpb25hbChOb25OZWdhdGl2ZUludCksXG4gIHRvb2xDYWxsczogU2NoZW1hLm9wdGlvbmFsKE5vbk5lZ2F0aXZlSW50KSxcbiAgZHVyYXRpb25NczogU2NoZW1hLm9wdGlvbmFsKE5vbk5lZ2F0aXZlSW50KSxcbiAgcXVldWVkQXQ6IFNjaGVtYS5vcHRpb25hbChOb25OZWdhdGl2ZUludCksXG4gIHN0YXJ0ZWRBdDogU2NoZW1hLm9wdGlvbmFsKE5vbk5lZ2F0aXZlSW50KSxcbiAgY29tcGxldGVkQXQ6IFNjaGVtYS5vcHRpb25hbChOb25OZWdhdGl2ZUludCksXG4gIHByb21wdDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Ob25FbXB0eVN0cmluZyksXG4gIHJlc3VsdDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Ob25FbXB0eVN0cmluZyksXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMldvcmtmbG93QWdlbnQgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyV29ya2Zsb3dBZ2VudC5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyV29ya2Zsb3dSdW5IYW5kbGVzID0gU2NoZW1hLlN0cnVjdCh7XG4gIHJ1bklkOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgdHJhbnNjcmlwdERpcjogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gIHNjcmlwdFBhdGg6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJXb3JrZmxvd1J1bkhhbmRsZXMgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyV29ya2Zsb3dSdW5IYW5kbGVzLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJTdWJhZ2VudFdvcmtmbG93ID0gU2NoZW1hLlN0cnVjdCh7XG4gIG5hbWU6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICBydW5IYW5kbGVzOiBTY2hlbWEub3B0aW9uYWwoT3JjaGVzdHJhdGlvblYyV29ya2Zsb3dSdW5IYW5kbGVzKSxcbiAgcGhhc2VzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyV29ya2Zsb3dQaGFzZSksXG4gIGFnZW50czogU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMldvcmtmbG93QWdlbnQpLFxuICB0b3RhbFRva2VuczogU2NoZW1hLm9wdGlvbmFsKE5vbk5lZ2F0aXZlSW50KSxcbiAgdG9vbENhbGxzOiBTY2hlbWEub3B0aW9uYWwoTm9uTmVnYXRpdmVJbnQpLFxuICBkdXJhdGlvbk1zOiBTY2hlbWEub3B0aW9uYWwoTm9uTmVnYXRpdmVJbnQpLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJTdWJhZ2VudFdvcmtmbG93ID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlN1YmFnZW50V29ya2Zsb3cuVHlwZTtcblxuLyoqXG4gKiBXaXJlLW9ubHkuIFNldCBmb3IgY2xpZW50cyB0aGF0IG9wdGVkIGluIHdpdGggYGFjY2VwdERlZHVwZWRCb2RpZXNgIG9yIGBkZWR1cGVCb2RpZXM9MWAgd2hlbiB0aGVcbiAqIG1hcmtlZCBmaWVsZCB3YXMgYmxhbmtlZCBiZWNhdXNlIHRoZSBjbGllbnQgYWxyZWFkeSBob2xkcyB0aGUgc2FtZSB2YWx1ZTogaW4gdGhlIHJlY29yZCBpdFxuICogcmVjZWl2ZWQgZWFybGllciBvbiB0aGUgc2FtZSByZXNwb25zZSBvciBzdHJlYW0uIFJlc3RvcmUgd2l0aFxuICogYEB0M3Rvb2xzL3NoYXJlZC9vcmNoZXN0cmF0aW9uVjJEZWR1cGVkQm9kaWVzYCBiZWZvcmUgdXNlOyBuZXZlciBzdG9yZSBvciBmb3J3YXJkIGEgbWFya2VkXG4gKiB2YWx1ZS4gQ2xpZW50cyB0aGF0IG9wdGVkIGluIHJlc3RvcmUgb25seSB0aGVzZSBmaWVsZHMsIHNvIGJsYW5raW5nIGFub3RoZXIgZmllbGQgbmVlZHMgYSBuZXdcbiAqIG9wdC1pbi5cbiAqL1xuY29uc3QgRGVkdXBlZEJvZHlNYXJrZXIgPSBTY2hlbWEub3B0aW9uYWxLZXkoU2NoZW1hLkxpdGVyYWwodHJ1ZSkpO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyU3ViYWdlbnQgPSBTY2hlbWEuU3RydWN0KHtcbiAgaWQ6IE5vZGVJZCxcbiAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICBydW5JZDogU2NoZW1hLk51bGxPcihSdW5JZCksXG4gIHBhcmVudE5vZGVJZDogTm9kZUlkLFxuICBvcmlnaW46IFNjaGVtYS5MaXRlcmFscyhbXCJwcm92aWRlcl9uYXRpdmVcIiwgXCJhcHBfb3duZWRcIl0pLFxuICBjcmVhdGVkQnk6IE9yY2hlc3RyYXRpb25WMkFjdG9yLFxuICBkcml2ZXI6IFByb3ZpZGVyRHJpdmVyS2luZCxcbiAgcHJvdmlkZXJJbnN0YW5jZUlkOiBQcm92aWRlckluc3RhbmNlSWQsXG4gIHByb3ZpZGVyVGhyZWFkSWQ6IFNjaGVtYS5OdWxsT3IoUHJvdmlkZXJUaHJlYWRJZCksXG4gIGNoaWxkVGhyZWFkSWQ6IFNjaGVtYS5OdWxsT3IoVGhyZWFkSWQpLFxuICBuYXRpdmVUYXNrUmVmOiBTY2hlbWEuTnVsbE9yKE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyUmVmKSxcbiAgcHJvbXB0OiBTY2hlbWEuU3RyaW5nLFxuICB0aXRsZTogU2NoZW1hLk51bGxPcihTY2hlbWEuU3RyaW5nKSxcbiAgbW9kZWw6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZyksXG4gIG1vZGVsU2VsZWN0aW9uOiBTY2hlbWEub3B0aW9uYWwoTW9kZWxTZWxlY3Rpb24pLFxuICBjb21wbGV0aW9uV2FrZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5MaXRlcmFscyhbXCJhbHdheXNcIiwgXCJzZXR0bGVkX29ubHlcIl0pKSxcbiAgY29tcGxldGlvbkRlbGl2ZXJ5OiBTY2hlbWEub3B0aW9uYWwoT3JjaGVzdHJhdGlvblYyRGVsZWdhdGVkQ29tcGxldGlvblRhc2tEZWxpdmVyeSksXG4gIHN0YXR1czogU2NoZW1hLkxpdGVyYWxzKFtcbiAgICBcImlkbGVcIixcbiAgICBcInBlbmRpbmdcIixcbiAgICBcInJ1bm5pbmdcIixcbiAgICBcIndhaXRpbmdcIixcbiAgICBcImNvbXBsZXRlZFwiLFxuICAgIFwiZmFpbGVkXCIsXG4gICAgXCJjYW5jZWxsZWRcIixcbiAgICBcImludGVycnVwdGVkXCIsXG4gIF0pLFxuICBwcm9ncmVzczogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxuICB3b3JrZmxvdzogU2NoZW1hLm9wdGlvbmFsKE9yY2hlc3RyYXRpb25WMlN1YmFnZW50V29ya2Zsb3cpLFxuICByZXN1bHQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZyksXG4gIHN0YXJ0ZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGMpLFxuICBjb21wbGV0ZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGMpLFxuICB1cGRhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0YyxcbiAgLyoqIFNhbWUgYXMgdGhpcyBzdWJhZ2VudCdzIHByZXZpb3VzIHJlY29yZCBvbiB0aGlzIHN0cmVhbTogaXRzIHNuYXBzaG90IG9yIGBzdWJhZ2VudC51cGRhdGVkYC4gKi9cbiAgcHJvbXB0T21pdHRlZDogRGVkdXBlZEJvZHlNYXJrZXIsXG4gIHJlc3VsdE9taXR0ZWQ6IERlZHVwZWRCb2R5TWFya2VyLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJTdWJhZ2VudCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJTdWJhZ2VudC5UeXBlO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNPcmNoZXN0cmF0aW9uVjJXb3JrQWN0aXZlKFxuICBzdGF0dXM6IE9yY2hlc3RyYXRpb25WMkV4ZWN1dGlvbk5vZGVbXCJzdGF0dXNcIl0sXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0YXR1cyA9PT0gXCJwZW5kaW5nXCIgfHwgc3RhdHVzID09PSBcInJ1bm5pbmdcIiB8fCBzdGF0dXMgPT09IFwid2FpdGluZ1wiO1xufVxuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludFNjb3BlID0gU2NoZW1hLlN0cnVjdCh7XG4gIGlkOiBDaGVja3BvaW50U2NvcGVJZCxcbiAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICBydW5JZDogU2NoZW1hLk51bGxPcihSdW5JZCksXG4gIG5vZGVJZDogTm9kZUlkLFxuICBwYXJlbnRTY29wZUlkOiBTY2hlbWEuTnVsbE9yKENoZWNrcG9pbnRTY29wZUlkKSxcbiAgcHJvdmlkZXJUaHJlYWRJZDogU2NoZW1hLk51bGxPcihQcm92aWRlclRocmVhZElkKSxcbiAga2luZDogU2NoZW1hLkxpdGVyYWxzKFtcInJvb3RfcnVuXCIsIFwic3ViYWdlbnRcIiwgXCJ0b29sXCIsIFwicHJvdmlkZXJfdGhyZWFkXCIsIFwibWFudWFsXCJdKSxcbiAgb3JkaW5hbFdpdGhpblBhcmVudDogTm9uTmVnYXRpdmVJbnQsXG4gIGFkdmFuY2VzQXBwUnVuQ291bnQ6IFNjaGVtYS5Cb29sZWFuLFxuICBjd2Q6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgY3JlYXRlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGMsXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMkNoZWNrcG9pbnRTY29wZSA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJDaGVja3BvaW50U2NvcGUuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyU2Vzc2lvbiA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBpZDogUHJvdmlkZXJTZXNzaW9uSWQsXG4gIGRyaXZlcjogUHJvdmlkZXJEcml2ZXJLaW5kLFxuICBwcm92aWRlckluc3RhbmNlSWQ6IFByb3ZpZGVySW5zdGFuY2VJZCxcbiAgc3RhdHVzOiBTY2hlbWEuTGl0ZXJhbHMoW1wic3RhcnRpbmdcIiwgXCJyZWFkeVwiLCBcInJ1bm5pbmdcIiwgXCJ3YWl0aW5nXCIsIFwic3RvcHBlZFwiLCBcImVycm9yXCJdKSxcbiAgY3dkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIG1vZGVsOiBTY2hlbWEuTnVsbE9yKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gIGNhcGFiaWxpdGllczogT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJDYXBhYmlsaXRpZXMsXG4gIGNyZWF0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjLFxuICB1cGRhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0YyxcbiAgbGFzdEVycm9yOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclNlc3Npb24gPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJTZXNzaW9uLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclNlc3Npb25EZXRhY2hlZCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBwcm92aWRlclNlc3Npb25JZDogUHJvdmlkZXJTZXNzaW9uSWQsXG4gIGRldGFjaGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0YyxcbiAgcmVhc29uOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyU2Vzc2lvbkRldGFjaGVkID1cbiAgdHlwZW9mIE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyU2Vzc2lvbkRldGFjaGVkLlR5cGU7XG5cbmZ1bmN0aW9uIGVuY29kZWRLaW5kKG1lbWJlcjogU2NoZW1hLlRvcCk6IHN0cmluZyB7XG4gIGNvbnN0IGVuY29kZWQgPSBTY2hlbWFBU1QudG9FbmNvZGVkKG1lbWJlci5hc3QpO1xuICBjb25zdCBraW5kID0gU2NoZW1hQVNULmlzT2JqZWN0cyhlbmNvZGVkKVxuICAgID8gZW5jb2RlZC5wcm9wZXJ0eVNpZ25hdHVyZXMuZmluZCgocHJvcGVydHkpID0+IHByb3BlcnR5Lm5hbWUgPT09IFwia2luZFwiKT8udHlwZVxuICAgIDogdW5kZWZpbmVkO1xuICBpZiAoa2luZCAhPT0gdW5kZWZpbmVkICYmIFNjaGVtYUFTVC5pc0xpdGVyYWwoa2luZCkgJiYgdHlwZW9mIGtpbmQubGl0ZXJhbCA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBraW5kLmxpdGVyYWw7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKFwiRWFjaCBtZW1iZXIgb2YgYSBraW5kIHVuaW9uIG5lZWRzIGEgbGl0ZXJhbCBzdHJpbmcgYGtpbmRgLlwiKTtcbn1cblxuZnVuY3Rpb24ga2luZFVuaW9uV2l0aEZhbGxiYWNrPFxuICBjb25zdCBNZW1iZXJzIGV4dGVuZHMgUmVhZG9ubHlBcnJheTxTY2hlbWEuVG9wICYgeyByZWFkb25seSBFbmNvZGVkOiB7IHJlYWRvbmx5IGtpbmQ6IHN0cmluZyB9IH0+LFxuICBVbmtub3duIGV4dGVuZHMgU2NoZW1hLlRvcCxcbj4oXG4gIG1lbWJlcnM6IE1lbWJlcnMsXG4gIHVua25vd246IChraW5kOiBTY2hlbWEub3B0aW9uYWw8U2NoZW1hLlN0cmluZz4pID0+IFVua25vd24sXG4gIGZhbGxiYWNrOiAodmFsdWU6IFVua25vd25bXCJUeXBlXCJdKSA9PiBTY2hlbWEuVW5pb248TWVtYmVycz5bXCJFbmNvZGVkXCJdLFxuKSB7XG4gIGNvbnN0IGtub3duS2luZHM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPSBuZXcgU2V0KG1lbWJlcnMubWFwKGVuY29kZWRLaW5kKSk7XG4gIGNvbnN0IHVua25vd25LaW5kID0gdW5rbm93bihcbiAgICBTY2hlbWEub3B0aW9uYWwoXG4gICAgICBTY2hlbWEuU3RyaW5nLmNoZWNrKFxuICAgICAgICBTY2hlbWEubWFrZUZpbHRlcihcbiAgICAgICAgICAoa2luZDogc3RyaW5nKSA9PiAha25vd25LaW5kcy5oYXMoa2luZCkgfHwgXCJBIGtub3duIGtpbmQgbXVzdCBkZWNvZGUgaW4gZnVsbC5cIixcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKSxcbiAgKS5waXBlKFxuICAgIFNjaGVtYS5kZWNvZGVUbyhTY2hlbWEuVW5pb24obWVtYmVycyksIHtcbiAgICAgIGRlY29kZTogU2NoZW1hR2V0dGVyLnRyYW5zZm9ybShmYWxsYmFjayksXG4gICAgICBlbmNvZGU6IFNjaGVtYUdldHRlci5mb3JiaWRkZW4oKCkgPT4gXCJVbmtub3duIGtpbmRzIGFyZSBkZWNvZGUtb25seS5cIiksXG4gICAgfSksXG4gICk7XG4gIHJldHVybiBTY2hlbWEuVW5pb24oWy4uLm1lbWJlcnMsIHVua25vd25LaW5kXSk7XG59XG5cbmNvbnN0IFBlbmRpbmdCYWNrZ3JvdW5kVGFza0ZpZWxkcyA9IHtcbiAgdGFza0lkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIGRlc2NyaXB0aW9uOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgLyoqIFRoZSBzdWJhZ2VudCB0YXNrIHRoYXQgc3RhcnRlZCB0aGlzIHdvcmsgYW5kIHdhaXRzIG9uIGl0LiAqL1xuICBwYXJlbnRUYXNrSWQ6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICAvKipcbiAgICogVGhlIGFnZW50IGRlY2xhcmVkIGl0IHJlc3VtZXMgd2hlbiB0aGlzIHdvcmsgZW5kcywgc28gdGhlIHRocmVhZCBob2xkcyBsaWtlIGl0IGRvZXMgZm9yIGFcbiAgICogc3ViYWdlbnQuIE9ubHkgdGhlIGFnZW50IGtub3dzIHdoZXRoZXIgYSBjb21tYW5kIGlzIGEgd2FpdCBvciBhIGRldiBzZXJ2ZXIgaXQgbGVmdCBydW5uaW5nLlxuICAgKi9cbiAgYXdhaXRlZDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5MaXRlcmFsKHRydWUpKSxcbn07XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJQZW5kaW5nQmFja2dyb3VuZFRhc2sgPSBraW5kVW5pb25XaXRoRmFsbGJhY2soXG4gIFtcbiAgICBTY2hlbWEuU3RydWN0KHtcbiAgICAgIC4uLlBlbmRpbmdCYWNrZ3JvdW5kVGFza0ZpZWxkcyxcbiAgICAgIGtpbmQ6IFNjaGVtYS5MaXRlcmFsKFwic3ViYWdlbnRcIiksXG4gICAgICAvKiogVGhlIG93bmluZyBwcm92aWRlciB0aHJlYWQncyBpbnN0YW5jZSwgcG9wdWxhdGVkIGluIGRlcml2ZWQgcGVuZGluZyB3b3JrLiAqL1xuICAgICAgcHJvdmlkZXJJbnN0YW5jZUlkOiBTY2hlbWEub3B0aW9uYWwoUHJvdmlkZXJJbnN0YW5jZUlkKSxcbiAgICAgIGNoaWxkVGhyZWFkSWQ6IFNjaGVtYS5vcHRpb25hbChUaHJlYWRJZCksXG4gICAgfSksXG4gICAgU2NoZW1hLlN0cnVjdCh7IC4uLlBlbmRpbmdCYWNrZ3JvdW5kVGFza0ZpZWxkcywga2luZDogU2NoZW1hLkxpdGVyYWwoXCJjb21tYW5kXCIpIH0pLFxuICAgIFNjaGVtYS5TdHJ1Y3QoeyAuLi5QZW5kaW5nQmFja2dyb3VuZFRhc2tGaWVsZHMsIGtpbmQ6IFNjaGVtYS5MaXRlcmFsKFwibW9uaXRvclwiKSB9KSxcbiAgICBTY2hlbWEuU3RydWN0KHsgLi4uUGVuZGluZ0JhY2tncm91bmRUYXNrRmllbGRzLCBraW5kOiBTY2hlbWEuTGl0ZXJhbChcImJhY2tncm91bmRfdGFza1wiKSB9KSxcbiAgXSxcbiAgKGtpbmQpID0+IFNjaGVtYS5TdHJ1Y3QoeyAuLi5QZW5kaW5nQmFja2dyb3VuZFRhc2tGaWVsZHMsIGtpbmQgfSksXG4gICh7IHRhc2tJZCwgZGVzY3JpcHRpb24sIHBhcmVudFRhc2tJZCB9KSA9PiAoe1xuICAgIHRhc2tJZCxcbiAgICAuLi4oZGVzY3JpcHRpb24gPT09IHVuZGVmaW5lZCA/IHt9IDogeyBkZXNjcmlwdGlvbiB9KSxcbiAgICAuLi4ocGFyZW50VGFza0lkID09PSB1bmRlZmluZWQgPyB7fSA6IHsgcGFyZW50VGFza0lkIH0pLFxuICAgIGtpbmQ6IFwiYmFja2dyb3VuZF90YXNrXCIsXG4gIH0pLFxuKTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlBlbmRpbmdCYWNrZ3JvdW5kVGFzayA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJQZW5kaW5nQmFja2dyb3VuZFRhc2suVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyVGhyZWFkTmF0aXZlTWV0YWRhdGEgPSBTY2hlbWEuU3RydWN0KHtcbiAgbW9kZWxTZWxlY3Rpb246IFNjaGVtYS5vcHRpb25hbChNb2RlbFNlbGVjdGlvbiksXG4gIHRpdGxlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmcpKSxcbiAgdXBkYXRlZEF0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmcpKSxcbiAgaXRlbUlkZW50aXR5VmVyc2lvbjogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5MaXRlcmFsKDIpKSxcbiAgZm9ya0hlYWRNZXNzYWdlSWQ6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclRocmVhZE5hdGl2ZU1ldGFkYXRhID1cbiAgdHlwZW9mIE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyVGhyZWFkTmF0aXZlTWV0YWRhdGEuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyR29hbFN0YXR1cyA9IFNjaGVtYS5MaXRlcmFscyhbXG4gIFwiYWN0aXZlXCIsXG4gIFwicGF1c2VkXCIsXG4gIFwiYmxvY2tlZFwiLFxuICBcInVzYWdlX2xpbWl0ZWRcIixcbiAgXCJidWRnZXRfbGltaXRlZFwiLFxuICBcImNvbXBsZXRlXCIsXG5dKTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyR29hbFN0YXR1cyA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlckdvYWxTdGF0dXMuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyR29hbCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBvYmplY3RpdmU6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgc3RhdHVzOiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlckdvYWxTdGF0dXMsXG4gIHRva2Vuc1VzZWQ6IFNjaGVtYS5vcHRpb25hbChOb25OZWdhdGl2ZUludCksXG4gIHRva2VuQnVkZ2V0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihOb25OZWdhdGl2ZUludCkpLFxuICB0aW1lVXNlZFNlY29uZHM6IFNjaGVtYS5vcHRpb25hbChOb25OZWdhdGl2ZUludCksXG4gIGNoZWNrczogU2NoZW1hLm9wdGlvbmFsKE5vbk5lZ2F0aXZlSW50KSxcbiAgbGFzdENoZWNrOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyR29hbCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlckdvYWwuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyVGhyZWFkID0gU2NoZW1hLlN0cnVjdCh7XG4gIGlkOiBQcm92aWRlclRocmVhZElkLFxuICBkcml2ZXI6IFByb3ZpZGVyRHJpdmVyS2luZCxcbiAgcHJvdmlkZXJJbnN0YW5jZUlkOiBQcm92aWRlckluc3RhbmNlSWQsXG4gIHByb3ZpZGVyU2Vzc2lvbklkOiBTY2hlbWEuTnVsbE9yKFByb3ZpZGVyU2Vzc2lvbklkKSxcbiAgYXBwVGhyZWFkSWQ6IFNjaGVtYS5OdWxsT3IoVGhyZWFkSWQpLFxuICBvd25lck5vZGVJZDogU2NoZW1hLk51bGxPcihOb2RlSWQpLFxuICBuYXRpdmVUaHJlYWRSZWY6IFNjaGVtYS5OdWxsT3IoT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJSZWYpLFxuICBuYXRpdmVDb252ZXJzYXRpb25IZWFkUmVmOiBTY2hlbWEuTnVsbE9yKE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyUmVmKSxcbiAgc3RhdHVzOiBTY2hlbWEuTGl0ZXJhbHMoW1wibm90X2xvYWRlZFwiLCBcImlkbGVcIiwgXCJhY3RpdmVcIiwgXCJhcmNoaXZlZFwiLCBcImNsb3NlZFwiLCBcImVycm9yXCJdKSxcbiAgZmlyc3RSdW5PcmRpbmFsOiBTY2hlbWEuTnVsbE9yKFBvc2l0aXZlSW50KSxcbiAgbGFzdFJ1bk9yZGluYWw6IFNjaGVtYS5OdWxsT3IoUG9zaXRpdmVJbnQpLFxuICBoYW5kb2ZmSWRzOiBTY2hlbWEuQXJyYXkoQ29udGV4dEhhbmRvZmZJZCksXG4gIGZvcmtlZEZyb206IFNjaGVtYS5OdWxsT3IoXG4gICAgU2NoZW1hLlN0cnVjdCh7XG4gICAgICBwcm92aWRlclRocmVhZElkOiBQcm92aWRlclRocmVhZElkLFxuICAgICAgcHJvdmlkZXJUdXJuSWQ6IFNjaGVtYS5vcHRpb25hbChQcm92aWRlclR1cm5JZCksXG4gICAgICBjaGVja3BvaW50SWQ6IFNjaGVtYS5vcHRpb25hbChDaGVja3BvaW50SWQpLFxuICAgIH0pLFxuICApLFxuICBwZW5kaW5nQmFja2dyb3VuZFRhc2tzOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMlBlbmRpbmdCYWNrZ3JvdW5kVGFzaykpLnBpcGUoXG4gICAgU2NoZW1hLndpdGhEZWNvZGluZ0RlZmF1bHQoRWZmZWN0LnN1Y2NlZWQoW10pKSxcbiAgKSxcbiAgY29udGV4dFVzYWdlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihUaHJlYWRUb2tlblVzYWdlU25hcHNob3QpKS5waXBlKFxuICAgIFNjaGVtYS53aXRoRGVjb2RpbmdEZWZhdWx0KEVmZmVjdC5zdWNjZWVkKG51bGwpKSxcbiAgKSxcbiAgbmF0aXZlTWV0YWRhdGE6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyVGhyZWFkTmF0aXZlTWV0YWRhdGEpKS5waXBlKFxuICAgIFNjaGVtYS53aXRoRGVjb2RpbmdEZWZhdWx0KEVmZmVjdC5zdWNjZWVkKG51bGwpKSxcbiAgKSxcbiAgZ29hbDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJHb2FsKSkucGlwZShcbiAgICBTY2hlbWEud2l0aERlY29kaW5nRGVmYXVsdChFZmZlY3Quc3VjY2VlZChudWxsKSksXG4gICksXG4gIGNyZWF0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjLFxuICB1cGRhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Yyxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJUaHJlYWQgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJUaHJlYWQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkhpc3RvcmljYWxNZXNzYWdlID0gU2NoZW1hLlN0cnVjdCh7XG4gIHJvbGU6IFNjaGVtYS5MaXRlcmFscyhbXCJ1c2VyXCIsIFwiYXNzaXN0YW50XCJdKSxcbiAgdGV4dDogU2NoZW1hLlN0cmluZyxcbiAgcnVuU3RhdHVzOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgcnVuSWQ6IFNjaGVtYS5OdWxsT3IoUnVuSWQpLFxuICBpdGVtSWQ6IFR1cm5JdGVtSWQsXG4gIHByb3ZpZGVyVGhyZWFkSWQ6IFNjaGVtYS5OdWxsT3IoUHJvdmlkZXJUaHJlYWRJZCksXG4gIHN0YXR1czogU2NoZW1hLlN0cmluZyxcbiAga2luZDogU2NoZW1hLlN0cmluZyxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYySGlzdG9yaWNhbE1lc3NhZ2UgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYySGlzdG9yaWNhbE1lc3NhZ2UuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkNvbnRleHRIYW5kb2ZmID0gU2NoZW1hLlN0cnVjdCh7XG4gIGlkOiBDb250ZXh0SGFuZG9mZklkLFxuICB0cmFuc2ZlcklkOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihDb250ZXh0VHJhbnNmZXJJZCkpLFxuICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gIHRhcmdldFJ1bklkOiBSdW5JZCxcbiAgZnJvbVByb3ZpZGVyVGhyZWFkSWRzOiBTY2hlbWEuQXJyYXkoUHJvdmlkZXJUaHJlYWRJZCksXG4gIHRvUHJvdmlkZXJUaHJlYWRJZDogUHJvdmlkZXJUaHJlYWRJZCxcbiAgY292ZXJlZFJ1bk9yZGluYWxzOiBTY2hlbWEuU3RydWN0KHtcbiAgICBmcm9tOiBQb3NpdGl2ZUludCxcbiAgICB0bzogUG9zaXRpdmVJbnQsXG4gIH0pLFxuICBzdHJhdGVneTogU2NoZW1hLkxpdGVyYWxzKFtcbiAgICBcImRlbHRhX3NpbmNlX3RhcmdldF9sYXN0X3NlZW5cIixcbiAgICBcImZvcmtfZGVsdGFfc3VtbWFyeVwiLFxuICAgIFwiZnVsbF90aHJlYWRfc3VtbWFyeVwiLFxuICAgIFwiY2hlY2twb2ludF9zdW1tYXJ5XCIsXG4gICAgXCJtYW51YWxfY29udGV4dFwiLFxuICBdKSxcbiAgc3RhdHVzOiBTY2hlbWEuTGl0ZXJhbHMoW1wicGVuZGluZ1wiLCBcInJlYWR5XCIsIFwiZmFpbGVkXCIsIFwic3VwZXJzZWRlZFwiXSksXG4gIHN1bW1hcnlNZXNzYWdlSWQ6IFNjaGVtYS5OdWxsT3IoTWVzc2FnZUlkKSxcbiAgc3VtbWFyeVRleHQ6IFNjaGVtYS5TdHJpbmcsXG4gIGhpc3Rvcnk6IFNjaGVtYS5vcHRpb25hbChcbiAgICBTY2hlbWEuU3RydWN0KHtcbiAgICAgIG1lc3NhZ2VzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYySGlzdG9yaWNhbE1lc3NhZ2UpLFxuICAgICAgY292ZXJhZ2U6IFNjaGVtYS5TdHJpbmcsXG4gICAgICBvbWl0dGVkSXRlbXM6IE5vbk5lZ2F0aXZlSW50LFxuICAgICAgb21pdHRlZEl0ZW1JZHM6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQXJyYXkoVHVybkl0ZW1JZCkpLFxuICAgIH0pLFxuICApLFxuICBkZWxpdmVyeTogU2NoZW1hLm9wdGlvbmFsKFxuICAgIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgICAgbmF0aXZlVGhyZWFkSWQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgICBzdGF0dXM6IFNjaGVtYS5MaXRlcmFscyhbXCJwZW5kaW5nXCIsIFwiaW5qZWN0ZWRcIiwgXCJpbmxpbmVcIl0pLFxuICAgICAgaXRlbUlkczogU2NoZW1hLkFycmF5KFR1cm5JdGVtSWQpLFxuICAgICAgb21pdHRlZEl0ZW1JZHM6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQXJyYXkoVHVybkl0ZW1JZCkpLFxuICAgIH0pLFxuICApLFxuICBkZXRhaWxJblR1cm5JdGVtOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkxpdGVyYWwodHJ1ZSkpLFxuICBjcmVhdGVkQnlQcm92aWRlckluc3RhbmNlSWQ6IFNjaGVtYS5OdWxsT3IoUHJvdmlkZXJJbnN0YW5jZUlkKSxcbiAgY3JlYXRlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGMsXG4gIHVwZGF0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJDb250ZXh0SGFuZG9mZiA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJDb250ZXh0SGFuZG9mZi5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJUdXJuID0gU2NoZW1hLlN0cnVjdCh7XG4gIGlkOiBQcm92aWRlclR1cm5JZCxcbiAgcHJvdmlkZXJUaHJlYWRJZDogUHJvdmlkZXJUaHJlYWRJZCxcbiAgbm9kZUlkOiBOb2RlSWQsXG4gIHJ1bkF0dGVtcHRJZDogU2NoZW1hLk51bGxPcihSdW5BdHRlbXB0SWQpLFxuICBuYXRpdmVUdXJuUmVmOiBTY2hlbWEuTnVsbE9yKE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyUmVmKSxcbiAgb3JkaW5hbDogUG9zaXRpdmVJbnQsXG4gIHN0YXR1czogU2NoZW1hLkxpdGVyYWxzKFtcbiAgICBcInBlbmRpbmdcIixcbiAgICBcInJ1bm5pbmdcIixcbiAgICBcImNvbXBsZXRlZFwiLFxuICAgIFwiaW50ZXJydXB0ZWRcIixcbiAgICBcImZhaWxlZFwiLFxuICAgIFwiY2FuY2VsbGVkXCIsXG4gIF0pLFxuICBzdGFydGVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjKSxcbiAgY29tcGxldGVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjKSxcbiAgdG9rZW5Vc2FnZTogU2NoZW1hLm9wdGlvbmFsKE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyVHVyblRva2VuVXNhZ2UpLFxuICB0dXJuVG9rZW5Vc2FnZTogU2NoZW1hLm9wdGlvbmFsKFR1cm5Ub2tlblVzYWdlKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJUdXJuID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyVHVybi5UeXBlO1xuXG4vKiogQ29kZXggZ29hbHMgY2FuIHNwYW4gbXVsdGlwbGUgbmF0aXZlIHR1cm5zIHdpdGhpbiBvbmUgYXR0ZW1wdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXRlc3RQcm92aWRlclR1cm5Gb3JBdHRlbXB0PFxuICBUdXJuIGV4dGVuZHMgUGljazxPcmNoZXN0cmF0aW9uVjJQcm92aWRlclR1cm4sIFwicnVuQXR0ZW1wdElkXCIgfCBcIm9yZGluYWxcIj4sXG4+KFxuICBwcm92aWRlclR1cm5zOiBSZWFkb25seUFycmF5PFR1cm4+LFxuICBhdHRlbXB0SWQ6IFJ1bkF0dGVtcHRJZCB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBUdXJuIHwgdW5kZWZpbmVkIHtcbiAgbGV0IGxhdGVzdDogVHVybiB8IHVuZGVmaW5lZDtcbiAgZm9yIChjb25zdCB0dXJuIG9mIHByb3ZpZGVyVHVybnMpIHtcbiAgICBpZiAoYXR0ZW1wdElkID09IG51bGwgfHwgdHVybi5ydW5BdHRlbXB0SWQgIT09IGF0dGVtcHRJZCkgY29udGludWU7XG4gICAgaWYgKGxhdGVzdCA9PT0gdW5kZWZpbmVkIHx8IHR1cm4ub3JkaW5hbCA+IGxhdGVzdC5vcmRpbmFsKSBsYXRlc3QgPSB0dXJuO1xuICB9XG4gIHJldHVybiBsYXRlc3Q7XG59XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJSdW50aW1lUmVxdWVzdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBpZDogUnVudGltZVJlcXVlc3RJZCxcbiAgbm9kZUlkOiBOb2RlSWQsXG4gIHByb3ZpZGVyVHVybklkOiBTY2hlbWEuTnVsbE9yKFByb3ZpZGVyVHVybklkKSxcbiAgbmF0aXZlUmVxdWVzdFJlZjogU2NoZW1hLk51bGxPcihPcmNoZXN0cmF0aW9uVjJQcm92aWRlclJlZiksXG4gIGtpbmQ6IFNjaGVtYS5VbmlvbihbXG4gICAgUHJvdmlkZXJSZXF1ZXN0S2luZCxcbiAgICBTY2hlbWEuTGl0ZXJhbHMoW1wiZHluYW1pY190b29sX2NhbGxcIiwgXCJ1c2VyX2lucHV0XCIsIFwiYXV0aF9yZWZyZXNoXCJdKSxcbiAgXSksXG4gIHN0YXR1czogU2NoZW1hLkxpdGVyYWxzKFtcInBlbmRpbmdcIiwgXCJyZXNvbHZlZFwiLCBcImV4cGlyZWRcIiwgXCJjYW5jZWxsZWRcIl0pLFxuICByZXNwb25zZUNhcGFiaWxpdHk6IFNjaGVtYS5VbmlvbihbXG4gICAgU2NoZW1hLlN0cnVjdCh7XG4gICAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcImxpdmVcIiksXG4gICAgICBwcm92aWRlclNlc3Npb25JZDogUHJvdmlkZXJTZXNzaW9uSWQsXG4gICAgICBzdXBwb3J0c0ZlZWRiYWNrOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICAgIH0pLFxuICAgIFNjaGVtYS5TdHJ1Y3QoeyB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcIm1lc3NhZ2VcIikgfSksXG4gICAgU2NoZW1hLlN0cnVjdCh7IHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwibm90X3Jlc3VtYWJsZVwiKSwgcmVhc29uOiBTY2hlbWEuU3RyaW5nIH0pLFxuICBdKSxcbiAgY3JlYXRlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGMsXG4gIHJlc29sdmVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjKSxcbiAgZGVjaXNpb246IFNjaGVtYS5vcHRpb25hbChQcm92aWRlckFwcHJvdmFsRGVjaXNpb24pLFxuICBmZWVkYmFjazogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxuICBhbnN3ZXJzOiBTY2hlbWEub3B0aW9uYWwoUHJvdmlkZXJVc2VySW5wdXRBbnN3ZXJzKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUnVudGltZVJlcXVlc3QgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyUnVudGltZVJlcXVlc3QuVHlwZTtcblxuY29uc3QgU3ViYWdlbnROb3RpZmljYXRpb25Tb3VyY2UgPSBTY2hlbWEuU3RydWN0KHtcbiAga2luZDogU2NoZW1hLkxpdGVyYWwoXCJzdWJhZ2VudFwiKSxcbiAgY2hpbGRUaHJlYWRJZDogU2NoZW1hLm9wdGlvbmFsKFRocmVhZElkKSxcbn0pO1xuY29uc3QgQ29tbWFuZE5vdGlmaWNhdGlvblNvdXJjZSA9IFNjaGVtYS5TdHJ1Y3QoeyBraW5kOiBTY2hlbWEuTGl0ZXJhbChcImNvbW1hbmRcIikgfSk7XG5cbi8qKiBFbmNvZGUgbGVnYWN5IGJhY2tncm91bmRfY29tbWFuZC9iYWNrZ3JvdW5kX3Rhc2sgc2hhcGVzIGZpcnN0IHNvIG9sZGVyIGNsaWVudHMgYWNjZXB0IGNvbW1hbmQvc3ViYWdlbnQgc291cmNlcy4gKi9cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJOb3RpZmljYXRpb25Tb3VyY2UgPSBraW5kVW5pb25XaXRoRmFsbGJhY2soXG4gIFtcbiAgICBTY2hlbWEuU3RydWN0KHtcbiAgICAgIGtpbmQ6IFNjaGVtYS5MaXRlcmFsKFwiZGVsZWdhdGVkX3Rhc2tcIiksXG4gICAgICB0YXNrSWRzOiBTY2hlbWEuQXJyYXkoTm9kZUlkKSxcbiAgICAgIGNoaWxkVGhyZWFkSWQ6IFNjaGVtYS5vcHRpb25hbChUaHJlYWRJZCksXG4gICAgfSksXG4gICAgU2NoZW1hLlN0cnVjdCh7XG4gICAgICBraW5kOiBTY2hlbWEuTGl0ZXJhbChcImJhY2tncm91bmRfdGFza1wiKSxcbiAgICAgIHdvcms6IFNjaGVtYS5MaXRlcmFsKFwic3ViYWdlbnRcIiksXG4gICAgICBjaGlsZFRocmVhZElkOiBTY2hlbWEub3B0aW9uYWwoVGhyZWFkSWQpLFxuICAgIH0pLnBpcGUoXG4gICAgICBTY2hlbWEuZGVjb2RlVG8oU2NoZW1hLnRvVHlwZShTdWJhZ2VudE5vdGlmaWNhdGlvblNvdXJjZSksIHtcbiAgICAgICAgZGVjb2RlOiBTY2hlbWFHZXR0ZXIudHJhbnNmb3JtKCh7IGNoaWxkVGhyZWFkSWQgfSkgPT5cbiAgICAgICAgICBjaGlsZFRocmVhZElkID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8geyBraW5kOiBcInN1YmFnZW50XCIgYXMgY29uc3QgfVxuICAgICAgICAgICAgOiB7IGtpbmQ6IFwic3ViYWdlbnRcIiBhcyBjb25zdCwgY2hpbGRUaHJlYWRJZCB9LFxuICAgICAgICApLFxuICAgICAgICBlbmNvZGU6IFNjaGVtYUdldHRlci50cmFuc2Zvcm0oKHsgY2hpbGRUaHJlYWRJZCB9KSA9PiAoe1xuICAgICAgICAgIGtpbmQ6IFwiYmFja2dyb3VuZF90YXNrXCIgYXMgY29uc3QsXG4gICAgICAgICAgd29yazogXCJzdWJhZ2VudFwiIGFzIGNvbnN0LFxuICAgICAgICAgIC4uLihjaGlsZFRocmVhZElkID09PSB1bmRlZmluZWQgPyB7fSA6IHsgY2hpbGRUaHJlYWRJZCB9KSxcbiAgICAgICAgfSkpLFxuICAgICAgfSksXG4gICAgKSxcbiAgICBTY2hlbWEuU3RydWN0KHsga2luZDogU2NoZW1hLkxpdGVyYWwoXCJiYWNrZ3JvdW5kX2NvbW1hbmRcIikudHJhbnNmb3JtKFwiY29tbWFuZFwiKSB9KSxcbiAgICBTdWJhZ2VudE5vdGlmaWNhdGlvblNvdXJjZSxcbiAgICBDb21tYW5kTm90aWZpY2F0aW9uU291cmNlLFxuICAgIFNjaGVtYS5TdHJ1Y3QoeyBraW5kOiBTY2hlbWEuTGl0ZXJhbChcIm1vbml0b3JcIikgfSksXG4gICAgU2NoZW1hLlN0cnVjdCh7IGtpbmQ6IFNjaGVtYS5MaXRlcmFsKFwiYmFja2dyb3VuZF90YXNrXCIpIH0pLFxuICAgIFNjaGVtYS5TdHJ1Y3QoeyBraW5kOiBTY2hlbWEuTGl0ZXJhbChcInN5c3RlbVwiKSB9KSxcbiAgXSxcbiAgKGtpbmQpID0+IFNjaGVtYS5TdHJ1Y3QoeyBraW5kIH0pLFxuICAoKSA9PiAoeyBraW5kOiBcImJhY2tncm91bmRfdGFza1wiIH0pLFxuKTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMk5vdGlmaWNhdGlvblNvdXJjZSA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJOb3RpZmljYXRpb25Tb3VyY2UuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMk5vdGlmaWNhdGlvbiA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBzb3VyY2U6IE9yY2hlc3RyYXRpb25WMk5vdGlmaWNhdGlvblNvdXJjZSxcbiAgb3V0Y29tZTogU2NoZW1hLkxpdGVyYWxzKFtcImNvbXBsZXRlZFwiLCBcImZhaWxlZFwiLCBcImNhbmNlbGxlZFwiLCBcInVwZGF0ZWRcIiwgXCJ1bmtub3duXCJdKSxcbiAgc3VtbWFyeTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICBkZXRhaWw6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyTm90aWZpY2F0aW9uID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMk5vdGlmaWNhdGlvbi5UeXBlO1xuXG4vKiogV2h5IFQzIENvZGUgY29tcGFjdGVkIGEgdGhyZWFkIG9uIGl0cyBvd24sIG9uIHRoZSBgL2NvbXBhY3RgIGl0IHNlbnQuICovXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYySWRsZUNvbXBhY3Rpb24gPSBTY2hlbWEuTGl0ZXJhbHMoW1wiYmVmb3JlQ2FjaGVFeHBpcmVzXCIsIFwib25SZXR1cm5cIl0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYySWRsZUNvbXBhY3Rpb24gPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYySWRsZUNvbXBhY3Rpb24uVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkNvbnZlcnNhdGlvbk1lc3NhZ2UgPSBTY2hlbWEuU3RydWN0KHtcbiAgbm90aWZpY2F0aW9uOiBTY2hlbWEub3B0aW9uYWwoT3JjaGVzdHJhdGlvblYyTm90aWZpY2F0aW9uKSxcbiAgLi4uT3JjaGVzdHJhdGlvblYyQ3JlYXRpb25GaWVsZHMsXG4gIHNjaGVkdWxlZFRhc2tJZDogU2NoZW1hLm9wdGlvbmFsKFNjaGVkdWxlZFRhc2tJZCksXG4gIHNlbmRlclRocmVhZElkOiBTY2hlbWEub3B0aW9uYWwoVGhyZWFkSWQpLFxuICBpZGxlQ29tcGFjdGlvbjogU2NoZW1hLm9wdGlvbmFsKE9yY2hlc3RyYXRpb25WMklkbGVDb21wYWN0aW9uKSxcbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIGlzIHRoZSBzY3JpcHQgYSBwcm92aWRlci1uYXRpdmUgd29ya2Zsb3cgcnVuIGV4ZWN1dGVzLCBub3QgcHJvc2UuIENsaWVudHMgc2hvd1xuICAgKiB0aGUgd29ya2Zsb3cncyBvcGVuaW5nIGluc3RlYWQgYW5kIGtlZXAgdGhlIHNjcmlwdCBiZWhpbmQgYSBkaXNjbG9zdXJlLlxuICAgKi9cbiAgd29ya2Zsb3dTY3JpcHQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQm9vbGVhbiksXG4gIGlkOiBNZXNzYWdlSWQsXG4gIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgcnVuSWQ6IFNjaGVtYS5OdWxsT3IoUnVuSWQpLFxuICBub2RlSWQ6IFNjaGVtYS5OdWxsT3IoTm9kZUlkKSxcbiAgcm9sZTogU2NoZW1hLkxpdGVyYWxzKFtcInVzZXJcIiwgXCJhc3Npc3RhbnRcIiwgXCJzeXN0ZW1cIl0pLFxuICB0ZXh0OiBTY2hlbWEuU3RyaW5nLFxuICBjb250ZXh0OiBTY2hlbWEub3B0aW9uYWwoT3JjaGVzdHJhdGlvbk1lc3NhZ2VDb250ZXh0KSxcbiAgYXR0YWNobWVudHM6IFNjaGVtYS5BcnJheShDaGF0QXR0YWNobWVudCksXG4gIHN0cmVhbWluZzogU2NoZW1hLkJvb2xlYW4sXG4gIGNyZWF0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjLFxuICB1cGRhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0YyxcbiAgZGVsZWdhdGVkQ29tcGxldGlvbjogU2NoZW1hLm9wdGlvbmFsKFxuICAgIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgICAgcGFyZW50UnVuSWQ6IFJ1bklkLFxuICAgICAgZ2VuZXJhdGlvbjogUG9zaXRpdmVJbnQsXG4gICAgICB0YXNrSWRzOiBTY2hlbWEuQXJyYXkoTm9kZUlkKSxcbiAgICB9KSxcbiAgKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyQ29udmVyc2F0aW9uTWVzc2FnZSA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJDb252ZXJzYXRpb25NZXNzYWdlLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJQbGFuU3RlcCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBpZDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICB0ZXh0OiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIHN0YXR1czogU2NoZW1hLkxpdGVyYWxzKFtcInBlbmRpbmdcIiwgXCJydW5uaW5nXCIsIFwiY29tcGxldGVkXCJdKSxcbiAgZHVyYXRpb25BbmNob3JBdDogU2NoZW1hLm9wdGlvbmFsKElzb0RhdGVUaW1lKSxcbiAgZHVyYXRpb25NczogU2NoZW1hLm9wdGlvbmFsKE5vbk5lZ2F0aXZlSW50KSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUGxhblN0ZXAgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyUGxhblN0ZXAuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlVzZXJJbnB1dFF1ZXN0aW9uID0gU2NoZW1hLlN0cnVjdCh7XG4gIGlkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIGhlYWRlcjogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICBxdWVzdGlvbjogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICBvcHRpb25zOiBTY2hlbWEuQXJyYXkoXG4gICAgU2NoZW1hLlN0cnVjdCh7XG4gICAgICBsYWJlbDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICAgICAgZGVzY3JpcHRpb246IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgICAgIHZhbHVlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gICAgICBwcmV2aWV3OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gICAgfSksXG4gICksXG4gIG11bHRpU2VsZWN0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICBhbGxvd0N1c3RvbUFuc3dlcjogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgaW5pdGlhbEFuc3dlcjogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxuICByZXF1aXJlZDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyVXNlcklucHV0UXVlc3Rpb24gPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyVXNlcklucHV0UXVlc3Rpb24uVHlwZTtcblxuY29uc3QgT3JjaGVzdHJhdGlvblYyUGxhbkFydGlmYWN0QmFzZUZpZWxkcyA9IHtcbiAgaWQ6IFBsYW5JZCxcbiAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICBydW5JZDogU2NoZW1hLk51bGxPcihSdW5JZCksXG4gIG5vZGVJZDogTm9kZUlkLFxuICBzdGF0dXM6IFNjaGVtYS5MaXRlcmFscyhbXCJkcmFmdFwiLCBcImFjdGl2ZVwiLCBcImNvbXBsZXRlZFwiLCBcInN1cGVyc2VkZWRcIl0pLFxuICBkZXRhaWxJblR1cm5JdGVtOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkxpdGVyYWwodHJ1ZSkpLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlBsYW5BcnRpZmFjdCA9IFNjaGVtYS5VbmlvbihbXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMlBsYW5BcnRpZmFjdEJhc2VGaWVsZHMsXG4gICAga2luZDogU2NoZW1hLkxpdGVyYWwoXCJwcm9wb3NlZF9wbGFuXCIpLFxuICAgIG1hcmtkb3duOiBTY2hlbWEuU3RyaW5nLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyUGxhbkFydGlmYWN0QmFzZUZpZWxkcyxcbiAgICBraW5kOiBTY2hlbWEuTGl0ZXJhbChcInRvZG9fbGlzdFwiKSxcbiAgICBzdGVwczogU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMlBsYW5TdGVwKSxcbiAgICBleHBsYW5hdGlvbjogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUGxhbkFydGlmYWN0ID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlBsYW5BcnRpZmFjdC5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludEZpbGVTdW1tYXJ5ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHBhdGg6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAga2luZDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICBhZGRpdGlvbnM6IE5vbk5lZ2F0aXZlSW50LFxuICBkZWxldGlvbnM6IE5vbk5lZ2F0aXZlSW50LFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJDaGVja3BvaW50RmlsZVN1bW1hcnkgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludEZpbGVTdW1tYXJ5LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJDaGVja3BvaW50ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGlkOiBDaGVja3BvaW50SWQsXG4gIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgc2NvcGVJZDogQ2hlY2twb2ludFNjb3BlSWQsXG4gIHJ1bklkOiBTY2hlbWEuTnVsbE9yKFJ1bklkKSxcbiAgbm9kZUlkOiBOb2RlSWQsXG4gIHBhcmVudENoZWNrcG9pbnRJZDogU2NoZW1hLk51bGxPcihDaGVja3BvaW50SWQpLFxuICBvcmRpbmFsV2l0aGluU2NvcGU6IE5vbk5lZ2F0aXZlSW50LFxuICBhcHBSdW5PcmRpbmFsOiBTY2hlbWEuTnVsbE9yKFBvc2l0aXZlSW50KSxcbiAgcmVmOiBDaGVja3BvaW50UmVmLFxuICBzdGF0dXM6IFNjaGVtYS5MaXRlcmFscyhbXCJyZWFkeVwiLCBcIm1pc3NpbmdcIiwgXCJlcnJvclwiLCBcInN0YWxlXCJdKSxcbiAgZmlsZXM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJDaGVja3BvaW50RmlsZVN1bW1hcnkpLFxuICBjYXB0dXJlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGMsXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMkNoZWNrcG9pbnQgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludC5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludFJvbGxiYWNrUmVxdWVzdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBzY29wZUlkOiBDaGVja3BvaW50U2NvcGVJZCxcbiAgY2hlY2twb2ludElkOiBDaGVja3BvaW50SWQsXG4gIHJlcXVlc3RlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGMsXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMkNoZWNrcG9pbnRSb2xsYmFja1JlcXVlc3QgPVxuICB0eXBlb2YgT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludFJvbGxiYWNrUmVxdWVzdC5UeXBlO1xuXG5leHBvcnQgY2xhc3MgT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludFVuYXZhaWxhYmxlRXJyb3IgZXh0ZW5kcyBTY2hlbWEuVGFnZ2VkRXJyb3I8T3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludFVuYXZhaWxhYmxlRXJyb3I+KCkoXG4gIFwiT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludFVuYXZhaWxhYmxlRXJyb3JcIixcbiAge1xuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICB0YXJnZXQ6IFNjaGVtYS5TdHJpbmcsXG4gIH0sXG4pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFJvbGxiYWNrIHRhcmdldCAke3RoaXMudGFyZ2V0fSBpcyB1bmF2YWlsYWJsZSBmb3IgdGhyZWFkICR7dGhpcy50aHJlYWRJZH0uYDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1TdGF0dXMgPSBTY2hlbWEuTGl0ZXJhbHMoW1xuICBcImlkbGVcIixcbiAgXCJwZW5kaW5nXCIsXG4gIFwicnVubmluZ1wiLFxuICBcIndhaXRpbmdcIixcbiAgXCJjb21wbGV0ZWRcIixcbiAgXCJmYWlsZWRcIixcbiAgXCJjYW5jZWxsZWRcIixcbiAgXCJpbnRlcnJ1cHRlZFwiLFxuXSk7XG5cbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlR1cm5JdGVtU3RhdHVzID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlR1cm5JdGVtU3RhdHVzLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJGaWxlQ2hhbmdlRGV0YWlsID0gU2NoZW1hLlN0cnVjdCh7XG4gIG9wZXJhdGlvbjogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICBwYXRoOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIG9sZFBhdGg6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICBmaWxlVHlwZTogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gIG1pbWVUeXBlOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyRmlsZUNoYW5nZURldGFpbCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJGaWxlQ2hhbmdlRGV0YWlsLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJQcm92aWRlckZhaWx1cmVDbGFzcyA9IFNjaGVtYS5MaXRlcmFscyhbXG4gIFwidXNhZ2VfbGltaXRcIixcbiAgXCJwcm92aWRlcl9lcnJvclwiLFxuICBcInRyYW5zcG9ydF9lcnJvclwiLFxuICBcInBlcm1pc3Npb25fZXJyb3JcIixcbiAgXCJ2YWxpZGF0aW9uX2Vycm9yXCIsXG4gIFwidW5rbm93blwiLFxuXSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJQcm92aWRlckZhaWx1cmVDbGFzcyA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlckZhaWx1cmVDbGFzcy5UeXBlO1xuXG5jb25zdCBPcmNoZXN0cmF0aW9uVjJQcm92aWRlckZhaWx1cmVNZXNzYWdlID0gVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFxuICBTY2hlbWEuaXNNYXhMZW5ndGgoNF8wOTYpLFxuKTtcbmNvbnN0IE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyRmFpbHVyZUNvZGUgPSBUcmltbWVkTm9uRW1wdHlTdHJpbmcuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDEyOCkpO1xuXG4vKiogUHJvZHVjZXJzIG11c3QgcmVkYWN0IGNyZWRlbnRpYWxzIGJlZm9yZSBjb25zdHJ1Y3Rpb24uICovXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJGYWlsdXJlID0gU2NoZW1hLlN0cnVjdCh7XG4gIGNsYXNzOiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlckZhaWx1cmVDbGFzcyxcbiAgbWVzc2FnZTogT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJGYWlsdXJlTWVzc2FnZSxcbiAgY29kZTogU2NoZW1hLk51bGxPcihPcmNoZXN0cmF0aW9uVjJQcm92aWRlckZhaWx1cmVDb2RlKSxcbiAgcmV0cnlhYmxlOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5Cb29sZWFuKSxcbiAgcmVzZXRBdDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoSXNvRGF0ZVRpbWUpKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJGYWlsdXJlID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyRmFpbHVyZS5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJSZXRyeSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBhdHRlbXB0OiBQb3NpdGl2ZUludCxcbiAgbWF4QXR0ZW1wdHM6IFNjaGVtYS5OdWxsT3IoUG9zaXRpdmVJbnQpLFxuICByZXRyeURlbGF5TXM6IFNjaGVtYS5OdWxsT3IoTm9uTmVnYXRpdmVJbnQpLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclJldHJ5ID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyUmV0cnkuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyVGhyZWFkRGlzcG9zaXRpb24gPSBTY2hlbWEuTGl0ZXJhbHMoW1wicmV1c2FibGVcIiwgXCJicm9rZW5cIl0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJUaHJlYWREaXNwb3NpdGlvbiA9XG4gIHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclRocmVhZERpc3Bvc2l0aW9uLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJVc2VyTWVzc2FnZUlucHV0SW50ZW50ID0gU2NoZW1hLkxpdGVyYWxzKFtcbiAgXCJ0dXJuX3N0YXJ0XCIsXG4gIFwicXVldWVkX3R1cm5cIixcbiAgXCJzdGVlclwiLFxuICBcInByb21vdGVkX3F1ZXVlZF90b19zdGVlclwiLFxuXSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJVc2VyTWVzc2FnZUlucHV0SW50ZW50ID1cbiAgdHlwZW9mIE9yY2hlc3RyYXRpb25WMlVzZXJNZXNzYWdlSW5wdXRJbnRlbnQuVHlwZTtcblxuY29uc3QgT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1CYXNlRmllbGRzID0ge1xuICB0b29sTm9uRXhlY3V0aW9uS2luZDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxuICB0b29sU3VyZmFjZTogU2NoZW1hLm9wdGlvbmFsKFRvb2xBY3Rpdml0eVN1cmZhY2UpLFxuICB0b29sSWNvbjogU2NoZW1hLm9wdGlvbmFsKFRvb2xBY3Rpdml0eUljb24pLFxuICB0b29sU291cmNlOiBTY2hlbWEub3B0aW9uYWwoVG9vbEFjdGl2aXR5U291cmNlKSxcbiAgaWQ6IFR1cm5JdGVtSWQsXG4gIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgcnVuSWQ6IFNjaGVtYS5OdWxsT3IoUnVuSWQpLFxuICBub2RlSWQ6IFNjaGVtYS5OdWxsT3IoTm9kZUlkKSxcbiAgcHJvdmlkZXJUaHJlYWRJZDogU2NoZW1hLk51bGxPcihQcm92aWRlclRocmVhZElkKSxcbiAgcHJvdmlkZXJUdXJuSWQ6IFNjaGVtYS5OdWxsT3IoUHJvdmlkZXJUdXJuSWQpLFxuICBuYXRpdmVJdGVtUmVmOiBTY2hlbWEuTnVsbE9yKE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyUmVmKSxcbiAgcGFyZW50SXRlbUlkOiBTY2hlbWEuTnVsbE9yKFR1cm5JdGVtSWQpLFxuICBvcmRpbmFsOiBOb25OZWdhdGl2ZUludCxcbiAgc3RhdHVzOiBPcmNoZXN0cmF0aW9uVjJUdXJuSXRlbVN0YXR1cyxcbiAgdGl0bGU6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZyksXG4gIHN0YXJ0ZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGMpLFxuICBjb21wbGV0ZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGMpLFxuICB1cGRhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Yyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJGaWxlU2VhcmNoUmVzdWx0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGZpbGVOYW1lOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIGxpbmU6IFNjaGVtYS5vcHRpb25hbChQb3NpdGl2ZUludCksXG4gIGNvbHVtbjogU2NoZW1hLm9wdGlvbmFsKFBvc2l0aXZlSW50KSxcbiAgcHJldmlldzogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJGaWxlU2VhcmNoUmVzdWx0ID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMkZpbGVTZWFyY2hSZXN1bHQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMldlYlNlYXJjaFJlc3VsdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0aXRsZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxuICB1cmw6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICBzbmlwcGV0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMldlYlNlYXJjaFJlc3VsdCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJXZWJTZWFyY2hSZXN1bHQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlNlY3JldFJlcXVlc3RTdGF0dXMgPSBTY2hlbWEuTGl0ZXJhbHMoW1xuICBcInBlbmRpbmdcIixcbiAgXCJzYXZlZFwiLFxuICBcImRlY2xpbmVkXCIsXG4gIFwiY2FuY2VsbGVkXCIsXG5dKTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlNlY3JldFJlcXVlc3RTdGF0dXMgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyU2VjcmV0UmVxdWVzdFN0YXR1cy5UeXBlO1xuXG5jb25zdCBPcmNoZXN0cmF0aW9uVjJTZWNyZXRSZXF1ZXN0RmllbGRzID0ge1xuICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInNlY3JldF9yZXF1ZXN0XCIpLFxuICBsYWJlbDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICByZWFzb246IFNjaGVtYS5TdHJpbmcsXG4gIHBsYWNlaG9sZGVyOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gIHNlY3JldFN0YXR1czogT3JjaGVzdHJhdGlvblYyU2VjcmV0UmVxdWVzdFN0YXR1cyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJUdXJuSXRlbSA9IFNjaGVtYS5VbmlvbihbXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMlR1cm5JdGVtQmFzZUZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcIm5vdGlmaWNhdGlvblwiKSxcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJOb3RpZmljYXRpb24uZmllbGRzLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1CYXNlRmllbGRzLFxuICAgIC4uLk9yY2hlc3RyYXRpb25WMkNyZWF0aW9uRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidXNlcl9tZXNzYWdlXCIpLFxuICAgIG1lc3NhZ2VJZDogTWVzc2FnZUlkLFxuICAgIHNjaGVkdWxlZFRhc2tJZDogU2NoZW1hLm9wdGlvbmFsKFNjaGVkdWxlZFRhc2tJZCksXG4gICAgc2VuZGVyVGhyZWFkSWQ6IFNjaGVtYS5vcHRpb25hbChUaHJlYWRJZCksXG4gICAgaWRsZUNvbXBhY3Rpb246IFNjaGVtYS5vcHRpb25hbChPcmNoZXN0cmF0aW9uVjJJZGxlQ29tcGFjdGlvbiksXG4gICAgd29ya2Zsb3dTY3JpcHQ6IE9yY2hlc3RyYXRpb25WMkNvbnZlcnNhdGlvbk1lc3NhZ2UuZmllbGRzLndvcmtmbG93U2NyaXB0LFxuICAgIGlucHV0SW50ZW50OiBPcmNoZXN0cmF0aW9uVjJVc2VyTWVzc2FnZUlucHV0SW50ZW50LFxuICAgIHRleHQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgLyoqIFNhbWUgYXMgdGhlIHRleHQgb2YgbWVzc2FnZSBgbWVzc2FnZUlkYC4gKi9cbiAgICB0ZXh0T21pdHRlZDogRGVkdXBlZEJvZHlNYXJrZXIsXG4gICAgY29udGV4dDogU2NoZW1hLm9wdGlvbmFsKE9yY2hlc3RyYXRpb25NZXNzYWdlQ29udGV4dCksXG4gICAgYXR0YWNobWVudHM6IFNjaGVtYS5BcnJheShDaGF0QXR0YWNobWVudCksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJhc3Npc3RhbnRfbWVzc2FnZVwiKSxcbiAgICBtZXNzYWdlSWQ6IE1lc3NhZ2VJZCxcbiAgICB0ZXh0OiBTY2hlbWEuU3RyaW5nLFxuICAgIHRleHRPbWl0dGVkOiBEZWR1cGVkQm9keU1hcmtlcixcbiAgICBhdHRhY2htZW50czogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5BcnJheShDaGF0QXR0YWNobWVudCkpLFxuICAgIHN0cmVhbWluZzogU2NoZW1hLkJvb2xlYW4sXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJyZWFzb25pbmdcIiksXG4gICAgdGV4dDogU2NoZW1hLlN0cmluZyxcbiAgICBzdHJlYW1pbmc6IFNjaGVtYS5Cb29sZWFuLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicHJvcG9zZWRfcGxhblwiKSxcbiAgICBwbGFuSWQ6IFBsYW5JZCxcbiAgICBtYXJrZG93bjogU2NoZW1hLlN0cmluZyxcbiAgICBzdHJlYW1pbmc6IFNjaGVtYS5Cb29sZWFuLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidG9kb19saXN0XCIpLFxuICAgIHBsYW5JZDogUGxhbklkLFxuICAgIHN0ZXBzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyUGxhblN0ZXApLFxuICAgIGV4cGxhbmF0aW9uOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ1c2VyX2lucHV0X3JlcXVlc3RcIiksXG4gICAgcmVxdWVzdElkOiBSdW50aW1lUmVxdWVzdElkLFxuICAgIHF1ZXN0aW9uczogU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMlVzZXJJbnB1dFF1ZXN0aW9uKSxcbiAgICBxdWVzdGlvbkFuc3dlcjogU2NoZW1hLm9wdGlvbmFsKFVzZXJJbnB1dEF0dGFjaG1lbnRBbnN3ZXJQYXlsb2FkKSxcbiAgICByZXNwb25zZU1vZGU6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTGl0ZXJhbChcIm1lc3NhZ2VcIikpLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiZmlsZV9jaGFuZ2VcIiksXG4gICAgZmlsZU5hbWU6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgICBhZGRpdGlvbnM6IFNjaGVtYS5vcHRpb25hbChOb25OZWdhdGl2ZUludCksXG4gICAgZGVsZXRpb25zOiBTY2hlbWEub3B0aW9uYWwoTm9uTmVnYXRpdmVJbnQpLFxuICAgIGRpZmZTdHI6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgICBvbGRTdHI6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgICBuZXdTdHI6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgICBjaGFuZ2VzOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMkZpbGVDaGFuZ2VEZXRhaWwpKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMlR1cm5JdGVtQmFzZUZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcImNvbW1hbmRfZXhlY3V0aW9uXCIpLFxuICAgIGlucHV0OiBTY2hlbWEuU3RyaW5nLFxuICAgIG91dHB1dDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxuICAgIC8qKiBTZXQgb24gdGhlIHdpcmUgd2hlbiBvdXRwdXQgd2FzIHdpdGhoZWxkOyBmZXRjaCBpdCB3aXRoIGdldFR1cm5JdGVtLiAqL1xuICAgIG91dHB1dE9taXR0ZWQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQm9vbGVhbiksXG4gICAgb3V0cHV0SW5kaWNhdGVzRmFpbHVyZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgICBleGl0Q29kZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5JbnQpLFxuICAgIC8qKiBTZXQgd2hlbiB0aGUgY29tbWFuZCBpcyBhIG1vbml0b3IsIHNvIGJhY2tncm91bmQgd29yayBsaXN0cyBpdCBhcyBhIG1vbml0b3IuICovXG4gICAgbW9uaXRvcjogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMlR1cm5JdGVtQmFzZUZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcImZpbGVfc2VhcmNoXCIpLFxuICAgIHBhdHRlcm46IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgICByZXN1bHRzOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMkZpbGVTZWFyY2hSZXN1bHQpKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMlR1cm5JdGVtQmFzZUZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcIndlYl9zZWFyY2hcIiksXG4gICAgcGF0dGVybnM6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQXJyYXkoU2NoZW1hLlN0cmluZykpLFxuICAgIHJlc3VsdHM6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyV2ViU2VhcmNoUmVzdWx0KSksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJhcHByb3ZhbF9yZXF1ZXN0XCIpLFxuICAgIHJlcXVlc3RJZDogUnVudGltZVJlcXVlc3RJZCxcbiAgICByZXF1ZXN0S2luZDogUHJvdmlkZXJSZXF1ZXN0S2luZCxcbiAgICBwcm9tcHQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgICByZWFzb246IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgICBmdWxsQWNjZXNzT3ZlcnJpZGU6IFNjaGVtYS5vcHRpb25hbChQcm92aWRlckFwcHJvdmFsRnVsbEFjY2Vzc092ZXJyaWRlKSxcbiAgICBhcHBOYW1lOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gICAgb3B0aW9uczogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5BcnJheShQcm92aWRlckFwcHJvdmFsT3B0aW9uKSksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJjaGVja3BvaW50XCIpLFxuICAgIGNoZWNrcG9pbnRJZDogQ2hlY2twb2ludElkLFxuICAgIHNjb3BlSWQ6IENoZWNrcG9pbnRTY29wZUlkLFxuICAgIGZpbGVzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludEZpbGVTdW1tYXJ5KSxcbiAgICAvKiogU2FtZSBhcyB0aGUgZmlsZXMgb2YgY2hlY2twb2ludCBgY2hlY2twb2ludElkYC4gKi9cbiAgICBmaWxlc09taXR0ZWQ6IERlZHVwZWRCb2R5TWFya2VyLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicnVuX2ludGVycnVwdF9yZXF1ZXN0XCIpLFxuICAgIG1lc3NhZ2U6IFNjaGVtYS5TdHJpbmcsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJydW5faW50ZXJydXB0X3Jlc3VsdFwiKSxcbiAgICBtZXNzYWdlOiBTY2hlbWEuU3RyaW5nLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwic3lzdGVtX25vdGljZVwiKSxcbiAgICBtZXNzYWdlOiBTY2hlbWEuU3RyaW5nLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiZXJyb3JcIiksXG4gICAgZmFpbHVyZTogT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJGYWlsdXJlLFxuICAgIHJldHJ5OiBTY2hlbWEub3B0aW9uYWwoT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJSZXRyeSksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJjb21wYWN0aW9uXCIpLFxuICAgIGRyaXZlcjogU2NoZW1hLk51bGxPcihQcm92aWRlckRyaXZlcktpbmQpLFxuICAgIHN1bW1hcnk6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgICBiZWZvcmVUb2tlbkNvdW50OiBTY2hlbWEub3B0aW9uYWwoTm9uTmVnYXRpdmVJbnQpLFxuICAgIGFmdGVyVG9rZW5Db3VudDogU2NoZW1hLm9wdGlvbmFsKE5vbk5lZ2F0aXZlSW50KSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMlR1cm5JdGVtQmFzZUZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcImhhbmRvZmZcIiksXG4gICAgY29udGV4dEhhbmRvZmZJZDogQ29udGV4dEhhbmRvZmZJZCxcbiAgICBmcm9tUHJvdmlkZXJUaHJlYWRJZHM6IFNjaGVtYS5BcnJheShQcm92aWRlclRocmVhZElkKSxcbiAgICB0b1Byb3ZpZGVyVGhyZWFkSWQ6IFByb3ZpZGVyVGhyZWFkSWQsXG4gICAgZnJvbVByb3ZpZGVySW5zdGFuY2VJZHM6IFNjaGVtYS5BcnJheShQcm92aWRlckluc3RhbmNlSWQpLFxuICAgIHRvUHJvdmlkZXJJbnN0YW5jZUlkOiBQcm92aWRlckluc3RhbmNlSWQsXG4gICAgZnJvbU1vZGVsU2VsZWN0aW9uczogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5BcnJheShNb2RlbFNlbGVjdGlvbikpLFxuICAgIHRvTW9kZWw6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgICBzdHJhdGVneTogU2NoZW1hLkxpdGVyYWxzKFtcbiAgICAgIFwiZGVsdGFfc2luY2VfdGFyZ2V0X2xhc3Rfc2VlblwiLFxuICAgICAgXCJmb3JrX2RlbHRhX3N1bW1hcnlcIixcbiAgICAgIFwiZnVsbF90aHJlYWRfc3VtbWFyeVwiLFxuICAgICAgXCJjaGVja3BvaW50X3N1bW1hcnlcIixcbiAgICAgIFwibWFudWFsX2NvbnRleHRcIixcbiAgICBdKSxcbiAgICBzdW1tYXJ5OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJmb3JrXCIpLFxuICAgIHNvdXJjZTogU2NoZW1hLlVuaW9uKFtcbiAgICAgIFNjaGVtYS5TdHJ1Y3QoeyB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInJ1blwiKSwgdGhyZWFkSWQ6IFRocmVhZElkLCBydW5JZDogUnVuSWQgfSksXG4gICAgICBTY2hlbWEuU3RydWN0KHsgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJub2RlXCIpLCBub2RlSWQ6IE5vZGVJZCB9KSxcbiAgICAgIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgICAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInByb3ZpZGVyX3RocmVhZFwiKSxcbiAgICAgICAgcHJvdmlkZXJUaHJlYWRJZDogUHJvdmlkZXJUaHJlYWRJZCxcbiAgICAgICAgcHJvdmlkZXJUdXJuSWQ6IFNjaGVtYS5vcHRpb25hbChQcm92aWRlclR1cm5JZCksXG4gICAgICB9KSxcbiAgICBdKSxcbiAgICB0YXJnZXRUaHJlYWRJZDogVGhyZWFkSWQsXG4gICAgcHJvdmlkZXJUaHJlYWRJZDogU2NoZW1hLm9wdGlvbmFsKFByb3ZpZGVyVGhyZWFkSWQpLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkX2NyZWF0ZWRcIiksXG4gICAgdGFyZ2V0VGhyZWFkSWQ6IFRocmVhZElkLFxuICAgIHRhcmdldFJ1bklkOiBTY2hlbWEuTnVsbE9yKFJ1bklkKSxcbiAgICB0YXJnZXRQcm92aWRlckluc3RhbmNlSWQ6IFByb3ZpZGVySW5zdGFuY2VJZCxcbiAgICB0YXJnZXRNb2RlbDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1CYXNlRmllbGRzLFxuICAgIC4uLk9yY2hlc3RyYXRpb25WMlNlY3JldFJlcXVlc3RGaWVsZHMsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJzdWJhZ2VudFwiKSxcbiAgICBzdWJhZ2VudElkOiBOb2RlSWQsXG4gICAgb3JpZ2luOiBTY2hlbWEuTGl0ZXJhbHMoW1wicHJvdmlkZXJfbmF0aXZlXCIsIFwiYXBwX293bmVkXCJdKSxcbiAgICBkcml2ZXI6IFByb3ZpZGVyRHJpdmVyS2luZCxcbiAgICBwcm92aWRlckluc3RhbmNlSWQ6IFByb3ZpZGVySW5zdGFuY2VJZCxcbiAgICBjaGlsZFRocmVhZElkOiBTY2hlbWEuTnVsbE9yKFRocmVhZElkKSxcbiAgICBwcm9tcHQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgcHJvZ3Jlc3M6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgICByZXN1bHQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZyksXG4gICAgLyoqIFNhbWUgYXMgdGhlIHByb21wdCBhbmQgcmVzdWx0IG9mIHN1YmFnZW50IGBzdWJhZ2VudElkYC4gKi9cbiAgICBwcm9tcHRPbWl0dGVkOiBEZWR1cGVkQm9keU1hcmtlcixcbiAgICByZXN1bHRPbWl0dGVkOiBEZWR1cGVkQm9keU1hcmtlcixcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMlR1cm5JdGVtQmFzZUZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcImR5bmFtaWNfdG9vbFwiKSxcbiAgICB0b29sTmFtZTogU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICAgIHZpZXdlZEltYWdlUGF0aDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gICAgaW5wdXQ6IFNjaGVtYS5Vbmtub3duLFxuICAgIG91dHB1dDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Vbmtub3duKSxcbiAgICAvKiogU2V0IG9uIHRoZSB3aXJlIHdoZW4gb3V0cHV0IHdhcyB3aXRoaGVsZDsgZmV0Y2ggaXQgd2l0aCBnZXRUdXJuSXRlbS4gKi9cbiAgICBvdXRwdXRPbWl0dGVkOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyVHVybkl0ZW0gPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyVHVybkl0ZW0uVHlwZTtcblxuY29uc3QgaXNVbmtub3duVHVybkl0ZW0gPSBoYXNVbmtub3duVW5pb25UYWcoT3JjaGVzdHJhdGlvblYyVHVybkl0ZW0ubWVtYmVycywgXCJ0eXBlXCIpO1xuXG5jb25zdCB0dXJuSXRlbUFycmF5ID0gPE1lbWJlcnMgZXh0ZW5kcyBSZWFkb25seUFycmF5PFNjaGVtYS5Ub3AgJiB7IHJlYWRvbmx5IGZpZWxkczogb2JqZWN0IH0+PihcbiAgdW5pb246IFNjaGVtYS5VbmlvbjxNZW1iZXJzPixcbikgPT4gRm9yd2FyZENvbXBhdGlibGVVbmlvbkFycmF5KHVuaW9uLm1lbWJlcnMsIFwidHlwZVwiKTtcblxuY29uc3QgcHJvamVjdGVkVHVybkl0ZW1BcnJheSA9IDxSb3cgZXh0ZW5kcyBTY2hlbWEuVG9wLCBJdGVtIGV4dGVuZHMgU2NoZW1hLlRvcD4oXG4gIHJvdzogUm93LFxuICByb3dXaXRoVW5rbm93bkl0ZW06IEl0ZW0sXG4pID0+XG4gIFNjaGVtYS5BcnJheShyb3dXaXRoVW5rbm93bkl0ZW0pLnBpcGUoXG4gICAgU2NoZW1hLmRlY29kZVRvKFxuICAgICAgU2NoZW1hLkFycmF5KFNjaGVtYS50b1R5cGUocm93KSksXG4gICAgICBTY2hlbWFUcmFuc2Zvcm1hdGlvbi50cmFuc2Zvcm08UmVhZG9ubHlBcnJheTxSb3dbXCJUeXBlXCJdPiwgUmVhZG9ubHlBcnJheTxJdGVtW1wiVHlwZVwiXT4+KHtcbiAgICAgICAgZGVjb2RlOiAocm93cykgPT5cbiAgICAgICAgICByb3dzLmZpbHRlcihcbiAgICAgICAgICAgIChwcm9qZWN0ZWQpID0+ICFpc1Vua25vd25Vbmlvbk1lbWJlcigocHJvamVjdGVkIGFzIHsgcmVhZG9ubHkgaXRlbTogdW5rbm93biB9KS5pdGVtKSxcbiAgICAgICAgICApIGFzIFJlYWRvbmx5QXJyYXk8Um93W1wiVHlwZVwiXT4sXG4gICAgICAgIGVuY29kZTogKHJvd3MpID0+IHJvd3MsXG4gICAgICB9KSxcbiAgICApLFxuICApO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyUHJvamVjdGVkVHVybkl0ZW0gPSBTY2hlbWEuU3RydWN0KHtcbiAgcG9zaXRpb246IE5vbk5lZ2F0aXZlSW50LFxuICB2aXNpYmlsaXR5OiBTY2hlbWEuTGl0ZXJhbHMoW1wibG9jYWxcIiwgXCJpbmhlcml0ZWRcIiwgXCJzeW50aGV0aWNcIl0pLFxuICBzb3VyY2VUaHJlYWRJZDogVGhyZWFkSWQsXG4gIHNvdXJjZUl0ZW1JZDogVHVybkl0ZW1JZCxcbiAgaXRlbTogT3JjaGVzdHJhdGlvblYyVHVybkl0ZW0sXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlByb2plY3RlZFR1cm5JdGVtID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlByb2plY3RlZFR1cm5JdGVtLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJSYXdQcm92aWRlckV2ZW50ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGlkOiBSYXdFdmVudElkLFxuICBkcml2ZXI6IFByb3ZpZGVyRHJpdmVyS2luZCxcbiAgcHJvdmlkZXJJbnN0YW5jZUlkOiBQcm92aWRlckluc3RhbmNlSWQsXG4gIHByb3ZpZGVyU2Vzc2lvbklkOiBQcm92aWRlclNlc3Npb25JZCxcbiAgc2VxdWVuY2U6IFBvc2l0aXZlSW50LFxuICBkaXJlY3Rpb246IFNjaGVtYS5MaXRlcmFscyhbXCJpbmNvbWluZ1wiLCBcIm91dGdvaW5nXCJdKSxcbiAgbWVzc2FnZUtpbmQ6IFNjaGVtYS5MaXRlcmFscyhbXCJyZXF1ZXN0XCIsIFwicmVzcG9uc2VcIiwgXCJub3RpZmljYXRpb25cIiwgXCJlcnJvclwiXSksXG4gIG1ldGhvZDogU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICBqc29uUnBjSWQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlVuaW9uKFtTY2hlbWEuU3RyaW5nLCBTY2hlbWEuTnVtYmVyXSkpLFxuICBwYXlsb2FkOiBTY2hlbWEuVW5rbm93bixcbiAgb2JzZXJ2ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJSYXdQcm92aWRlckV2ZW50ID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlJhd1Byb3ZpZGVyRXZlbnQuVHlwZTtcblxuY29uc3QgT3JjaGVzdHJhdGlvblYyRXZlbnRCYXNlID0gU2NoZW1hLlN0cnVjdCh7XG4gIGlkOiBFdmVudElkLFxuICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gIHJ1bklkOiBTY2hlbWEub3B0aW9uYWwoUnVuSWQpLFxuICBub2RlSWQ6IFNjaGVtYS5vcHRpb25hbChOb2RlSWQpLFxuICBkcml2ZXI6IFNjaGVtYS5vcHRpb25hbChQcm92aWRlckRyaXZlcktpbmQpLFxuICBwcm92aWRlckluc3RhbmNlSWQ6IFNjaGVtYS5vcHRpb25hbChQcm92aWRlckluc3RhbmNlSWQpLFxuICByYXdFdmVudElkOiBTY2hlbWEub3B0aW9uYWwoUmF3RXZlbnRJZCksXG4gIG9jY3VycmVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Yyxcbn0pO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyRG9tYWluRXZlbnQgPSBTY2hlbWEuVW5pb24oW1xuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJFdmVudEJhc2UuZmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLmNyZWF0ZWRcIiksXG4gICAgcGF5bG9hZDogT3JjaGVzdHJhdGlvblYyQXBwVGhyZWFkLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyRXZlbnRCYXNlLmZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbHMoW1xuICAgICAgXCJ0aHJlYWQuYXJjaGl2ZWRcIixcbiAgICAgIFwidGhyZWFkLnVuYXJjaGl2ZWRcIixcbiAgICAgIFwidGhyZWFkLmRlbGV0ZWRcIixcbiAgICAgIFwidGhyZWFkLnNldHRsZWRcIixcbiAgICAgIFwidGhyZWFkLnVuc2V0dGxlZFwiLFxuICAgICAgXCJ0aHJlYWQuc25vb3plZFwiLFxuICAgICAgXCJ0aHJlYWQudW5zbm9vemVkXCIsXG4gICAgICBcInRocmVhZC5waW5uZWRcIixcbiAgICAgIFwidGhyZWFkLmF1dG8tc2V0dGxlLXNldFwiLFxuICAgICAgXCJ0aHJlYWQudW5waW5uZWRcIixcbiAgICAgIFwidGhyZWFkLnBpbi1yZW9yZGVyZWRcIixcbiAgICAgIFwidGhyZWFkLmFjdGl2ZS1yZW9yZGVyZWRcIixcbiAgICAgIFwidGhyZWFkLnZpc2l0ZWRcIixcbiAgICAgIFwidGhyZWFkLm1hcmtlZC11bnJlYWRcIixcbiAgICAgIFwidGhyZWFkLm1ldGFkYXRhLXVwZGF0ZWRcIixcbiAgICAgIFwidGhyZWFkLnB1bGwtcmVxdWVzdC1zeW5jZWRcIixcbiAgICAgIFwidGhyZWFkLnJ1bnRpbWUtbW9kZS11cGRhdGVkXCIsXG4gICAgICBcInRocmVhZC5pbnRlcmFjdGlvbi1tb2RlLXVwZGF0ZWRcIixcbiAgICAgIFwidGhyZWFkLm1vZGVsLXNlbGVjdGlvbi11cGRhdGVkXCIsXG4gICAgICBcInRocmVhZC5wcm92aWRlci1zd2l0Y2hlZFwiLFxuICAgICAgXCJ0aHJlYWQuZ3Vlc3Qtc2hhcmUtdXBkYXRlZFwiLFxuICAgIF0pLFxuICAgIHBheWxvYWQ6IE9yY2hlc3RyYXRpb25WMkFwcFRocmVhZCxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkV2ZW50QmFzZS5maWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQucHVsbC1yZXF1ZXN0LWxpbmstdXBkYXRlZFwiKSxcbiAgICBwYXlsb2FkOiBUaHJlYWRQdWxsUmVxdWVzdExpbmssXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJFdmVudEJhc2UuZmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicnVuLmNyZWF0ZWRcIiksXG4gICAgcGF5bG9hZDogT3JjaGVzdHJhdGlvblYyUnVuLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyRXZlbnRCYXNlLmZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInJ1bi51cGRhdGVkXCIpLFxuICAgIHBheWxvYWQ6IE9yY2hlc3RyYXRpb25WMlJ1bixcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkV2ZW50QmFzZS5maWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJydW4uYmFja2dyb3VuZC13b3JrLWNhbmNlbGxlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJSdW5CYWNrZ3JvdW5kV29ya0NhbmNlbGxlZCxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkV2ZW50QmFzZS5maWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJydW4tYXR0ZW1wdC5jcmVhdGVkXCIpLFxuICAgIHBheWxvYWQ6IE9yY2hlc3RyYXRpb25WMlJ1bkF0dGVtcHQsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJFdmVudEJhc2UuZmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicnVuLWF0dGVtcHQudXBkYXRlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJSdW5BdHRlbXB0LFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyRXZlbnRCYXNlLmZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcIm5vZGUudXBkYXRlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJFeGVjdXRpb25Ob2RlLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyRXZlbnRCYXNlLmZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInN1YmFnZW50LnVwZGF0ZWRcIiksXG4gICAgcGF5bG9hZDogT3JjaGVzdHJhdGlvblYyU3ViYWdlbnQsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJFdmVudEJhc2UuZmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFscyhbXCJwcm92aWRlci1zZXNzaW9uLmF0dGFjaGVkXCIsIFwicHJvdmlkZXItc2Vzc2lvbi51cGRhdGVkXCJdKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclNlc3Npb24sXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJFdmVudEJhc2UuZmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicHJvdmlkZXItc2Vzc2lvbi5kZXRhY2hlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclNlc3Npb25EZXRhY2hlZCxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkV2ZW50QmFzZS5maWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJwcm92aWRlci10aHJlYWQudXBkYXRlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclRocmVhZCxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkV2ZW50QmFzZS5maWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJwcm92aWRlci10dXJuLnVwZGF0ZWRcIiksXG4gICAgcGF5bG9hZDogT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJUdXJuLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyRXZlbnRCYXNlLmZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInJ1bnRpbWUtcmVxdWVzdC51cGRhdGVkXCIpLFxuICAgIHBheWxvYWQ6IE9yY2hlc3RyYXRpb25WMlJ1bnRpbWVSZXF1ZXN0LFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyRXZlbnRCYXNlLmZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcIm1lc3NhZ2UudXBkYXRlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJDb252ZXJzYXRpb25NZXNzYWdlLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyRXZlbnRCYXNlLmZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInR1cm4taXRlbS51cGRhdGVkXCIpLFxuICAgIHBheWxvYWQ6IE9yY2hlc3RyYXRpb25WMlR1cm5JdGVtLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyRXZlbnRCYXNlLmZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInBsYW4udXBkYXRlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJQbGFuQXJ0aWZhY3QsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJFdmVudEJhc2UuZmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiY2hlY2twb2ludC1zY29wZS5jcmVhdGVkXCIpLFxuICAgIHBheWxvYWQ6IE9yY2hlc3RyYXRpb25WMkNoZWNrcG9pbnRTY29wZSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkV2ZW50QmFzZS5maWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJjaGVja3BvaW50LmNhcHR1cmVkXCIpLFxuICAgIHBheWxvYWQ6IE9yY2hlc3RyYXRpb25WMkNoZWNrcG9pbnQsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJFdmVudEJhc2UuZmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiY2hlY2twb2ludC5yb2xsYmFjay1yZXF1ZXN0ZWRcIiksXG4gICAgcGF5bG9hZDogT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludFJvbGxiYWNrUmVxdWVzdCxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkV2ZW50QmFzZS5maWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJjb250ZXh0LWhhbmRvZmYudXBkYXRlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJDb250ZXh0SGFuZG9mZixcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkV2ZW50QmFzZS5maWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJjb250ZXh0LXRyYW5zZmVyLmNyZWF0ZWRcIiksXG4gICAgcGF5bG9hZDogT3JjaGVzdHJhdGlvblYyQ29udGV4dFRyYW5zZmVyLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyRXZlbnRCYXNlLmZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcImNvbnRleHQtdHJhbnNmZXIudXBkYXRlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJDb250ZXh0VHJhbnNmZXIsXG4gIH0pLFxuXSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJEb21haW5FdmVudCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJEb21haW5FdmVudC5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyVGhyZWFkUHJvamVjdGlvbiA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0aHJlYWQ6IE9yY2hlc3RyYXRpb25WMkFwcFRocmVhZCxcbiAgcnVuczogU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMlJ1biksXG4gIGF0dGVtcHRzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyUnVuQXR0ZW1wdCksXG4gIG5vZGVzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyRXhlY3V0aW9uTm9kZSksXG4gIHN1YmFnZW50czogU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMlN1YmFnZW50KSxcbiAgcHJvdmlkZXJTZXNzaW9uczogU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyU2Vzc2lvbiksXG4gIHByb3ZpZGVyVGhyZWFkczogU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyVGhyZWFkKSxcbiAgcHJvdmlkZXJUdXJuczogU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyVHVybiksXG4gIHJ1bnRpbWVSZXF1ZXN0czogU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMlJ1bnRpbWVSZXF1ZXN0KSxcbiAgbWVzc2FnZXM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJDb252ZXJzYXRpb25NZXNzYWdlKSxcbiAgcGxhbnM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJQbGFuQXJ0aWZhY3QpLFxuICB0dXJuSXRlbXM6IHR1cm5JdGVtQXJyYXkoT3JjaGVzdHJhdGlvblYyVHVybkl0ZW0pLFxuICBjaGVja3BvaW50U2NvcGVzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludFNjb3BlKSxcbiAgY2hlY2twb2ludHM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJDaGVja3BvaW50KSxcbiAgY29udGV4dEhhbmRvZmZzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyQ29udGV4dEhhbmRvZmYpLFxuICBjb250ZXh0VHJhbnNmZXJzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyQ29udGV4dFRyYW5zZmVyKSxcbiAgdmlzaWJsZVR1cm5JdGVtczogcHJvamVjdGVkVHVybkl0ZW1BcnJheShcbiAgICBPcmNoZXN0cmF0aW9uVjJQcm9qZWN0ZWRUdXJuSXRlbSxcbiAgICBPcmNoZXN0cmF0aW9uVjJQcm9qZWN0ZWRUdXJuSXRlbS5tYXBGaWVsZHMoKGZpZWxkcykgPT4gKHtcbiAgICAgIC4uLmZpZWxkcyxcbiAgICAgIGl0ZW06IEZvcndhcmRDb21wYXRpYmxlVW5pb24oT3JjaGVzdHJhdGlvblYyVHVybkl0ZW0ubWVtYmVycywgXCJ0eXBlXCIpLFxuICAgIH0pKSxcbiAgKSxcbiAgdXBkYXRlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGMsXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlRocmVhZFByb2plY3Rpb24gPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyVGhyZWFkUHJvamVjdGlvbi5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyVGhyZWFkVHJhbnNjcmlwdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gIHRpdGxlOiBTY2hlbWEuU3RyaW5nLFxuICB1cGRhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0YyxcbiAgaXRlbXM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJQcm9qZWN0ZWRUdXJuSXRlbSksXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlRocmVhZFRyYW5zY3JpcHQgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyVGhyZWFkVHJhbnNjcmlwdC5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyU2hlbGxUaHJlYWRTdGF0dXMgPSBTY2hlbWEuVW5pb24oW1xuICBTY2hlbWEuTGl0ZXJhbChcImlkbGVcIiksXG4gIE9yY2hlc3RyYXRpb25WMlJ1blN0YXR1cyxcbl0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyU2hlbGxUaHJlYWRTdGF0dXMgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyU2hlbGxUaHJlYWRTdGF0dXMuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlBlbmRpbmdSdW50aW1lUmVxdWVzdFN1bW1hcnkgPSBTY2hlbWEuU3RydWN0KHtcbiAgaWQ6IFJ1bnRpbWVSZXF1ZXN0SWQsXG4gIGtpbmQ6IE9yY2hlc3RyYXRpb25WMlJ1bnRpbWVSZXF1ZXN0LmZpZWxkcy5raW5kLFxuICBjcmVhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0YyxcbiAgLyoqIEZhbHNlIGZvciBhc3luYyBxdWVzdGlvbnMgdGhlIHJ1biBrZWVwcyB3b3JraW5nIHBhc3QuIEFic2VudCBmcm9tIG9sZGVyIHNlcnZlcnMuICovXG4gIGJsb2NraW5nOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJQZW5kaW5nUnVudGltZVJlcXVlc3RTdW1tYXJ5ID1cbiAgdHlwZW9mIE9yY2hlc3RyYXRpb25WMlBlbmRpbmdSdW50aW1lUmVxdWVzdFN1bW1hcnkuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkxhdGVzdFZpc2libGVNZXNzYWdlU3VtbWFyeSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBpZDogTWVzc2FnZUlkLFxuICByb2xlOiBPcmNoZXN0cmF0aW9uVjJDb252ZXJzYXRpb25NZXNzYWdlLmZpZWxkcy5yb2xlLFxuICB0ZXh0OiBTY2hlbWEuU3RyaW5nLFxuICB1cGRhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Yyxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyTGF0ZXN0VmlzaWJsZU1lc3NhZ2VTdW1tYXJ5ID1cbiAgdHlwZW9mIE9yY2hlc3RyYXRpb25WMkxhdGVzdFZpc2libGVNZXNzYWdlU3VtbWFyeS5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyVGhyZWFkU2hlbGwgPSBTY2hlbWEuU3RydWN0KHtcbiAgLi4uT3JjaGVzdHJhdGlvblYyQ3JlYXRpb25GaWVsZHMsXG4gIGlkOiBUaHJlYWRJZCxcbiAgcHJvamVjdElkOiBQcm9qZWN0SWQsXG4gIHRpdGxlOiBTY2hlbWEuU3RyaW5nLFxuICBwcm92aWRlckluc3RhbmNlSWQ6IFByb3ZpZGVySW5zdGFuY2VJZCxcbiAgbW9kZWxTZWxlY3Rpb246IE1vZGVsU2VsZWN0aW9uLFxuICBydW50aW1lTW9kZTogUnVudGltZU1vZGUsXG4gIGludGVyYWN0aW9uTW9kZTogUHJvdmlkZXJJbnRlcmFjdGlvbk1vZGUsXG4gIGJyYW5jaDogU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICB3b3JrdHJlZVBhdGg6IFNjaGVtYS5OdWxsT3IoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgbGlua2VkUHVsbFJlcXVlc3Q6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFRocmVhZExpbmtlZFB1bGxSZXF1ZXN0KSksXG4gIHB1bGxSZXF1ZXN0czogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5BcnJheShUaHJlYWRQdWxsUmVxdWVzdExpbmspKSxcbiAgYnJhbmNoUHVsbFJlcXVlc3Q6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFRocmVhZExpbmtlZFB1bGxSZXF1ZXN0KSksXG4gIGxpbmVhZ2U6IE9yY2hlc3RyYXRpb25WMkFwcFRocmVhZExpbmVhZ2UsXG4gIGZvcmtlZEZyb206IFNjaGVtYS5OdWxsT3IoT3JjaGVzdHJhdGlvblYyQXBwVGhyZWFkLmZpZWxkcy5mb3JrZWRGcm9tKSxcbiAgYWN0aXZlUHJvdmlkZXJUaHJlYWRJZDogU2NoZW1hLk51bGxPcihQcm92aWRlclRocmVhZElkKSxcbiAgaGlzdG9yeU9yaWdpbjogU2NoZW1hLm9wdGlvbmFsKE9yY2hlc3RyYXRpb25WMlRocmVhZEhpc3RvcnlPcmlnaW4pLFxuICBsYXRlc3RSdW5JZDogU2NoZW1hLk51bGxPcihSdW5JZCksXG4gIGxhdGVzdFJ1blJlcXVlc3RlZEF0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGMpKSxcbiAgbGF0ZXN0UnVuU3RhcnRlZEF0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGMpKSxcbiAgbGF0ZXN0UnVuQ29tcGxldGVkQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0YykpLFxuICBsYXRlc3RSdW5TdG9wUmVxdWVzdGVkOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICAvKiogU3VwcHJlc3Mgcm91dGluZSBub3RpZmljYXRpb25zIGZvciBpZGxlIGNvbXBhY3Rpb247IGZhaWx1cmVzIHN0aWxsIG5vdGlmeS4gKi9cbiAgbGF0ZXN0UnVuU2lsZW50OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICBhY3RpdmVSdW5JZDogU2NoZW1hLk51bGxPcihSdW5JZCksXG4gIGFjdGl2aXR5UnVuU3RhcnRlZEF0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGMpKSxcbiAgYWN0aXZpdHlSdW5TdGF0dXM6IFNjaGVtYS5vcHRpb25hbChcbiAgICBTY2hlbWEuTnVsbE9yKFNjaGVtYS5MaXRlcmFscyhbXCJwcmVwYXJpbmdcIiwgXCJzdGFydGluZ1wiLCBcInJ1bm5pbmdcIiwgXCJ3YWl0aW5nXCJdKSksXG4gICksXG4gIGJsb2NrZWRPblRocmVhZFdhaXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQm9vbGVhbiksXG4gIHN0YXR1czogT3JjaGVzdHJhdGlvblYyU2hlbGxUaHJlYWRTdGF0dXMsXG4gIGxhc3RFcnJvcjogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZykpLFxuICBsYXN0RXJyb3JDbGFzczogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJGYWlsdXJlQ2xhc3MpKSxcbiAgbGFzdEVycm9yQ29kZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZykpLFxuICB1c2FnZUxpbWl0UmVzZXRBdDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoSXNvRGF0ZVRpbWUpKSxcbiAgcGVuZGluZ1J1bnRpbWVSZXF1ZXN0OiBTY2hlbWEuTnVsbE9yKE9yY2hlc3RyYXRpb25WMlBlbmRpbmdSdW50aW1lUmVxdWVzdFN1bW1hcnkpLFxuICAvKiogR3Vlc3QgbWVzc2FnZXMgd2FpdGluZyBmb3IgdGhlIG93bmVyIHRvIHNlbmQgb3IgZGlzbWlzcy4gQWJzZW50IGZyb20gb2xkZXIgc2VydmVycy4gKi9cbiAgcGVuZGluZ0d1ZXN0TWVzc2FnZUNvdW50OiBTY2hlbWEub3B0aW9uYWwoTm9uTmVnYXRpdmVJbnQpLFxuICBsYXRlc3RWaXNpYmxlTWVzc2FnZTogU2NoZW1hLk51bGxPcihPcmNoZXN0cmF0aW9uVjJMYXRlc3RWaXNpYmxlTWVzc2FnZVN1bW1hcnkpLFxuICBsYXRlc3RVc2VyTWVzc2FnZUF0OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0YyksXG4gIC8qKiBFeGNsdWRlcyB3YWtlcyBhbmQgYWdlbnQgbWVzc2FnZXMgdGhhdCBhZHZhbmNlIGxhdGVzdFVzZXJNZXNzYWdlQXQgdGhyb3VnaCB0aGUgdXNlciByb2xlLiAqL1xuICBsYXRlc3RVc2VyQXV0aG9yZWRNZXNzYWdlQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0YykpLFxuICBoYXNBY3Rpb25hYmxlUHJvcG9zZWRQbGFuOiBTY2hlbWEuQm9vbGVhbixcbiAgcGVuZGluZ0JhY2tncm91bmRUYXNrczogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJQZW5kaW5nQmFja2dyb3VuZFRhc2spKS5waXBlKFxuICAgIFNjaGVtYS53aXRoRGVjb2RpbmdEZWZhdWx0KEVmZmVjdC5zdWNjZWVkKFtdKSksXG4gICksXG4gIHByb3ZpZGVySW5zdGFuY2VIaXN0b3J5OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkFycmF5KFByb3ZpZGVySW5zdGFuY2VJZCkpLnBpcGUoXG4gICAgU2NoZW1hLndpdGhEZWNvZGluZ0RlZmF1bHQoRWZmZWN0LnN1Y2NlZWQoW10pKSxcbiAgKSxcbiAgZ29hbDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJHb2FsKSksXG4gIGl0ZW1Db3VudDogTm9uTmVnYXRpdmVJbnQsXG4gIHZpc2libGVJdGVtQ291bnQ6IE5vbk5lZ2F0aXZlSW50LFxuICBjcmVhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0YyxcbiAgdXBkYXRlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGMsXG4gIGFyY2hpdmVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjKSxcbiAgc2V0dGxlZE92ZXJyaWRlOiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5MaXRlcmFscyhbXCJzZXR0bGVkXCIsIFwiYWN0aXZlXCJdKSksXG4gIHNldHRsZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGMpLFxuICB1bnNldHRsZWRBdDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjKSksXG4gIHNub296ZWRVbnRpbDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjKSksXG4gIHNub296ZWRBdDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjKSksXG4gIGxpbWl0UmVjb3Zlcnk6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKE9yY2hlc3RyYXRpb25WMkxpbWl0UmVjb3ZlcnkpKSxcbiAgcGlubmVkQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0YykpLFxuICBhdXRvU2V0dGxlRGlzYWJsZWRBdDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjKSksXG4gIHBpbk9yZGVyS2V5OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmcpKSxcbiAgYWN0aXZlT3JkZXJLZXk6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFRyaW1tZWROb25FbXB0eVN0cmluZykpLFxuICBsYXN0VmlzaXRlZEF0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGMpKSxcbiAgb3BlbnM6IFNjaGVtYS5vcHRpb25hbChMZW5pZW50VGhyZWFkT3BlbnMpLFxuICB0aXRsZVJlZ2VuZXJhdGlvbjogU2NoZW1hLm9wdGlvbmFsKFxuICAgIFNjaGVtYS5OdWxsT3IoXG4gICAgICBTY2hlbWEuU3RydWN0KHtcbiAgICAgICAgcmVxdWVzdElkOiBDb21tYW5kSWQsXG4gICAgICAgIHN0YXJ0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjLFxuICAgICAgfSksXG4gICAgKSxcbiAgKSxcbiAgZGVsZXRlZEF0OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0YyksXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlRocmVhZFNoZWxsID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlRocmVhZFNoZWxsLlR5cGU7XG5cbmNvbnN0IExJVkVfU0hFTExfU1RBVFVTRVM6IFJlYWRvbmx5U2V0PE9yY2hlc3RyYXRpb25WMlNoZWxsVGhyZWFkU3RhdHVzPiA9IG5ldyBTZXQoW1xuICBcInF1ZXVlZFwiLFxuICBcInByZXBhcmluZ1wiLFxuICBcInN0YXJ0aW5nXCIsXG4gIFwicnVubmluZ1wiLFxuICBcIndhaXRpbmdcIixcbl0pO1xuXG4vKipcbiAqIEEgc3ViYWdlbnQgY2hpbGQgdGhhdCBjYW4gc3RpbGwgbmVlZCB0aGUgdXNlciBvciBob2xkIGl0cyBwYXJlbnQuIFNoZWxscyB0aGF0IG9taXQgaWRsZSBjaGlsZHJlblxuICoga2VlcCB0aGVzZSwgc28gZXZlcnkgcmVhZGVyIG9mIGxpdmUgY2hpbGQgcm93cyAocGVuZGluZyByZXF1ZXN0cywgd29ya2luZyBwYXJlbnRzLCBiYWNrZ3JvdW5kXG4gKiB3b3JrKSBzdGlsbCBmaW5kcyB0aGVtLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNMaXZlU3ViYWdlbnRTaGVsbChcbiAgdGhyZWFkOiBQaWNrPFxuICAgIE9yY2hlc3RyYXRpb25WMlRocmVhZFNoZWxsLFxuICAgIFwiYWN0aXZpdHlSdW5TdGF0dXNcIiB8IFwic3RhdHVzXCIgfCBcInBlbmRpbmdSdW50aW1lUmVxdWVzdFwiIHwgXCJwZW5kaW5nQmFja2dyb3VuZFRhc2tzXCJcbiAgPixcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgICh0aHJlYWQuYWN0aXZpdHlSdW5TdGF0dXMgPz8gbnVsbCkgIT09IG51bGwgfHxcbiAgICBMSVZFX1NIRUxMX1NUQVRVU0VTLmhhcyh0aHJlYWQuc3RhdHVzKSB8fFxuICAgIHRocmVhZC5wZW5kaW5nUnVudGltZVJlcXVlc3QgIT09IG51bGwgfHxcbiAgICAodGhyZWFkLnBlbmRpbmdCYWNrZ3JvdW5kVGFza3M/Lmxlbmd0aCA/PyAwKSA+IDBcbiAgKTtcbn1cblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlRocmVhZFNoZWxsU25hcHNob3QgPSBTY2hlbWEuU3RydWN0KHtcbiAgc2NoZW1hVmVyc2lvbjogUG9zaXRpdmVJbnQsXG4gIHNuYXBzaG90U2VxdWVuY2U6IE5vbk5lZ2F0aXZlSW50LFxuICB0aHJlYWRzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyVGhyZWFkU2hlbGwpLFxuICBhcmNoaXZlZFRocmVhZHM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJUaHJlYWRTaGVsbCksXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlRocmVhZFNoZWxsU25hcHNob3QgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyVGhyZWFkU2hlbGxTbmFwc2hvdC5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyU2hlbGxTbmFwc2hvdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICAuLi5PcmNoZXN0cmF0aW9uVjJUaHJlYWRTaGVsbFNuYXBzaG90LmZpZWxkcyxcbiAgcHJvamVjdHM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uUHJvamVjdFNoZWxsKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyU2hlbGxTbmFwc2hvdCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJTaGVsbFNuYXBzaG90LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJTaGVsbFN0cmVhbUl0ZW0gPSBTY2hlbWEuVW5pb24oW1xuICBTY2hlbWEuU3RydWN0KHtcbiAgICBraW5kOiBTY2hlbWEuTGl0ZXJhbChcInN5bmNocm9uaXplZFwiKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIGtpbmQ6IFNjaGVtYS5MaXRlcmFsKFwic25hcHNob3RcIiksXG4gICAgc25hcHNob3Q6IE9yY2hlc3RyYXRpb25WMlNoZWxsU25hcHNob3QsXG4gICAgcmVzb2x2ZWRSZXBvc2l0b3J5SWRlbnRpdHlSb290czogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5BcnJheShTY2hlbWEuU3RyaW5nKSksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICBraW5kOiBTY2hlbWEuTGl0ZXJhbChcInByb2plY3QudXBkYXRlZFwiKSxcbiAgICBzZXF1ZW5jZTogTm9uTmVnYXRpdmVJbnQsXG4gICAgcHJvamVjdDogT3JjaGVzdHJhdGlvblByb2plY3RTaGVsbCxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIGtpbmQ6IFNjaGVtYS5MaXRlcmFsKFwicHJvamVjdC5yZW1vdmVkXCIpLFxuICAgIHNlcXVlbmNlOiBOb25OZWdhdGl2ZUludCxcbiAgICBwcm9qZWN0SWQ6IFByb2plY3RJZCxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIGtpbmQ6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLnVwZGF0ZWRcIiksXG4gICAgc2VxdWVuY2U6IE5vbk5lZ2F0aXZlSW50LFxuICAgIGxvY2F0aW9uOiBTY2hlbWEuTGl0ZXJhbHMoW1wiYWN0aXZlXCIsIFwiYXJjaGl2ZVwiXSksXG4gICAgdGhyZWFkOiBPcmNoZXN0cmF0aW9uVjJUaHJlYWRTaGVsbCxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIGtpbmQ6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLnJlbW92ZWRcIiksXG4gICAgc2VxdWVuY2U6IE5vbk5lZ2F0aXZlSW50LFxuICAgIGxvY2F0aW9uOiBTY2hlbWEuTGl0ZXJhbHMoW1wiYWN0aXZlXCIsIFwiYXJjaGl2ZVwiXSksXG4gICAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyU2hlbGxTdHJlYW1JdGVtID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlNoZWxsU3RyZWFtSXRlbS5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyU3RvcmVkRXZlbnQgPSBTY2hlbWEuU3RydWN0KHtcbiAgc2VxdWVuY2U6IE5vbk5lZ2F0aXZlSW50LFxuICBjb21tYW5kSWQ6IFNjaGVtYS5OdWxsT3IoQ29tbWFuZElkKSxcbiAgZXZlbnQ6IE9yY2hlc3RyYXRpb25WMkRvbWFpbkV2ZW50LFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJTdG9yZWRFdmVudCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJTdG9yZWRFdmVudC5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyQXBwVGhyZWFkSnNvbiA9IE9yY2hlc3RyYXRpb25WMkFwcFRocmVhZC5tYXBGaWVsZHMoKGZpZWxkcykgPT4gKHtcbiAgLi4uZmllbGRzLFxuICBjcmVhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcsXG4gIHVwZGF0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyxcbiAgYXJjaGl2ZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nKSxcbiAgc2V0dGxlZEF0OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpLnBpcGUoXG4gICAgU2NoZW1hLndpdGhEZWNvZGluZ0RlZmF1bHQoRWZmZWN0LnN1Y2NlZWQobnVsbCkpLFxuICApLFxuICB1bnNldHRsZWRBdDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZykpLFxuICBzbm9vemVkVW50aWw6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpKSxcbiAgc25vb3plZEF0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nKSksXG4gIGxhc3RTbm9vemVXYWtlQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpKSxcbiAgcGlubmVkQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpKSxcbiAgYXV0b1NldHRsZURpc2FibGVkQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpKSxcbiAgbGFzdFZpc2l0ZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nKS5waXBlKFxuICAgIFNjaGVtYS53aXRoRGVjb2RpbmdEZWZhdWx0KEVmZmVjdC5zdWNjZWVkKG51bGwpKSxcbiAgKSxcbiAgdGl0bGVSZWdlbmVyYXRpb246IFNjaGVtYS5vcHRpb25hbChcbiAgICBTY2hlbWEuTnVsbE9yKFxuICAgICAgU2NoZW1hLlN0cnVjdCh7XG4gICAgICAgIHJlcXVlc3RJZDogQ29tbWFuZElkLFxuICAgICAgICBzdGFydGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcsXG4gICAgICB9KSxcbiAgICApLFxuICApLFxuICBkZWxldGVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyksXG59KSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJBcHBUaHJlYWRKc29uID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMkFwcFRocmVhZEpzb24uVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlJ1bkpzb24gPSBPcmNoZXN0cmF0aW9uVjJSdW4ubWFwRmllbGRzKChmaWVsZHMpID0+ICh7XG4gIC4uLmZpZWxkcyxcbiAgcmVxdWVzdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcsXG4gIHN0YXJ0ZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nKSxcbiAgY29tcGxldGVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyksXG4gIHdvcmtTdGFydGVkQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nKSxcbn0pKTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlJ1bkpzb24gPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyUnVuSnNvbi5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyUnVuQXR0ZW1wdEpzb24gPSBPcmNoZXN0cmF0aW9uVjJSdW5BdHRlbXB0Lm1hcEZpZWxkcygoZmllbGRzKSA9PiAoe1xuICAuLi5maWVsZHMsXG4gIHN0YXJ0ZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nKSxcbiAgY29tcGxldGVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyksXG59KSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJSdW5BdHRlbXB0SnNvbiA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJSdW5BdHRlbXB0SnNvbi5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyRXhlY3V0aW9uTm9kZUpzb24gPSBPcmNoZXN0cmF0aW9uVjJFeGVjdXRpb25Ob2RlLm1hcEZpZWxkcyhcbiAgKGZpZWxkcykgPT4gKHtcbiAgICAuLi5maWVsZHMsXG4gICAgc3RhcnRlZEF0OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpLFxuICAgIGNvbXBsZXRlZEF0OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpLFxuICB9KSxcbik7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJFeGVjdXRpb25Ob2RlSnNvbiA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJFeGVjdXRpb25Ob2RlSnNvbi5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyU3ViYWdlbnRKc29uID0gT3JjaGVzdHJhdGlvblYyU3ViYWdlbnQubWFwRmllbGRzKChmaWVsZHMpID0+ICh7XG4gIC4uLmZpZWxkcyxcbiAgc3RhcnRlZEF0OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpLFxuICBjb21wbGV0ZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nKSxcbiAgdXBkYXRlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nLFxufSkpO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyU3ViYWdlbnRKc29uID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlN1YmFnZW50SnNvbi5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludFNjb3BlSnNvbiA9IE9yY2hlc3RyYXRpb25WMkNoZWNrcG9pbnRTY29wZS5tYXBGaWVsZHMoXG4gIChmaWVsZHMpID0+ICh7XG4gICAgLi4uZmllbGRzLFxuICAgIGNyZWF0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyxcbiAgfSksXG4pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludFNjb3BlSnNvbiA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJDaGVja3BvaW50U2NvcGVKc29uLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclNlc3Npb25Kc29uID0gT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJTZXNzaW9uLm1hcEZpZWxkcyhcbiAgKGZpZWxkcykgPT4gKHtcbiAgICAuLi5maWVsZHMsXG4gICAgY3JlYXRlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nLFxuICAgIHVwZGF0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyxcbiAgfSksXG4pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJTZXNzaW9uSnNvbiA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclNlc3Npb25Kc29uLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclNlc3Npb25EZXRhY2hlZEpzb24gPVxuICBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclNlc3Npb25EZXRhY2hlZC5tYXBGaWVsZHMoKGZpZWxkcykgPT4gKHtcbiAgICAuLi5maWVsZHMsXG4gICAgZGV0YWNoZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyxcbiAgfSkpO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJTZXNzaW9uRGV0YWNoZWRKc29uID1cbiAgdHlwZW9mIE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyU2Vzc2lvbkRldGFjaGVkSnNvbi5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJUaHJlYWRKc29uID0gT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJUaHJlYWQubWFwRmllbGRzKFxuICAoZmllbGRzKSA9PiAoe1xuICAgIC4uLmZpZWxkcyxcbiAgICBjcmVhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcsXG4gICAgdXBkYXRlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nLFxuICB9KSxcbik7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclRocmVhZEpzb24gPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJUaHJlYWRKc29uLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJDb250ZXh0SGFuZG9mZkpzb24gPSBPcmNoZXN0cmF0aW9uVjJDb250ZXh0SGFuZG9mZi5tYXBGaWVsZHMoXG4gIChmaWVsZHMpID0+ICh7XG4gICAgLi4uZmllbGRzLFxuICAgIGNyZWF0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyxcbiAgICB1cGRhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcsXG4gIH0pLFxuKTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMkNvbnRleHRIYW5kb2ZmSnNvbiA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJDb250ZXh0SGFuZG9mZkpzb24uVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkNvbnRleHRUcmFuc2Zlckpzb24gPSBPcmNoZXN0cmF0aW9uVjJDb250ZXh0VHJhbnNmZXIubWFwRmllbGRzKFxuICAoZmllbGRzKSA9PiAoe1xuICAgIC4uLmZpZWxkcyxcbiAgICBjcmVhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcsXG4gICAgdXBkYXRlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nLFxuICAgIGNvbnN1bWVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyksXG4gIH0pLFxuKTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMkNvbnRleHRUcmFuc2Zlckpzb24gPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyQ29udGV4dFRyYW5zZmVySnNvbi5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJUdXJuSnNvbiA9IE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyVHVybi5tYXBGaWVsZHMoKGZpZWxkcykgPT4gKHtcbiAgLi4uZmllbGRzLFxuICBzdGFydGVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyksXG4gIGNvbXBsZXRlZEF0OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpLFxufSkpO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJUdXJuSnNvbiA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclR1cm5Kc29uLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJSdW50aW1lUmVxdWVzdEpzb24gPSBPcmNoZXN0cmF0aW9uVjJSdW50aW1lUmVxdWVzdC5tYXBGaWVsZHMoXG4gIChmaWVsZHMpID0+ICh7XG4gICAgLi4uZmllbGRzLFxuICAgIGNyZWF0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyxcbiAgICByZXNvbHZlZEF0OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpLFxuICB9KSxcbik7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJSdW50aW1lUmVxdWVzdEpzb24gPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyUnVudGltZVJlcXVlc3RKc29uLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJDb252ZXJzYXRpb25NZXNzYWdlSnNvbiA9IE9yY2hlc3RyYXRpb25WMkNvbnZlcnNhdGlvbk1lc3NhZ2UubWFwRmllbGRzKFxuICAoZmllbGRzKSA9PiAoe1xuICAgIC4uLmZpZWxkcyxcbiAgICBjcmVhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcsXG4gICAgdXBkYXRlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nLFxuICB9KSxcbik7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJDb252ZXJzYXRpb25NZXNzYWdlSnNvbiA9XG4gIHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJDb252ZXJzYXRpb25NZXNzYWdlSnNvbi5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludEpzb24gPSBPcmNoZXN0cmF0aW9uVjJDaGVja3BvaW50Lm1hcEZpZWxkcygoZmllbGRzKSA9PiAoe1xuICAuLi5maWVsZHMsXG4gIGNhcHR1cmVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcsXG59KSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJDaGVja3BvaW50SnNvbiA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJDaGVja3BvaW50SnNvbi5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludFJvbGxiYWNrUmVxdWVzdEpzb24gPVxuICBPcmNoZXN0cmF0aW9uVjJDaGVja3BvaW50Um9sbGJhY2tSZXF1ZXN0Lm1hcEZpZWxkcygoZmllbGRzKSA9PiAoe1xuICAgIC4uLmZpZWxkcyxcbiAgICByZXF1ZXN0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyxcbiAgfSkpO1xuXG5jb25zdCBPcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb25CYXNlRmllbGRzID0ge1xuICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUJhc2VGaWVsZHMsXG4gIHN0YXJ0ZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nKSxcbiAgY29tcGxldGVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyksXG4gIHVwZGF0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb24gPSBTY2hlbWEuVW5pb24oW1xuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb25CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwibm90aWZpY2F0aW9uXCIpLFxuICAgIC4uLk9yY2hlc3RyYXRpb25WMk5vdGlmaWNhdGlvbi5maWVsZHMsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb25CYXNlRmllbGRzLFxuICAgIC4uLk9yY2hlc3RyYXRpb25WMkNyZWF0aW9uRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidXNlcl9tZXNzYWdlXCIpLFxuICAgIG1lc3NhZ2VJZDogTWVzc2FnZUlkLFxuICAgIHNjaGVkdWxlZFRhc2tJZDogU2NoZW1hLm9wdGlvbmFsKFNjaGVkdWxlZFRhc2tJZCksXG4gICAgc2VuZGVyVGhyZWFkSWQ6IFNjaGVtYS5vcHRpb25hbChUaHJlYWRJZCksXG4gICAgaWRsZUNvbXBhY3Rpb246IFNjaGVtYS5vcHRpb25hbChPcmNoZXN0cmF0aW9uVjJJZGxlQ29tcGFjdGlvbiksXG4gICAgd29ya2Zsb3dTY3JpcHQ6IE9yY2hlc3RyYXRpb25WMkNvbnZlcnNhdGlvbk1lc3NhZ2UuZmllbGRzLndvcmtmbG93U2NyaXB0LFxuICAgIGlucHV0SW50ZW50OiBPcmNoZXN0cmF0aW9uVjJVc2VyTWVzc2FnZUlucHV0SW50ZW50LFxuICAgIHRleHQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgY29udGV4dDogU2NoZW1hLm9wdGlvbmFsKE9yY2hlc3RyYXRpb25NZXNzYWdlQ29udGV4dCksXG4gICAgYXR0YWNobWVudHM6IFNjaGVtYS5BcnJheShDaGF0QXR0YWNobWVudCksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb25CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiYXNzaXN0YW50X21lc3NhZ2VcIiksXG4gICAgbWVzc2FnZUlkOiBNZXNzYWdlSWQsXG4gICAgdGV4dDogU2NoZW1hLlN0cmluZyxcbiAgICBhdHRhY2htZW50czogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5BcnJheShDaGF0QXR0YWNobWVudCkpLFxuICAgIHN0cmVhbWluZzogU2NoZW1hLkJvb2xlYW4sXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb25CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicmVhc29uaW5nXCIpLFxuICAgIHRleHQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgc3RyZWFtaW5nOiBTY2hlbWEuQm9vbGVhbixcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMlR1cm5JdGVtSnNvbkJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJwcm9wb3NlZF9wbGFuXCIpLFxuICAgIHBsYW5JZDogUGxhbklkLFxuICAgIG1hcmtkb3duOiBTY2hlbWEuU3RyaW5nLFxuICAgIHN0cmVhbWluZzogU2NoZW1hLkJvb2xlYW4sXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb25CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidG9kb19saXN0XCIpLFxuICAgIHBsYW5JZDogUGxhbklkLFxuICAgIHN0ZXBzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyUGxhblN0ZXApLFxuICAgIGV4cGxhbmF0aW9uOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb25CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidXNlcl9pbnB1dF9yZXF1ZXN0XCIpLFxuICAgIHJlcXVlc3RJZDogUnVudGltZVJlcXVlc3RJZCxcbiAgICBxdWVzdGlvbnM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJVc2VySW5wdXRRdWVzdGlvbiksXG4gICAgcXVlc3Rpb25BbnN3ZXI6IFNjaGVtYS5vcHRpb25hbChVc2VySW5wdXRBdHRhY2htZW50QW5zd2VyUGF5bG9hZCksXG4gICAgcmVzcG9uc2VNb2RlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkxpdGVyYWwoXCJtZXNzYWdlXCIpKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMlR1cm5JdGVtSnNvbkJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJmaWxlX2NoYW5nZVwiKSxcbiAgICBmaWxlTmFtZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICAgIGFkZGl0aW9uczogU2NoZW1hLm9wdGlvbmFsKE5vbk5lZ2F0aXZlSW50KSxcbiAgICBkZWxldGlvbnM6IFNjaGVtYS5vcHRpb25hbChOb25OZWdhdGl2ZUludCksXG4gICAgZGlmZlN0cjogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxuICAgIG9sZFN0cjogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxuICAgIG5ld1N0cjogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxuICAgIGNoYW5nZXM6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyRmlsZUNoYW5nZURldGFpbCkpLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1Kc29uQmFzZUZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcImNvbW1hbmRfZXhlY3V0aW9uXCIpLFxuICAgIGlucHV0OiBTY2hlbWEuU3RyaW5nLFxuICAgIG91dHB1dDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxuICAgIC8qKiBTZXQgb24gdGhlIHdpcmUgd2hlbiBvdXRwdXQgd2FzIHdpdGhoZWxkOyBmZXRjaCBpdCB3aXRoIGdldFR1cm5JdGVtLiAqL1xuICAgIG91dHB1dE9taXR0ZWQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQm9vbGVhbiksXG4gICAgb3V0cHV0SW5kaWNhdGVzRmFpbHVyZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgICBleGl0Q29kZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5JbnQpLFxuICAgIC8qKiBTZXQgd2hlbiB0aGUgY29tbWFuZCBpcyBhIG1vbml0b3IsIHNvIGJhY2tncm91bmQgd29yayBsaXN0cyBpdCBhcyBhIG1vbml0b3IuICovXG4gICAgbW9uaXRvcjogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMlR1cm5JdGVtSnNvbkJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJmaWxlX3NlYXJjaFwiKSxcbiAgICBwYXR0ZXJuOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gICAgcmVzdWx0czogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJGaWxlU2VhcmNoUmVzdWx0KSksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb25CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwid2ViX3NlYXJjaFwiKSxcbiAgICBwYXR0ZXJuczogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5BcnJheShTY2hlbWEuU3RyaW5nKSksXG4gICAgcmVzdWx0czogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJXZWJTZWFyY2hSZXN1bHQpKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMlR1cm5JdGVtSnNvbkJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJhcHByb3ZhbF9yZXF1ZXN0XCIpLFxuICAgIHJlcXVlc3RJZDogUnVudGltZVJlcXVlc3RJZCxcbiAgICByZXF1ZXN0S2luZDogUHJvdmlkZXJSZXF1ZXN0S2luZCxcbiAgICBwcm9tcHQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgICByZWFzb246IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgICBmdWxsQWNjZXNzT3ZlcnJpZGU6IFNjaGVtYS5vcHRpb25hbChQcm92aWRlckFwcHJvdmFsRnVsbEFjY2Vzc092ZXJyaWRlKSxcbiAgICBhcHBOYW1lOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gICAgb3B0aW9uczogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5BcnJheShQcm92aWRlckFwcHJvdmFsT3B0aW9uKSksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb25CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiY2hlY2twb2ludFwiKSxcbiAgICBjaGVja3BvaW50SWQ6IENoZWNrcG9pbnRJZCxcbiAgICBzY29wZUlkOiBDaGVja3BvaW50U2NvcGVJZCxcbiAgICBmaWxlczogU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMkNoZWNrcG9pbnRGaWxlU3VtbWFyeSksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb25CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicnVuX2ludGVycnVwdF9yZXF1ZXN0XCIpLFxuICAgIG1lc3NhZ2U6IFNjaGVtYS5TdHJpbmcsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb25CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicnVuX2ludGVycnVwdF9yZXN1bHRcIiksXG4gICAgbWVzc2FnZTogU2NoZW1hLlN0cmluZyxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMlR1cm5JdGVtSnNvbkJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJzeXN0ZW1fbm90aWNlXCIpLFxuICAgIG1lc3NhZ2U6IFNjaGVtYS5TdHJpbmcsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb25CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiZXJyb3JcIiksXG4gICAgZmFpbHVyZTogT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJGYWlsdXJlLFxuICAgIHJldHJ5OiBTY2hlbWEub3B0aW9uYWwoT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJSZXRyeSksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb25CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiY29tcGFjdGlvblwiKSxcbiAgICBkcml2ZXI6IFNjaGVtYS5OdWxsT3IoUHJvdmlkZXJEcml2ZXJLaW5kKSxcbiAgICBzdW1tYXJ5OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gICAgYmVmb3JlVG9rZW5Db3VudDogU2NoZW1hLm9wdGlvbmFsKE5vbk5lZ2F0aXZlSW50KSxcbiAgICBhZnRlclRva2VuQ291bnQ6IFNjaGVtYS5vcHRpb25hbChOb25OZWdhdGl2ZUludCksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb25CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiaGFuZG9mZlwiKSxcbiAgICBjb250ZXh0SGFuZG9mZklkOiBDb250ZXh0SGFuZG9mZklkLFxuICAgIGZyb21Qcm92aWRlclRocmVhZElkczogU2NoZW1hLkFycmF5KFByb3ZpZGVyVGhyZWFkSWQpLFxuICAgIHRvUHJvdmlkZXJUaHJlYWRJZDogUHJvdmlkZXJUaHJlYWRJZCxcbiAgICBmcm9tUHJvdmlkZXJJbnN0YW5jZUlkczogU2NoZW1hLkFycmF5KFByb3ZpZGVySW5zdGFuY2VJZCksXG4gICAgdG9Qcm92aWRlckluc3RhbmNlSWQ6IFByb3ZpZGVySW5zdGFuY2VJZCxcbiAgICBmcm9tTW9kZWxTZWxlY3Rpb25zOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkFycmF5KE1vZGVsU2VsZWN0aW9uKSksXG4gICAgdG9Nb2RlbDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxuICAgIHN0cmF0ZWd5OiBTY2hlbWEuTGl0ZXJhbHMoW1xuICAgICAgXCJkZWx0YV9zaW5jZV90YXJnZXRfbGFzdF9zZWVuXCIsXG4gICAgICBcImZvcmtfZGVsdGFfc3VtbWFyeVwiLFxuICAgICAgXCJmdWxsX3RocmVhZF9zdW1tYXJ5XCIsXG4gICAgICBcImNoZWNrcG9pbnRfc3VtbWFyeVwiLFxuICAgICAgXCJtYW51YWxfY29udGV4dFwiLFxuICAgIF0pLFxuICAgIHN1bW1hcnk6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMlR1cm5JdGVtSnNvbkJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJmb3JrXCIpLFxuICAgIHNvdXJjZTogU2NoZW1hLlVuaW9uKFtcbiAgICAgIFNjaGVtYS5TdHJ1Y3QoeyB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInJ1blwiKSwgdGhyZWFkSWQ6IFRocmVhZElkLCBydW5JZDogUnVuSWQgfSksXG4gICAgICBTY2hlbWEuU3RydWN0KHsgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJub2RlXCIpLCBub2RlSWQ6IE5vZGVJZCB9KSxcbiAgICAgIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgICAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInByb3ZpZGVyX3RocmVhZFwiKSxcbiAgICAgICAgcHJvdmlkZXJUaHJlYWRJZDogUHJvdmlkZXJUaHJlYWRJZCxcbiAgICAgICAgcHJvdmlkZXJUdXJuSWQ6IFNjaGVtYS5vcHRpb25hbChQcm92aWRlclR1cm5JZCksXG4gICAgICB9KSxcbiAgICBdKSxcbiAgICB0YXJnZXRUaHJlYWRJZDogVGhyZWFkSWQsXG4gICAgcHJvdmlkZXJUaHJlYWRJZDogU2NoZW1hLm9wdGlvbmFsKFByb3ZpZGVyVGhyZWFkSWQpLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1Kc29uQmFzZUZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInRocmVhZF9jcmVhdGVkXCIpLFxuICAgIHRhcmdldFRocmVhZElkOiBUaHJlYWRJZCxcbiAgICB0YXJnZXRSdW5JZDogU2NoZW1hLk51bGxPcihSdW5JZCksXG4gICAgdGFyZ2V0UHJvdmlkZXJJbnN0YW5jZUlkOiBQcm92aWRlckluc3RhbmNlSWQsXG4gICAgdGFyZ2V0TW9kZWw6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMlR1cm5JdGVtSnNvbkJhc2VGaWVsZHMsXG4gICAgLi4uT3JjaGVzdHJhdGlvblYyU2VjcmV0UmVxdWVzdEZpZWxkcyxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMlR1cm5JdGVtSnNvbkJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJzdWJhZ2VudFwiKSxcbiAgICBzdWJhZ2VudElkOiBOb2RlSWQsXG4gICAgb3JpZ2luOiBTY2hlbWEuTGl0ZXJhbHMoW1wicHJvdmlkZXJfbmF0aXZlXCIsIFwiYXBwX293bmVkXCJdKSxcbiAgICBkcml2ZXI6IFByb3ZpZGVyRHJpdmVyS2luZCxcbiAgICBwcm92aWRlckluc3RhbmNlSWQ6IFByb3ZpZGVySW5zdGFuY2VJZCxcbiAgICBjaGlsZFRocmVhZElkOiBTY2hlbWEuTnVsbE9yKFRocmVhZElkKSxcbiAgICBwcm9tcHQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgcHJvZ3Jlc3M6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgICByZXN1bHQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLlN0cmluZyksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb25CYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiZHluYW1pY190b29sXCIpLFxuICAgIHRvb2xOYW1lOiBTY2hlbWEuTnVsbE9yKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gICAgdmlld2VkSW1hZ2VQYXRoOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgICBpbnB1dDogU2NoZW1hLlVua25vd24sXG4gICAgb3V0cHV0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlVua25vd24pLFxuICAgIC8qKiBTZXQgb24gdGhlIHdpcmUgd2hlbiBvdXRwdXQgd2FzIHdpdGhoZWxkOyBmZXRjaCBpdCB3aXRoIGdldFR1cm5JdGVtLiAqL1xuICAgIG91dHB1dE9taXR0ZWQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQm9vbGVhbiksXG4gIH0pLFxuXSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJUdXJuSXRlbUpzb24gPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1Kc29uLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJQcm9qZWN0ZWRUdXJuSXRlbUpzb24gPSBPcmNoZXN0cmF0aW9uVjJQcm9qZWN0ZWRUdXJuSXRlbS5tYXBGaWVsZHMoXG4gIChmaWVsZHMpID0+ICh7XG4gICAgLi4uZmllbGRzLFxuICAgIGl0ZW06IE9yY2hlc3RyYXRpb25WMlR1cm5JdGVtSnNvbixcbiAgfSksXG4pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUHJvamVjdGVkVHVybkl0ZW1Kc29uID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlByb2plY3RlZFR1cm5JdGVtSnNvbi5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyVGhyZWFkUHJvamVjdGlvbkpzb24gPSBPcmNoZXN0cmF0aW9uVjJUaHJlYWRQcm9qZWN0aW9uLm1hcEZpZWxkcyhcbiAgKGZpZWxkcykgPT4gKHtcbiAgICAuLi5maWVsZHMsXG4gICAgdGhyZWFkOiBPcmNoZXN0cmF0aW9uVjJBcHBUaHJlYWRKc29uLFxuICAgIHJ1bnM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJSdW5Kc29uKSxcbiAgICBhdHRlbXB0czogU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMlJ1bkF0dGVtcHRKc29uKSxcbiAgICBub2RlczogU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMkV4ZWN1dGlvbk5vZGVKc29uKSxcbiAgICBzdWJhZ2VudHM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJTdWJhZ2VudEpzb24pLFxuICAgIHByb3ZpZGVyU2Vzc2lvbnM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJQcm92aWRlclNlc3Npb25Kc29uKSxcbiAgICBwcm92aWRlclRocmVhZHM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJQcm92aWRlclRocmVhZEpzb24pLFxuICAgIHByb3ZpZGVyVHVybnM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJQcm92aWRlclR1cm5Kc29uKSxcbiAgICBydW50aW1lUmVxdWVzdHM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJSdW50aW1lUmVxdWVzdEpzb24pLFxuICAgIG1lc3NhZ2VzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyQ29udmVyc2F0aW9uTWVzc2FnZUpzb24pLFxuICAgIHBsYW5zOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyUGxhbkFydGlmYWN0KSxcbiAgICB0dXJuSXRlbXM6IHR1cm5JdGVtQXJyYXkoT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1Kc29uKSxcbiAgICBjaGVja3BvaW50U2NvcGVzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyQ2hlY2twb2ludFNjb3BlSnNvbiksXG4gICAgY2hlY2twb2ludHM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJDaGVja3BvaW50SnNvbiksXG4gICAgY29udGV4dEhhbmRvZmZzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyQ29udGV4dEhhbmRvZmZKc29uKSxcbiAgICBjb250ZXh0VHJhbnNmZXJzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyQ29udGV4dFRyYW5zZmVySnNvbiksXG4gICAgdmlzaWJsZVR1cm5JdGVtczogcHJvamVjdGVkVHVybkl0ZW1BcnJheShcbiAgICAgIE9yY2hlc3RyYXRpb25WMlByb2plY3RlZFR1cm5JdGVtSnNvbixcbiAgICAgIE9yY2hlc3RyYXRpb25WMlByb2plY3RlZFR1cm5JdGVtSnNvbi5tYXBGaWVsZHMoKGZpZWxkcykgPT4gKHtcbiAgICAgICAgLi4uZmllbGRzLFxuICAgICAgICBpdGVtOiBGb3J3YXJkQ29tcGF0aWJsZVVuaW9uKE9yY2hlc3RyYXRpb25WMlR1cm5JdGVtSnNvbi5tZW1iZXJzLCBcInR5cGVcIiksXG4gICAgICB9KSksXG4gICAgKSxcbiAgICB1cGRhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcsXG4gIH0pLFxuKTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlRocmVhZFByb2plY3Rpb25Kc29uID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlRocmVhZFByb2plY3Rpb25Kc29uLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJQZW5kaW5nUnVudGltZVJlcXVlc3RTdW1tYXJ5SnNvbiA9XG4gIE9yY2hlc3RyYXRpb25WMlBlbmRpbmdSdW50aW1lUmVxdWVzdFN1bW1hcnkubWFwRmllbGRzKChmaWVsZHMpID0+ICh7XG4gICAgLi4uZmllbGRzLFxuICAgIGNyZWF0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyxcbiAgfSkpO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUGVuZGluZ1J1bnRpbWVSZXF1ZXN0U3VtbWFyeUpzb24gPVxuICB0eXBlb2YgT3JjaGVzdHJhdGlvblYyUGVuZGluZ1J1bnRpbWVSZXF1ZXN0U3VtbWFyeUpzb24uVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkxhdGVzdFZpc2libGVNZXNzYWdlU3VtbWFyeUpzb24gPVxuICBPcmNoZXN0cmF0aW9uVjJMYXRlc3RWaXNpYmxlTWVzc2FnZVN1bW1hcnkubWFwRmllbGRzKChmaWVsZHMpID0+ICh7XG4gICAgLi4uZmllbGRzLFxuICAgIHVwZGF0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyxcbiAgfSkpO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyTGF0ZXN0VmlzaWJsZU1lc3NhZ2VTdW1tYXJ5SnNvbiA9XG4gIHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJMYXRlc3RWaXNpYmxlTWVzc2FnZVN1bW1hcnlKc29uLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJUaHJlYWRTaGVsbEpzb24gPSBPcmNoZXN0cmF0aW9uVjJUaHJlYWRTaGVsbC5tYXBGaWVsZHMoKGZpZWxkcykgPT4gKHtcbiAgLi4uZmllbGRzLFxuICBsYXRlc3RSdW5SZXF1ZXN0ZWRBdDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZykpLFxuICBsYXRlc3RSdW5TdGFydGVkQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpKSxcbiAgbGF0ZXN0UnVuQ29tcGxldGVkQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpKSxcbiAgYWN0aXZpdHlSdW5TdGFydGVkQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpKSxcbiAgcGVuZGluZ1J1bnRpbWVSZXF1ZXN0OiBTY2hlbWEuTnVsbE9yKE9yY2hlc3RyYXRpb25WMlBlbmRpbmdSdW50aW1lUmVxdWVzdFN1bW1hcnlKc29uKSxcbiAgbGF0ZXN0VmlzaWJsZU1lc3NhZ2U6IFNjaGVtYS5OdWxsT3IoT3JjaGVzdHJhdGlvblYyTGF0ZXN0VmlzaWJsZU1lc3NhZ2VTdW1tYXJ5SnNvbiksXG4gIGxhdGVzdFVzZXJNZXNzYWdlQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyksXG4gIGxhdGVzdFVzZXJBdXRob3JlZE1lc3NhZ2VBdDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZykpLFxuICBjcmVhdGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcsXG4gIHVwZGF0ZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyxcbiAgYXJjaGl2ZWRBdDogU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nKSxcbiAgc2V0dGxlZEF0OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpLFxuICB1bnNldHRsZWRBdDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZykpLFxuICBzbm9vemVkVW50aWw6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpKSxcbiAgc25vb3plZEF0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nKSksXG4gIHBpbm5lZEF0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nKSksXG4gIGF1dG9TZXR0bGVEaXNhYmxlZEF0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nKSksXG4gIGxhc3RWaXNpdGVkQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcpKSxcbiAgdGl0bGVSZWdlbmVyYXRpb246IFNjaGVtYS5vcHRpb25hbChcbiAgICBTY2hlbWEuTnVsbE9yKFxuICAgICAgU2NoZW1hLlN0cnVjdCh7XG4gICAgICAgIHJlcXVlc3RJZDogQ29tbWFuZElkLFxuICAgICAgICBzdGFydGVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcsXG4gICAgICB9KSxcbiAgICApLFxuICApLFxuICBkZWxldGVkQXQ6IFNjaGVtYS5OdWxsT3IoU2NoZW1hLkRhdGVUaW1lVXRjRnJvbVN0cmluZyksXG59KSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJUaHJlYWRTaGVsbEpzb24gPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyVGhyZWFkU2hlbGxKc29uLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJTaGVsbFNuYXBzaG90SnNvbiA9IE9yY2hlc3RyYXRpb25WMlNoZWxsU25hcHNob3QubWFwRmllbGRzKFxuICAoZmllbGRzKSA9PiAoe1xuICAgIC4uLmZpZWxkcyxcbiAgICB0aHJlYWRzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblYyVGhyZWFkU2hlbGxKc29uKSxcbiAgICBhcmNoaXZlZFRocmVhZHM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJUaHJlYWRTaGVsbEpzb24pLFxuICB9KSxcbik7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJTaGVsbFNuYXBzaG90SnNvbiA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJTaGVsbFNuYXBzaG90SnNvbi5UeXBlO1xuXG5jb25zdCBPcmNoZXN0cmF0aW9uVjJKc29uRXZlbnRCYXNlRmllbGRzID0ge1xuICAuLi5PcmNoZXN0cmF0aW9uVjJFdmVudEJhc2UuZmllbGRzLFxuICBvY2N1cnJlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGNGcm9tU3RyaW5nLFxufSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlJhd1Byb3ZpZGVyRXZlbnRKc29uID0gT3JjaGVzdHJhdGlvblYyUmF3UHJvdmlkZXJFdmVudC5tYXBGaWVsZHMoXG4gIChmaWVsZHMpID0+ICh7XG4gICAgLi4uZmllbGRzLFxuICAgIG9ic2VydmVkQXQ6IFNjaGVtYS5EYXRlVGltZVV0Y0Zyb21TdHJpbmcsXG4gIH0pLFxuKTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlJhd1Byb3ZpZGVyRXZlbnRKc29uID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlJhd1Byb3ZpZGVyRXZlbnRKc29uLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJEb21haW5FdmVudEpzb24gPSBTY2hlbWEuVW5pb24oW1xuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJKc29uRXZlbnRCYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLmNyZWF0ZWRcIiksXG4gICAgcGF5bG9hZDogT3JjaGVzdHJhdGlvblYyQXBwVGhyZWFkSnNvbixcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkpzb25FdmVudEJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWxzKFtcbiAgICAgIFwidGhyZWFkLmFyY2hpdmVkXCIsXG4gICAgICBcInRocmVhZC51bmFyY2hpdmVkXCIsXG4gICAgICBcInRocmVhZC5kZWxldGVkXCIsXG4gICAgICBcInRocmVhZC5zZXR0bGVkXCIsXG4gICAgICBcInRocmVhZC51bnNldHRsZWRcIixcbiAgICAgIFwidGhyZWFkLnNub296ZWRcIixcbiAgICAgIFwidGhyZWFkLnVuc25vb3plZFwiLFxuICAgICAgXCJ0aHJlYWQucGlubmVkXCIsXG4gICAgICBcInRocmVhZC5hdXRvLXNldHRsZS1zZXRcIixcbiAgICAgIFwidGhyZWFkLnVucGlubmVkXCIsXG4gICAgICBcInRocmVhZC5waW4tcmVvcmRlcmVkXCIsXG4gICAgICBcInRocmVhZC5hY3RpdmUtcmVvcmRlcmVkXCIsXG4gICAgICBcInRocmVhZC52aXNpdGVkXCIsXG4gICAgICBcInRocmVhZC5tYXJrZWQtdW5yZWFkXCIsXG4gICAgICBcInRocmVhZC5wdWxsLXJlcXVlc3Qtc3luY2VkXCIsXG4gICAgICBcInRocmVhZC5tZXRhZGF0YS11cGRhdGVkXCIsXG4gICAgICBcInRocmVhZC5ydW50aW1lLW1vZGUtdXBkYXRlZFwiLFxuICAgICAgXCJ0aHJlYWQuaW50ZXJhY3Rpb24tbW9kZS11cGRhdGVkXCIsXG4gICAgICBcInRocmVhZC5tb2RlbC1zZWxlY3Rpb24tdXBkYXRlZFwiLFxuICAgICAgXCJ0aHJlYWQucHJvdmlkZXItc3dpdGNoZWRcIixcbiAgICAgIFwidGhyZWFkLmd1ZXN0LXNoYXJlLXVwZGF0ZWRcIixcbiAgICBdKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJBcHBUaHJlYWRKc29uLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYySnNvbkV2ZW50QmFzZUZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInRocmVhZC5wdWxsLXJlcXVlc3QtbGluay11cGRhdGVkXCIpLFxuICAgIHBheWxvYWQ6IFRocmVhZFB1bGxSZXF1ZXN0TGluayxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkpzb25FdmVudEJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJydW4uY3JlYXRlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJSdW5Kc29uLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYySnNvbkV2ZW50QmFzZUZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInJ1bi51cGRhdGVkXCIpLFxuICAgIHBheWxvYWQ6IE9yY2hlc3RyYXRpb25WMlJ1bkpzb24sXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJKc29uRXZlbnRCYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicnVuLmJhY2tncm91bmQtd29yay1jYW5jZWxsZWRcIiksXG4gICAgcGF5bG9hZDogT3JjaGVzdHJhdGlvblYyUnVuQmFja2dyb3VuZFdvcmtDYW5jZWxsZWQsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJKc29uRXZlbnRCYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicnVuLWF0dGVtcHQuY3JlYXRlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJSdW5BdHRlbXB0SnNvbixcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkpzb25FdmVudEJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJydW4tYXR0ZW1wdC51cGRhdGVkXCIpLFxuICAgIHBheWxvYWQ6IE9yY2hlc3RyYXRpb25WMlJ1bkF0dGVtcHRKc29uLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYySnNvbkV2ZW50QmFzZUZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcIm5vZGUudXBkYXRlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJFeGVjdXRpb25Ob2RlSnNvbixcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkpzb25FdmVudEJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJzdWJhZ2VudC51cGRhdGVkXCIpLFxuICAgIHBheWxvYWQ6IE9yY2hlc3RyYXRpb25WMlN1YmFnZW50SnNvbixcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkpzb25FdmVudEJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWxzKFtcInByb3ZpZGVyLXNlc3Npb24uYXR0YWNoZWRcIiwgXCJwcm92aWRlci1zZXNzaW9uLnVwZGF0ZWRcIl0pLFxuICAgIHBheWxvYWQ6IE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyU2Vzc2lvbkpzb24sXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJKc29uRXZlbnRCYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicHJvdmlkZXItc2Vzc2lvbi5kZXRhY2hlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclNlc3Npb25EZXRhY2hlZEpzb24sXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJKc29uRXZlbnRCYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicHJvdmlkZXItdGhyZWFkLnVwZGF0ZWRcIiksXG4gICAgcGF5bG9hZDogT3JjaGVzdHJhdGlvblYyUHJvdmlkZXJUaHJlYWRKc29uLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYySnNvbkV2ZW50QmFzZUZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInByb3ZpZGVyLXR1cm4udXBkYXRlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlclR1cm5Kc29uLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYySnNvbkV2ZW50QmFzZUZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInJ1bnRpbWUtcmVxdWVzdC51cGRhdGVkXCIpLFxuICAgIHBheWxvYWQ6IE9yY2hlc3RyYXRpb25WMlJ1bnRpbWVSZXF1ZXN0SnNvbixcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkpzb25FdmVudEJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJtZXNzYWdlLnVwZGF0ZWRcIiksXG4gICAgcGF5bG9hZDogT3JjaGVzdHJhdGlvblYyQ29udmVyc2F0aW9uTWVzc2FnZUpzb24sXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJKc29uRXZlbnRCYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidHVybi1pdGVtLnVwZGF0ZWRcIiksXG4gICAgcGF5bG9hZDogT3JjaGVzdHJhdGlvblYyVHVybkl0ZW1Kc29uLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgLi4uT3JjaGVzdHJhdGlvblYySnNvbkV2ZW50QmFzZUZpZWxkcyxcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInBsYW4udXBkYXRlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJQbGFuQXJ0aWZhY3QsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJKc29uRXZlbnRCYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiY2hlY2twb2ludC1zY29wZS5jcmVhdGVkXCIpLFxuICAgIHBheWxvYWQ6IE9yY2hlc3RyYXRpb25WMkNoZWNrcG9pbnRTY29wZUpzb24sXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJKc29uRXZlbnRCYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiY2hlY2twb2ludC5jYXB0dXJlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJDaGVja3BvaW50SnNvbixcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkpzb25FdmVudEJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJjaGVja3BvaW50LnJvbGxiYWNrLXJlcXVlc3RlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJDaGVja3BvaW50Um9sbGJhY2tSZXF1ZXN0SnNvbixcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIC4uLk9yY2hlc3RyYXRpb25WMkpzb25FdmVudEJhc2VGaWVsZHMsXG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJjb250ZXh0LWhhbmRvZmYudXBkYXRlZFwiKSxcbiAgICBwYXlsb2FkOiBPcmNoZXN0cmF0aW9uVjJDb250ZXh0SGFuZG9mZkpzb24sXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJKc29uRXZlbnRCYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiY29udGV4dC10cmFuc2Zlci5jcmVhdGVkXCIpLFxuICAgIHBheWxvYWQ6IE9yY2hlc3RyYXRpb25WMkNvbnRleHRUcmFuc2Zlckpzb24sXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICAuLi5PcmNoZXN0cmF0aW9uVjJKc29uRXZlbnRCYXNlRmllbGRzLFxuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiY29udGV4dC10cmFuc2Zlci51cGRhdGVkXCIpLFxuICAgIHBheWxvYWQ6IE9yY2hlc3RyYXRpb25WMkNvbnRleHRUcmFuc2Zlckpzb24sXG4gIH0pLFxuXSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJEb21haW5FdmVudEpzb24gPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyRG9tYWluRXZlbnRKc29uLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJTdG9yZWRFdmVudEpzb24gPSBTY2hlbWEuU3RydWN0KHtcbiAgc2VxdWVuY2U6IE5vbk5lZ2F0aXZlSW50LFxuICBjb21tYW5kSWQ6IFNjaGVtYS5OdWxsT3IoQ29tbWFuZElkKSxcbiAgZXZlbnQ6IE9yY2hlc3RyYXRpb25WMkRvbWFpbkV2ZW50SnNvbixcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyU3RvcmVkRXZlbnRKc29uID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlN0b3JlZEV2ZW50SnNvbi5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyQ29tbWFuZCA9IFNjaGVtYS5VbmlvbihbXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLnN0b3BcIiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICAgIHJlYXNvbjogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5TdHJpbmcpLFxuICAgIC8qKlxuICAgICAqIEZhbHNlIHdoZW4gdGhlIGNhbGxlciBzdG9wcyB0aGUgdGhyZWFkJ3MgZGVsZWdhdGVkIHRhc2tzIGl0c2VsZiwgYXMgdGhlIHNlcnZlcidzIHRyZWUgd2Fsa3NcbiAgICAgKiBkbyB1bmRlciB0aGVpciBjYWxsZXIncyBkaXNwYXRjaCBsaW1pdC4gT3RoZXJ3aXNlIFN0b3AgYWxzbyBzdG9wcyBldmVyeSB0YXNrIHVuZGVyIHRoZSB0aHJlYWQuXG4gICAgICovXG4gICAgc3RvcERlbGVnYXRlZFRhc2tzOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQuY3JlYXRlXCIpLFxuICAgIC4uLk9yY2hlc3RyYXRpb25WMkNyZWF0aW9uRmllbGRzLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBwcm9qZWN0SWQ6IFByb2plY3RJZCxcbiAgICB0aXRsZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICAgIG1vZGVsU2VsZWN0aW9uOiBNb2RlbFNlbGVjdGlvbixcbiAgICBydW50aW1lTW9kZTogUnVudGltZU1vZGUsXG4gICAgaW50ZXJhY3Rpb25Nb2RlOiBQcm92aWRlckludGVyYWN0aW9uTW9kZSxcbiAgICBicmFuY2g6IFNjaGVtYS5OdWxsT3IoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgICB3b3JrdHJlZVBhdGg6IFNjaGVtYS5OdWxsT3IoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgICBpbXBvcnRlZE5hdGl2ZVRocmVhZDogU2NoZW1hLm9wdGlvbmFsKFxuICAgICAgU2NoZW1hLlN0cnVjdCh7XG4gICAgICAgIHJlZjogU2NoZW1hLlN0cnVjdCh7XG4gICAgICAgICAgZHJpdmVyOiBQcm92aWRlckRyaXZlcktpbmQsXG4gICAgICAgICAgbmF0aXZlSWQ6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgICAgICAgICBzdHJlbmd0aDogU2NoZW1hLkxpdGVyYWwoXCJzdHJvbmdcIiksXG4gICAgICAgIH0pLFxuICAgICAgICBtZXRhZGF0YTogU2NoZW1hLm9wdGlvbmFsKE9yY2hlc3RyYXRpb25WMlByb3ZpZGVyVGhyZWFkTmF0aXZlTWV0YWRhdGEpLFxuICAgICAgfSksXG4gICAgKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLmFyY2hpdmVcIiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQuZ3Vlc3Qtc2hhcmUuY2xvc2VcIiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQuZ3Vlc3QtbWVzc2FnZS5kaXNtaXNzXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBndWVzdE1lc3NhZ2VJZDogR3Vlc3RNZXNzYWdlSWQsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInRocmVhZC51bmFyY2hpdmVcIiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQuZGVsZXRlXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLnNldHRsZVwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgc2V0dGxlZEF0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkRhdGVUaW1lVXRjKSxcbiAgfSksXG4gIC8qKiBSZWplY3RzIGNoYW5nZXMgc2luY2Ugc25hcHNob3RBdCBvciBhbnkgZXhwbGljaXQgc2V0dGxlZCBvdmVycmlkZSB0byBwcmVzZXJ2ZSB1c2VyIGFjdGlvbnMuICovXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLmF1dG8tc2V0dGxlXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBzbmFwc2hvdEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGMsXG4gICAgc2V0dGxlZEF0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkRhdGVUaW1lVXRjKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLnVuc2V0dGxlXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICByZWFzb246IFNjaGVtYS5MaXRlcmFsKFwidXNlclwiKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLnNub296ZVwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgc25vb3plZFVudGlsOiBJc29EYXRlVGltZSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLnVuc25vb3plXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICByZWFzb246IFNjaGVtYS5MaXRlcmFsKFwidXNlclwiKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLmF1dG8tc2V0dGxlLnNldFwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgZW5hYmxlZDogU2NoZW1hLkJvb2xlYW4sXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInRocmVhZC5waW5cIiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICAgIG9yZGVyS2V5OiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLnVucGluXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLnBpbi5yZW9yZGVyXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBvcmRlcktleTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQuYWN0aXZlLnJlb3JkZXJcIiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICAgIG9yZGVyS2V5OiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInRocmVhZC52aXNpdFwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgdmlzaXRlZEF0OiBJc29EYXRlVGltZSxcbiAgICAvLyBUaGUgdXNlciBvcGVuZWQgdGhlIHRocmVhZCwgYXMgb3Bwb3NlZCB0byBuZXcgYWN0aXZpdHkgb24gYW4gb3BlbiBvbmUuXG4gICAgLy8gT2xkZXIgc2VydmVycyBpZ25vcmUgYm90aCBmaWVsZHMgYW5kIG9ubHkgbW92ZSB0aGUgcmVhZCB3YXRlcm1hcmsuXG4gICAgb3BlbmVkOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICAgIHNlYXJjaFF1ZXJ5OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZy5jaGVjayhTY2hlbWEuaXNNYXhMZW5ndGgoMjAwKSkpLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQubWFyay11bnJlYWRcIiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQubWV0YWRhdGEudXBkYXRlXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICB0aXRsZTogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gICAgcmVnZW5lcmF0ZVRpdGxlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICAgIGJyYW5jaDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSksXG4gICAgd29ya3RyZWVQYXRoOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmcpKSxcbiAgICBleHBlY3RlZFdvcmt0cmVlUGF0aDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5OdWxsT3IoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSksXG4gICAgZXhwZWN0ZWRCcmFuY2g6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFRyaW1tZWROb25FbXB0eVN0cmluZykpLFxuICAgIC8qKiBSZWplY3QgdW5sZXNzIG5vIG1lc3NhZ2Ugb3IgcnVuIGhhcyBsYW5kZWQgb24gdGhpcyB0aHJlYWQuICovXG4gICAgZXhwZWN0ZWRFbXB0eTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgICBsaW1pdFJlY292ZXJ5OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLk51bGxPcihPcmNoZXN0cmF0aW9uVjJMaW1pdFJlY292ZXJ5VXBkYXRlKSksXG4gICAgLyoqIExpbmsgKG9iamVjdCkgb3IgdW5saW5rIChudWxsKSBhIHB1bGwgcmVxdWVzdDsgYWJzZW50IGxlYXZlcyBpdCB1bmNoYW5nZWQuICovXG4gICAgbGlua2VkUHVsbFJlcXVlc3Q6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuTnVsbE9yKFRocmVhZExpbmtlZFB1bGxSZXF1ZXN0KSksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInRocmVhZC5wdWxsLXJlcXVlc3QubGlua1wiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgLi4uVGhyZWFkUHVsbFJlcXVlc3RLZXkuZmllbGRzLFxuICAgIHVybDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICAgIHNvdXJjZTogVGhyZWFkUHVsbFJlcXVlc3RMaW5rU291cmNlLFxuICAgIHJlcG9zaXRvcnlXZWJVcmw6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQucHVsbC1yZXF1ZXN0LnVubGlua1wiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgLi4uVGhyZWFkUHVsbFJlcXVlc3RLZXkuZmllbGRzLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQucHVsbC1yZXF1ZXN0LWxpbmsuc3luY1wiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgLi4uVGhyZWFkUHVsbFJlcXVlc3RLZXkuZmllbGRzLFxuICAgIHNuYXBzaG90OiBUaHJlYWRQdWxsUmVxdWVzdFNuYXBzaG90LFxuICAgIHN0YWNrOiBTY2hlbWEuTnVsbE9yKFRocmVhZFB1bGxSZXF1ZXN0U3RhY2spLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQucHVsbC1yZXF1ZXN0LndhdGNoXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICAuLi5UaHJlYWRQdWxsUmVxdWVzdEtleS5maWVsZHMsXG4gICAgd2F0Y2hpbmc6IFNjaGVtYS5Cb29sZWFuLFxuICAgIGxpbms6IFNjaGVtYS5vcHRpb25hbChcbiAgICAgIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgICAgICB1cmw6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgICAgICAgc291cmNlOiBUaHJlYWRQdWxsUmVxdWVzdExpbmtTb3VyY2UsXG4gICAgICAgIHJlcG9zaXRvcnlXZWJVcmw6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICAgICAgfSksXG4gICAgKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLnB1bGwtcmVxdWVzdC5zeW5jXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBwcm9qZWN0SWQ6IFByb2plY3RJZCxcbiAgICBzbmFwc2hvdFNlcXVlbmNlOiBOb25OZWdhdGl2ZUludCxcbiAgICBleHBlY3RlZDogU2NoZW1hLlN0cnVjdCh7XG4gICAgICB3b3Jrc3BhY2VSb290OiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gICAgICBicmFuY2g6IFNjaGVtYS5OdWxsT3IoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgICAgIHdvcmt0cmVlUGF0aDogU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICAgICAgbGlua2VkUHVsbFJlcXVlc3Q6IFNjaGVtYS5OdWxsT3IoVGhyZWFkTGlua2VkUHVsbFJlcXVlc3QpLFxuICAgICAgYnJhbmNoUHVsbFJlcXVlc3Q6IFNjaGVtYS5OdWxsT3IoVGhyZWFkTGlua2VkUHVsbFJlcXVlc3QpLFxuICAgIH0pLFxuICAgIGJyYW5jaFB1bGxSZXF1ZXN0OiBTY2hlbWEuTnVsbE9yKFRocmVhZExpbmtlZFB1bGxSZXF1ZXN0KSxcbiAgICBsaW5rZWRQdWxsUmVxdWVzdDogU2NoZW1hLm9wdGlvbmFsKFRocmVhZExpbmtlZFB1bGxSZXF1ZXN0KSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLnRpdGxlLnJlZ2VuZXJhdGlvbi5jb21wbGV0ZVwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgcmVxdWVzdElkOiBDb21tYW5kSWQsXG4gICAgdGl0bGU6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQucnVudGltZS1tb2RlLnNldFwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgcnVudGltZU1vZGU6IFJ1bnRpbWVNb2RlLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQuaW50ZXJhY3Rpb24tbW9kZS5zZXRcIiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICAgIGludGVyYWN0aW9uTW9kZTogUHJvdmlkZXJJbnRlcmFjdGlvbk1vZGUsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInRocmVhZC5tb2RlbC1zZWxlY3Rpb24uc2V0XCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBtb2RlbFNlbGVjdGlvbjogTW9kZWxTZWxlY3Rpb24sXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInByb3ZpZGVyLXNlc3Npb24uZGV0YWNoXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBwcm92aWRlclNlc3Npb25JZDogUHJvdmlkZXJTZXNzaW9uSWQsXG4gICAgcmVhc29uOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcIm1lc3NhZ2UuZGlzcGF0Y2hcIiksXG4gICAgbm90aWZpY2F0aW9uOiBTY2hlbWEub3B0aW9uYWwoT3JjaGVzdHJhdGlvblYyTm90aWZpY2F0aW9uKSxcbiAgICAvKiogU2VuZHMgdGhpcyBwZW5kaW5nIGd1ZXN0IG1lc3NhZ2U7IHRoZSBzZXJ2ZXIgdXNlcyB0aGUgZ3Vlc3QncyB0ZXh0LCBub3QgYHRleHRgLiAqL1xuICAgIGd1ZXN0TWVzc2FnZUlkOiBTY2hlbWEub3B0aW9uYWwoR3Vlc3RNZXNzYWdlSWQpLFxuICAgIC4uLk9yY2hlc3RyYXRpb25WMkNyZWF0aW9uRmllbGRzLFxuICAgIHNjaGVkdWxlZFRhc2tJZDogU2NoZW1hLm9wdGlvbmFsKFNjaGVkdWxlZFRhc2tJZCksXG4gICAgc2VuZGVyVGhyZWFkSWQ6IFNjaGVtYS5vcHRpb25hbChUaHJlYWRJZCksXG4gICAgaWRsZUNvbXBhY3Rpb246IFNjaGVtYS5vcHRpb25hbChPcmNoZXN0cmF0aW9uVjJJZGxlQ29tcGFjdGlvbiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICAgIG1lc3NhZ2VJZDogTWVzc2FnZUlkLFxuICAgIHRleHQ6IFNjaGVtYS5TdHJpbmcsXG4gICAgY29udGV4dDogU2NoZW1hLm9wdGlvbmFsKE9yY2hlc3RyYXRpb25NZXNzYWdlQ29udGV4dCksXG4gICAgYXR0YWNobWVudHM6IFNjaGVtYS5BcnJheShDaGF0QXR0YWNobWVudCksXG4gICAgdGl0bGVTZWVkOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgICBtb2RlbFNlbGVjdGlvbjogU2NoZW1hLm9wdGlvbmFsKE1vZGVsU2VsZWN0aW9uKSxcbiAgICBzb3VyY2VQbGFuUmVmOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cnVjdCh7IHRocmVhZElkOiBUaHJlYWRJZCwgcGxhbklkOiBQbGFuSWQgfSkpLFxuICAgIHJlc3RhcnRDb250aW51YXRpb25PZlJ1bklkOiBTY2hlbWEub3B0aW9uYWwoUnVuSWQpLFxuICAgIHVzYWdlTGltaXRDb250aW51YXRpb25PZlJ1bklkOiBTY2hlbWEub3B0aW9uYWwoUnVuSWQpLFxuICAgIG1hbnVhbENvbnRpbnVhdGlvbk9mUnVuSWQ6IFNjaGVtYS5vcHRpb25hbChSdW5JZCksXG4gICAgdXNhZ2VMaW1pdFJlY292ZXJ5UmVxdWVzdElkOiBTY2hlbWEub3B0aW9uYWwoQ29tbWFuZElkKSxcbiAgICBkZWxpdmVyeUludGVudDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5MaXRlcmFscyhbXCJhdXRvXCIsIFwic3RlZXJcIiwgXCJyZXN0YXJ0XCJdKSksXG4gICAgZGVsZWdhdGVkQ29tcGxldGlvbjogU2NoZW1hLm9wdGlvbmFsKFxuICAgICAgU2NoZW1hLlN0cnVjdCh7XG4gICAgICAgIHBhcmVudFJ1bklkOiBSdW5JZCxcbiAgICAgICAgZ2VuZXJhdGlvbjogUG9zaXRpdmVJbnQsXG4gICAgICAgIHRhc2tJZHM6IFNjaGVtYS5BcnJheShOb2RlSWQpLFxuICAgICAgfSksXG4gICAgKSxcbiAgICBkaXNwYXRjaE1vZGU6IFNjaGVtYS5VbmlvbihbXG4gICAgICBTY2hlbWEuU3RydWN0KHtcbiAgICAgICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJkZWZlcl9zdGFydFwiKSxcbiAgICAgICAgd29ya3NwYWNlU3RyYXRlZ3k6IFNjaGVtYS5vcHRpb25hbChPcmNoZXN0cmF0aW9uVjJUaHJlYWRMYXVuY2hXb3Jrc3BhY2VTdHJhdGVneSksXG4gICAgICB9KSxcbiAgICAgIFNjaGVtYS5TdHJ1Y3QoeyB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInN0ZWVyX2FjdGl2ZVwiKSwgdGFyZ2V0UnVuSWQ6IFJ1bklkIH0pLFxuICAgICAgU2NoZW1hLlN0cnVjdCh7IHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicmVzdGFydF9hY3RpdmVcIiksIHRhcmdldFJ1bklkOiBSdW5JZCB9KSxcbiAgICAgIFNjaGVtYS5TdHJ1Y3QoeyB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInF1ZXVlX2FmdGVyX2FjdGl2ZVwiKSB9KSxcbiAgICAgIFNjaGVtYS5TdHJ1Y3QoeyB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInN0YXJ0X2ltbWVkaWF0ZWx5XCIpIH0pLFxuICAgIF0pLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJwcmVwYXJlZC1ydW4ucmVsZWFzZVwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgcnVuSWQ6IFJ1bklkLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJub3RpZmljYXRpb24uZGVsaXZlcnkuYWNjZXB0XCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBtZXNzYWdlSWQ6IE1lc3NhZ2VJZCxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicHJlcGFyZWQtcnVuLnByb2dyZXNzXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBydW5JZDogUnVuSWQsXG4gICAgcGhhc2U6IFNjaGVtYS5MaXRlcmFscyhbXCJ3b3JrdHJlZVwiLCBcInNldHVwXCJdKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicHJlcGFyZWQtcnVuLmZhaWxcIiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICAgIHJ1bklkOiBSdW5JZCxcbiAgICBmYWlsdXJlOiBPcmNoZXN0cmF0aW9uVjJQcm92aWRlckZhaWx1cmUsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInByZXBhcmVkLXJ1bi5yZXRyeVwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgcnVuSWQ6IFJ1bklkLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJzdWJhZ2VudC5zdG9wXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBydW5JZDogUnVuSWQsXG4gICAgc3ViYWdlbnRJZDogTm9kZUlkLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJydW4uaW50ZXJydXB0XCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBydW5JZDogUnVuSWQsXG4gICAgcmVhc29uOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gICAgaG9sZFF1ZXVlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJxdWV1ZWQtbWVzc2FnZS5wcm9tb3RlLXRvLXN0ZWVyXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBxdWV1ZWRSdW5JZDogUnVuSWQsXG4gICAgdGFyZ2V0UnVuSWQ6IFJ1bklkLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJxdWV1ZS5yZXN1bWVcIiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJxdWV1ZWQtcnVuLnN0YXJ0XCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBydW5JZDogUnVuSWQsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInF1ZXVlZC1ydW4ucmVvcmRlclwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgcnVuSWQ6IFJ1bklkLFxuICAgIGJlZm9yZVJ1bklkOiBTY2hlbWEuTnVsbE9yKFJ1bklkKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicXVldWVkLXJ1bi5jYW5jZWxcIiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICAgIHJ1bklkOiBSdW5JZCxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicXVldWVkLXJ1bi5lZGl0XCIpLFxuICAgIGNvbnRleHQ6IFNjaGVtYS5vcHRpb25hbChPcmNoZXN0cmF0aW9uTWVzc2FnZUNvbnRleHQpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBydW5JZDogUnVuSWQsXG4gICAgdGV4dDogU2NoZW1hLlN0cmluZyxcbiAgICAvLyBSZXBsYWNlcyBhbGwgYXR0YWNobWVudHM7IGFic2VudCBwcmVzZXJ2ZXMgdGhlbSBmb3Igb2xkZXIgY2xpZW50cyBlZGl0aW5nIHRleHQuXG4gICAgYXR0YWNobWVudHM6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuQXJyYXkoQ2hhdEF0dGFjaG1lbnQpKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwicnVudGltZS1yZXF1ZXN0LnJlc3BvbmRcIiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICAgIHJlcXVlc3RJZDogUnVudGltZVJlcXVlc3RJZCxcbiAgICBkZWNpc2lvbjogU2NoZW1hLm9wdGlvbmFsKFByb3ZpZGVyQXBwcm92YWxEZWNpc2lvbiksXG4gICAgZmVlZGJhY2s6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgICBhbnN3ZXJzOiBTY2hlbWEub3B0aW9uYWwoUHJvdmlkZXJVc2VySW5wdXRBbnN3ZXJzKSxcbiAgICBhdHRhY2htZW50c0J5UXVlc3Rpb25JZDogU2NoZW1hLm9wdGlvbmFsKFVzZXJJbnB1dEF0dGFjaG1lbnRzKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLnVzZXItaW5wdXQuZGlzbWlzc1wiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgcmVxdWVzdElkOiBSdW50aW1lUmVxdWVzdElkLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJjaGVja3BvaW50LnJvbGxiYWNrXCIpLFxuICAgIHJlc3RvcmVGaWxlczogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgc2NvcGVJZDogQ2hlY2twb2ludFNjb3BlSWQsXG4gICAgY2hlY2twb2ludElkOiBDaGVja3BvaW50SWQsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInRocmVhZC5mb3JrXCIpLFxuICAgIC4uLk9yY2hlc3RyYXRpb25WMkNyZWF0aW9uRmllbGRzLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHNvdXJjZVRocmVhZElkOiBUaHJlYWRJZCxcbiAgICB0YXJnZXRUaHJlYWRJZDogVGhyZWFkSWQsXG4gICAgc291cmNlUG9pbnQ6IE9yY2hlc3RyYXRpb25WMlRocmVhZEZvcmtTb3VyY2VQb2ludCxcbiAgICB0aXRsZTogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gICAgY3JlYXRlZEF0OiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkRhdGVUaW1lVXRjKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLm1lcmdlX2JhY2tcIiksXG4gICAgLi4uT3JjaGVzdHJhdGlvblYyQ3JlYXRpb25GaWVsZHMsXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgc291cmNlVGhyZWFkSWQ6IFRocmVhZElkLFxuICAgIHRhcmdldFRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBzb3VyY2VQb2ludDogT3JjaGVzdHJhdGlvblYyVGhyZWFkRm9ya1NvdXJjZVBvaW50LFxuICAgIGNyZWF0ZWRBdDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5EYXRlVGltZVV0YyksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcImRlbGVnYXRlZF90YXNrLnJlcXVlc3RcIiksXG4gICAgLi4uT3JjaGVzdHJhdGlvblYyQ3JlYXRpb25GaWVsZHMsXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgcGFyZW50VGhyZWFkSWQ6IFRocmVhZElkLFxuICAgIHBhcmVudFJ1bklkOiBSdW5JZCxcbiAgICBwYXJlbnROb2RlSWQ6IE5vZGVJZCxcbiAgICB0YXNrOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gICAgdGl0bGU6IFNjaGVtYS5vcHRpb25hbChUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICAgIG1vZGVsU2VsZWN0aW9uOiBNb2RlbFNlbGVjdGlvbixcbiAgICBydW50aW1lTW9kZTogUnVudGltZU1vZGUsXG4gICAgaW50ZXJhY3Rpb25Nb2RlOiBQcm92aWRlckludGVyYWN0aW9uTW9kZSxcbiAgICB3b3Jrc3BhY2VTdHJhdGVneTogU2NoZW1hLm9wdGlvbmFsKE9yY2hlc3RyYXRpb25WMlRocmVhZExhdW5jaFdvcmtzcGFjZVN0cmF0ZWd5KSxcbiAgICAvLyBEZWZhdWx0cyB0byBzZXR0bGVkX29ubHk7IGZpcmUtYW5kLWZvcmdldCB3YWtlcyByZXF1aXJlIGFsd2F5cy5cbiAgICBjb21wbGV0aW9uV2FrZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5MaXRlcmFscyhbXCJhbHdheXNcIiwgXCJzZXR0bGVkX29ubHlcIl0pKSxcbiAgICBjcmVhdGVkQXQ6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuRGF0ZVRpbWVVdGMpLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJkZWxlZ2F0ZWRfdGFzay53YWtlLXBvbGljeVwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICBwYXJlbnRUaHJlYWRJZDogVGhyZWFkSWQsXG4gICAgdGFza0lkOiBOb2RlSWQsXG4gICAgY29tcGxldGlvbldha2U6IFNjaGVtYS5MaXRlcmFscyhbXCJhbHdheXNcIiwgXCJzZXR0bGVkX29ubHlcIl0pLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJkZWxlZ2F0ZWRfdGFzay5jb21wbGV0aW9uLWRlbGl2ZXJ5LmFja25vd2xlZGdlXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHBhcmVudFRocmVhZElkOiBUaHJlYWRJZCxcbiAgICB0YXNrSWQ6IE5vZGVJZCxcbiAgICBvYnNlcnZlZEJ5UnVuSWQ6IFNjaGVtYS5OdWxsT3IoUnVuSWQpLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJkZWxlZ2F0ZWRfdGFzay5jb21wbGV0aW9uLWRlbGl2ZXJ5LmRpc3Bvc2VcIiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgcGFyZW50VGhyZWFkSWQ6IFRocmVhZElkLFxuICAgIHRhc2tJZDogTm9kZUlkLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQuY3JlYXRlZC5yZWNvcmRcIiksXG4gICAgY29tbWFuZElkOiBDb21tYW5kSWQsXG4gICAgcGFyZW50VGhyZWFkSWQ6IFRocmVhZElkLFxuICAgIHBhcmVudFJ1bklkOiBSdW5JZCxcbiAgICBwYXJlbnROb2RlSWQ6IE5vZGVJZCxcbiAgICB0YXJnZXRUaHJlYWRJZDogVGhyZWFkSWQsXG4gICAgdGFyZ2V0UnVuSWQ6IFNjaGVtYS5OdWxsT3IoUnVuSWQpLFxuICB9KSxcblxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInByb3ZpZGVyLnN3aXRjaFwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgbW9kZWxTZWxlY3Rpb246IE1vZGVsU2VsZWN0aW9uLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyQ29tbWFuZCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJDb21tYW5kLlR5cGU7XG5cbi8vIEV4Y2x1ZGVkIGZyb20gZGlzcGF0Y2hDb21tYW5kIHNvIG9ubHkgdGhlIHNlcnZlciBjYW4gc2VuZCB0aGVzZS5cbmNvbnN0IE9yY2hlc3RyYXRpb25WMkludGVybmFsQ29tbWFuZCA9IFNjaGVtYS5VbmlvbihbXG4gIC8vIEd1ZXN0IHNoYXJlIGNvbW1hbmRzIHRoZSBzZXJ2ZXIgaXNzdWVzIGFmdGVyIGNoZWNraW5nIFQzIENvbm5lY3QgYW5kIHRoZSBndWVzdCB0b2tlbi5cbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQuZ3Vlc3Qtc2hhcmUub3BlblwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgc2hhcmVJZDogR3Vlc3RTaGFyZUlkLFxuICAgIGhvc3Q6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgICBleHBpcmVzQXQ6IElzb0RhdGVUaW1lLFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQuZ3Vlc3Qtc2hhcmUucmVkZWVtXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBzaGFyZUlkOiBHdWVzdFNoYXJlSWQsXG4gICAgZ3Vlc3ROYW1lOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInRocmVhZC5ndWVzdC1tZXNzYWdlLnN1Ym1pdFwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgc2hhcmVJZDogR3Vlc3RTaGFyZUlkLFxuICAgIGd1ZXN0TWVzc2FnZUlkOiBHdWVzdE1lc3NhZ2VJZCxcbiAgICB0ZXh0OiBTY2hlbWEuU3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkFycmF5KENoYXRBdHRhY2htZW50KSksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInRocmVhZC5wdWxsLXJlcXVlc3Qtd2F0Y2guc3luY1wiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgLi4uVGhyZWFkUHVsbFJlcXVlc3RLZXkuZmllbGRzLFxuICAgIHN0YXJ0ZWRBdDogSXNvRGF0ZVRpbWUsXG4gICAgd2F0Y2g6IFNjaGVtYS5OdWxsT3IoVGhyZWFkUHVsbFJlcXVlc3RXYXRjaCksXG4gICAgLyoqIFdpdGggYHdhdGNoOiBudWxsYCwgdGhlIHN0YXRlIHRoZSBlbmRlZCB3YXRjaCBrZWVwcyBpbnN0ZWFkIG9mIGl0cyBsYXN0IHNhdmVkIG9uZS4gKi9cbiAgICBlbmRlZFdhdGNoOiBTY2hlbWEub3B0aW9uYWwoVGhyZWFkUHVsbFJlcXVlc3RXYXRjaCksXG4gICAgd2FrZTogU2NoZW1hLm9wdGlvbmFsKFxuICAgICAgU2NoZW1hLlN0cnVjdCh7XG4gICAgICAgIG1lc3NhZ2VJZDogTWVzc2FnZUlkLFxuICAgICAgICB0ZXh0OiBTY2hlbWEuU3RyaW5nLFxuICAgICAgICBub3RpZmljYXRpb246IE9yY2hlc3RyYXRpb25WMk5vdGlmaWNhdGlvbixcbiAgICAgIH0pLFxuICAgICksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcImNoZWNrcG9pbnQucm9sbGJhY2suZmFpbFwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgcmVxdWVzdElkOiBDb21tYW5kSWQsXG4gICAgbWVzc2FnZTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICB9KSxcbiAgLyoqIERlbGl2ZXJpbmcgdGhlIGFuc3dlciB0byByZXF1ZXN0IGByZXF1ZXN0SWRgIGZhaWxlZCBvbiBpdHMgbGFzdCBhdHRlbXB0LiAqL1xuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInJ1bnRpbWUtcmVxdWVzdC5kZWxpdmVyeS5mYWlsXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICByZXF1ZXN0SWQ6IFJ1bnRpbWVSZXF1ZXN0SWQsXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInRocmVhZC5iYWNrZ3JvdW5kLXdvcmsuc2V0dGxlXCIpLFxuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBwcm92aWRlclRocmVhZElkOiBQcm92aWRlclRocmVhZElkLFxuICAgIHByb3ZpZGVyVHVybklkOiBQcm92aWRlclR1cm5JZCxcbiAgICBzdWJhZ2VudDogU2NoZW1hLm9wdGlvbmFsKFxuICAgICAgU2NoZW1hLlN0cnVjdCh7XG4gICAgICAgIGlkOiBOb2RlSWQsXG4gICAgICAgIHN0b3BwZWRBdDogU2NoZW1hLkRhdGVUaW1lVXRjLFxuICAgICAgICBvdXRjb21lOiBTY2hlbWEuU3RydWN0KHtcbiAgICAgICAgICBzdGF0dXM6IFNjaGVtYS5MaXRlcmFscyhbXCJjb21wbGV0ZWRcIiwgXCJmYWlsZWRcIiwgXCJjYW5jZWxsZWRcIl0pLFxuICAgICAgICAgIGNvbXBsZXRlZEF0OiBTY2hlbWEuRGF0ZVRpbWVVdGMsXG4gICAgICAgICAgcmVzdWx0OiBTY2hlbWEuTnVsbE9yKFNjaGVtYS5TdHJpbmcpLFxuICAgICAgICB9KSxcbiAgICAgIH0pLFxuICAgICksXG4gIH0pLFxuICAvKipcbiAgICogSW50ZXJuYWwgc28gbm8gY2xpZW50IGNhbiBtYXJrIGEgcmVxdWVzdCBzYXZlZCB3aXRob3V0IHRoZSB2YWx1ZSBiZWluZ1xuICAgKiBzdG9yZWQuXG4gICAqL1xuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInNlY3JldF9yZXF1ZXN0LnJlY29yZFwiKSxcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gICAgcnVuSWQ6IFJ1bklkLFxuICAgIG5vZGVJZDogTm9kZUlkLFxuICAgIHR1cm5JdGVtSWQ6IFR1cm5JdGVtSWQsXG4gICAgbGFiZWw6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgICByZWFzb246IFNjaGVtYS5TdHJpbmcsXG4gICAgcGxhY2Vob2xkZXI6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nKSxcbiAgICBzZWNyZXRTdGF0dXM6IE9yY2hlc3RyYXRpb25WMlNlY3JldFJlcXVlc3RTdGF0dXMsXG4gIH0pLFxuXSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJJbnRlcm5hbENvbW1hbmQgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYySW50ZXJuYWxDb21tYW5kLlR5cGU7XG5cbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlNlcnZlckNvbW1hbmQgPSBPcmNoZXN0cmF0aW9uVjJDb21tYW5kIHwgT3JjaGVzdHJhdGlvblYySW50ZXJuYWxDb21tYW5kO1xuXG5leHBvcnQgY29uc3QgT1JDSEVTVFJBVElPTl9WMl9XU19NRVRIT0RTID0ge1xuICBkaXNwYXRjaENvbW1hbmQ6IFwib3JjaGVzdHJhdGlvbi5kaXNwYXRjaENvbW1hbmRcIixcbiAgZ2V0VHVybkRpZmY6IFwib3JjaGVzdHJhdGlvbi5nZXRUdXJuRGlmZlwiLFxuICBnZXRGdWxsVGhyZWFkRGlmZjogXCJvcmNoZXN0cmF0aW9uLmdldEZ1bGxUaHJlYWREaWZmXCIsXG4gIHNlYXJjaFRocmVhZHM6IFwib3JjaGVzdHJhdGlvbi5zZWFyY2hUaHJlYWRzXCIsXG4gIHNlYXJjaFRocmVhZDogXCJvcmNoZXN0cmF0aW9uLnNlYXJjaFRocmVhZFwiLFxuICBzZWFyY2hUaHJlYWRTdHJlYW06IFwib3JjaGVzdHJhdGlvbi5zZWFyY2hUaHJlYWRTdHJlYW1cIixcbiAgZ2V0QXJjaGl2ZWRTaGVsbFNuYXBzaG90OiBcIm9yY2hlc3RyYXRpb24uZ2V0QXJjaGl2ZWRTaGVsbFNuYXBzaG90XCIsXG4gIGdldFRocmVhZEZhbWlseTogXCJvcmNoZXN0cmF0aW9uLmdldFRocmVhZEZhbWlseVwiLFxuICBnZXRXb3JrdHJlZVRocmVhZElkczogXCJvcmNoZXN0cmF0aW9uLmdldFdvcmt0cmVlVGhyZWFkSWRzXCIsXG4gIGdldFRocmVhZFByb2plY3Rpb246IFwib3JjaGVzdHJhdGlvbi5nZXRUaHJlYWRQcm9qZWN0aW9uXCIsXG4gIGdldFdvcmtmbG93U2NyaXB0OiBcIm9yY2hlc3RyYXRpb24uZ2V0V29ya2Zsb3dTY3JpcHRcIixcbiAgc3RvcFdvcmtmbG93OiBcIm9yY2hlc3RyYXRpb24uc3RvcFdvcmtmbG93XCIsXG4gIGdldFR1cm5JdGVtOiBcIm9yY2hlc3RyYXRpb24uZ2V0VHVybkl0ZW1cIixcbiAgbGF1bmNoVGhyZWFkOiBcIm9yY2hlc3RyYXRpb24ubGF1bmNoVGhyZWFkXCIsXG4gIHN1YnNjcmliZUFyY2hpdmVkU2hlbGw6IFwib3JjaGVzdHJhdGlvbi5zdWJzY3JpYmVBcmNoaXZlZFNoZWxsXCIsXG4gIHN1YnNjcmliZVNoZWxsOiBcIm9yY2hlc3RyYXRpb24uc3Vic2NyaWJlU2hlbGxcIixcbiAgc3Vic2NyaWJlVGhyZWFkOiBcIm9yY2hlc3RyYXRpb24uc3Vic2NyaWJlVGhyZWFkXCIsXG4gIHN1YnNjcmliZUNvbW1hbmRPdXRwdXQ6IFwib3JjaGVzdHJhdGlvbi5zdWJzY3JpYmVDb21tYW5kT3V0cHV0XCIsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyU3Vic2NyaWJlQ29tbWFuZE91dHB1dElucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgaXRlbUlkOiBUdXJuSXRlbUlkLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJTdWJzY3JpYmVDb21tYW5kT3V0cHV0SW5wdXQgPVxuICB0eXBlb2YgT3JjaGVzdHJhdGlvblYyU3Vic2NyaWJlQ29tbWFuZE91dHB1dElucHV0LlR5cGU7XG5cbi8qKiBVbnBlcnNpc3RlZCBzdHJlYW0gZm9yIGV4cGFuZGVkIHJvd3M6IHJlcGxhY2UgcmVzZXRzIHRoZSBib3VuZGVkIHRhaWwsIGFwcGVuZCBleHRlbmRzIGl0LCBhbmQgcnVubmluZzpmYWxzZSBlbmRzIGl0LlxuICogRmVlZCBib3RoIHRocm91Z2ggQHQzdG9vbHMvc2hhcmVkL3Rlcm1pbmFsT3V0cHV0IGFwcGVuZFRlcm1pbmFsT3V0cHV0IHRvIHByZXNlcnZlIGN1cnNvciBhbmQgc3R5bGUgZXNjYXBlcy4gKi9cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJDb21tYW5kT3V0cHV0RnJhbWUgPSBTY2hlbWEuU3RydWN0KHtcbiAga2luZDogU2NoZW1hLkxpdGVyYWxzKFtcInJlcGxhY2VcIiwgXCJhcHBlbmRcIl0pLFxuICB0ZXh0OiBTY2hlbWEuU3RyaW5nLFxuICAvKiogRWFybGllciBvdXRwdXQgd2FzIGRyb3BwZWQgdG8ga2VlcCB0aGUgdGFpbCBib3VuZGVkLiAqL1xuICB0cnVuY2F0ZWQ6IFNjaGVtYS5Cb29sZWFuLFxuICBydW5uaW5nOiBTY2hlbWEuQm9vbGVhbixcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyQ29tbWFuZE91dHB1dEZyYW1lID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMkNvbW1hbmRPdXRwdXRGcmFtZS5UeXBlO1xuXG5leHBvcnQgY2xhc3MgT3JjaGVzdHJhdGlvblYyQ29tbWFuZE91dHB1dEVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPE9yY2hlc3RyYXRpb25WMkNvbW1hbmRPdXRwdXRFcnJvcj4oKShcbiAgXCJPcmNoZXN0cmF0aW9uVjJDb21tYW5kT3V0cHV0RXJyb3JcIixcbiAge1xuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBtZXNzYWdlOiBTY2hlbWEuU3RyaW5nLFxuICAgIGNhdXNlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkRlZmVjdCgpKSxcbiAgfSxcbikge31cblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkFyY2hpdmVkU2hlbGxTbmFwc2hvdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBzY2hlbWFWZXJzaW9uOiBQb3NpdGl2ZUludCxcbiAgc25hcHNob3RTZXF1ZW5jZTogTm9uTmVnYXRpdmVJbnQsXG4gIHByb2plY3RzOiBTY2hlbWEuQXJyYXkoT3JjaGVzdHJhdGlvblByb2plY3RTaGVsbCksXG4gIHRocmVhZHM6IFNjaGVtYS5BcnJheShPcmNoZXN0cmF0aW9uVjJUaHJlYWRTaGVsbCksXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMkFyY2hpdmVkU2hlbGxTbmFwc2hvdCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJBcmNoaXZlZFNoZWxsU25hcHNob3QuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkFyY2hpdmVkU2hlbGxTdHJlYW1JdGVtID0gU2NoZW1hLlVuaW9uKFtcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAga2luZDogU2NoZW1hLkxpdGVyYWwoXCJzbmFwc2hvdFwiKSxcbiAgICBzbmFwc2hvdDogT3JjaGVzdHJhdGlvblYyQXJjaGl2ZWRTaGVsbFNuYXBzaG90LFxuICB9KSxcbiAgU2NoZW1hLlN0cnVjdCh7XG4gICAga2luZDogU2NoZW1hLkxpdGVyYWwoXCJ0aHJlYWQudXBkYXRlZFwiKSxcbiAgICBzZXF1ZW5jZTogTm9uTmVnYXRpdmVJbnQsXG4gICAgdGhyZWFkOiBPcmNoZXN0cmF0aW9uVjJUaHJlYWRTaGVsbCxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIGtpbmQ6IFNjaGVtYS5MaXRlcmFsKFwidGhyZWFkLnJlbW92ZWRcIiksXG4gICAgc2VxdWVuY2U6IE5vbk5lZ2F0aXZlSW50LFxuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgfSksXG5dKTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMkFyY2hpdmVkU2hlbGxTdHJlYW1JdGVtID1cbiAgdHlwZW9mIE9yY2hlc3RyYXRpb25WMkFyY2hpdmVkU2hlbGxTdHJlYW1JdGVtLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJUaHJlYWRMYXVuY2hJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgY3JlYXRpb25Tb3VyY2U6IFNjaGVtYS5vcHRpb25hbChPcmNoZXN0cmF0aW9uVjJDcmVhdGlvblNvdXJjZSksXG4gIHRocmVhZElkOiBTY2hlbWEub3B0aW9uYWwoVGhyZWFkSWQpLFxuICByZXVzZUV4aXN0aW5nVGhyZWFkOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkJvb2xlYW4pLFxuICBwcm9qZWN0SWQ6IFByb2plY3RJZCxcbiAgdGl0bGU6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgZ2VuZXJhdGVUaXRsZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Cb29sZWFuKSxcbiAgbW9kZWxTZWxlY3Rpb246IE1vZGVsU2VsZWN0aW9uLFxuICBydW50aW1lTW9kZTogUnVudGltZU1vZGUsXG4gIGludGVyYWN0aW9uTW9kZTogUHJvdmlkZXJJbnRlcmFjdGlvbk1vZGUsXG4gIHdvcmtzcGFjZVN0cmF0ZWd5OiBPcmNoZXN0cmF0aW9uVjJUaHJlYWRMYXVuY2hXb3Jrc3BhY2VTdHJhdGVneSxcbiAgaW5pdGlhbE1lc3NhZ2U6IFNjaGVtYS5vcHRpb25hbChcbiAgICBTY2hlbWEuU3RydWN0KHtcbiAgICAgIG1lc3NhZ2VJZDogU2NoZW1hLm9wdGlvbmFsKE1lc3NhZ2VJZCksXG4gICAgICB0ZXh0OiBTY2hlbWEuU3RyaW5nLFxuICAgICAgY29udGV4dDogU2NoZW1hLm9wdGlvbmFsKE9yY2hlc3RyYXRpb25NZXNzYWdlQ29udGV4dCksXG4gICAgICBhdHRhY2htZW50czogU2NoZW1hLkFycmF5KENoYXRBdHRhY2htZW50KSxcbiAgICB9KSxcbiAgKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyVGhyZWFkTGF1bmNoSW5wdXQgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyVGhyZWFkTGF1bmNoSW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlRocmVhZExhdW5jaFJlc3VsdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gIHByb2plY3Rpb246IE9yY2hlc3RyYXRpb25WMlRocmVhZFByb2plY3Rpb24sXG4gIHJlc3VtZWQ6IFNjaGVtYS5Cb29sZWFuLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJUaHJlYWRMYXVuY2hSZXN1bHQgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyVGhyZWFkTGF1bmNoUmVzdWx0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJEaXNwYXRjaENvbW1hbmRSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgc2VxdWVuY2U6IE5vbk5lZ2F0aXZlSW50LFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJEaXNwYXRjaENvbW1hbmRSZXN1bHQgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyRGlzcGF0Y2hDb21tYW5kUmVzdWx0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJHZXRUaHJlYWRQcm9qZWN0aW9uSW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgdGhyZWFkSWQ6IFRocmVhZElkLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJHZXRUaHJlYWRQcm9qZWN0aW9uSW5wdXQgPVxuICB0eXBlb2YgT3JjaGVzdHJhdGlvblYyR2V0VGhyZWFkUHJvamVjdGlvbklucHV0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJTdWJzY3JpYmVTaGVsbElucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGFmdGVyU2VxdWVuY2U6IFNjaGVtYS5vcHRpb25hbEtleShOb25OZWdhdGl2ZUludCksXG4gIHJlcXVlc3RDb21wbGV0aW9uTWFya2VyOiBTY2hlbWEub3B0aW9uYWxLZXkoU2NoZW1hLkJvb2xlYW4pLFxuICAvKipcbiAgICogU25hcHNob3RzIGxlYXZlIG91dCBpZGxlIHN1YmFnZW50IGNoaWxkcmVuOyByZWFkIHRoZW0gd2l0aCBgZ2V0VGhyZWFkRmFtaWx5YC4gU2VuZCBvbmx5IHRvXG4gICAqIHNlcnZlcnMgdGhhdCBhZHZlcnRpc2UgYHNoZWxsVGhyZWFkRmFtaWxpZXNgLlxuICAgKi9cbiAgb21pdElkbGVTdWJhZ2VudHM6IFNjaGVtYS5vcHRpb25hbEtleShTY2hlbWEuQm9vbGVhbiksXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlN1YnNjcmliZVNoZWxsSW5wdXQgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyU3Vic2NyaWJlU2hlbGxJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyR2V0VGhyZWFkRmFtaWx5SW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgdGhyZWFkSWQ6IFRocmVhZElkLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJHZXRUaHJlYWRGYW1pbHlJbnB1dCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJHZXRUaHJlYWRGYW1pbHlJbnB1dC5UeXBlO1xuXG4vKipcbiAqIFRoZSBhY3RpdmUgc3ViYWdlbnQgdGhyZWFkcyB0aGF0IHNoYXJlIHRoZSByZXF1ZXN0ZWQgdGhyZWFkJ3MgYGxpbmVhZ2Uucm9vdFRocmVhZElkYDogaXRzIHdob2xlXG4gKiBzdWJhZ2VudCB0cmVlLCBpbiBhbnkgcnVuIHN0YXRlLiBBbiB1bmtub3duIHRocmVhZCBoYXMgYW4gZW1wdHkgZmFtaWx5OyBhIGRlbGV0ZWQgb25lIHN0aWxsXG4gKiBuYW1lcyBpdHMgcm9vdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlRocmVhZEZhbWlseSA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBzbmFwc2hvdFNlcXVlbmNlOiBOb25OZWdhdGl2ZUludCxcbiAgdGhyZWFkczogU2NoZW1hLkFycmF5KE9yY2hlc3RyYXRpb25WMlRocmVhZFNoZWxsKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyVGhyZWFkRmFtaWx5ID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlRocmVhZEZhbWlseS5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyR2V0V29ya3RyZWVUaHJlYWRJZHNJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB3b3JrdHJlZVBhdGg6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyR2V0V29ya3RyZWVUaHJlYWRJZHNJbnB1dCA9XG4gIHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJHZXRXb3JrdHJlZVRocmVhZElkc0lucHV0LlR5cGU7XG5cbi8qKiBBY3RpdmUgdGhyZWFkcyBvbiBhIHdvcmt0cmVlIHBhdGgsIGluY2x1ZGluZyBzdWJhZ2VudCBjaGlsZHJlbiBhIHNoZWxsIG1heSBsZWF2ZSBvdXQuICovXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyV29ya3RyZWVUaHJlYWRJZHMgPSBTY2hlbWEuU3RydWN0KHtcbiAgdGhyZWFkSWRzOiBTY2hlbWEuQXJyYXkoVGhyZWFkSWQpLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJXb3JrdHJlZVRocmVhZElkcyA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJXb3JrdHJlZVRocmVhZElkcy5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyU3Vic2NyaWJlVGhyZWFkSW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICBhZnRlclNlcXVlbmNlOiBTY2hlbWEub3B0aW9uYWxLZXkoTm9uTmVnYXRpdmVJbnQpLFxuICByZXF1ZXN0Q29tcGxldGlvbk1hcmtlcjogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5Cb29sZWFuKSxcbiAgYWNjZXB0Qm91bmRlZFNuYXBzaG90OiBTY2hlbWEub3B0aW9uYWxLZXkoU2NoZW1hLkJvb2xlYW4pLFxuICBhY2NlcHRDb21wYWN0VHVybkl0ZW1zOiBTY2hlbWEub3B0aW9uYWxLZXkoU2NoZW1hLkJvb2xlYW4pLFxuICAvKiogVGhlIGNsaWVudCByZXN0b3JlcyBgKk9taXR0ZWRgIGJvZGllcyBmcm9tIHJlY29yZHMgaXQgYWxyZWFkeSBob2xkcy4gKi9cbiAgYWNjZXB0RGVkdXBlZEJvZGllczogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5Cb29sZWFuKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyU3Vic2NyaWJlVGhyZWFkSW5wdXQgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyU3Vic2NyaWJlVGhyZWFkSW5wdXQuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlRocmVhZERldGFpbFNuYXBzaG90ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHNuYXBzaG90U2VxdWVuY2U6IE5vbk5lZ2F0aXZlSW50LFxuICBwcm9qZWN0aW9uOiBPcmNoZXN0cmF0aW9uVjJUaHJlYWRQcm9qZWN0aW9uLFxuICAvKiogV2l0aCBoYXNNb3JlSGlzdG9yeS9jdXJzb3IsIHRoaXMgcHJvamVjdGlvbiBpcyBhIGJvdW5kZWQgd2luZG93LCBub3QgYSBjb21wbGV0ZSB0aW1lbGluZS4gKi9cbiAgaGlzdG9yeUN1cnNvcjogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5OdWxsT3IoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSksXG4gIGhhc01vcmVIaXN0b3J5OiBTY2hlbWEub3B0aW9uYWxLZXkoU2NoZW1hLkJvb2xlYW4pLFxuICBsYXRlc3RMb2NhbFR1cm5PcmRpbmFsOiBTY2hlbWEub3B0aW9uYWxLZXkoU2NoZW1hLk51bGxPcihOb25OZWdhdGl2ZUludCkpLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJUaHJlYWREZXRhaWxTbmFwc2hvdCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJUaHJlYWREZXRhaWxTbmFwc2hvdC5UeXBlO1xuXG4vKiogS2VlcCBoaXN0b3J5Q3Vyc29yIG9wYXF1ZTsgcmVzdW1lIGV2ZW50cyB3aXRoIGFmdGVyU2VxdWVuY2UgPSBzbmFwc2hvdFNlcXVlbmNlLiAqL1xuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlRocmVhZEJvdW5kZWRTbmFwc2hvdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBzbmFwc2hvdFNlcXVlbmNlOiBOb25OZWdhdGl2ZUludCxcbiAgcHJvamVjdGlvbjogT3JjaGVzdHJhdGlvblYyVGhyZWFkUHJvamVjdGlvbixcbiAgaGlzdG9yeUN1cnNvcjogU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmcpLFxuICBoYXNNb3JlSGlzdG9yeTogU2NoZW1hLkJvb2xlYW4sXG4gIGxhdGVzdExvY2FsVHVybk9yZGluYWw6IFNjaGVtYS5OdWxsT3IoTm9uTmVnYXRpdmVJbnQpLFxuICAvKipcbiAgICogU2V0IG9ubHkgZm9yIGNsaWVudHMgdGhhdCBvcHRlZCBpbjogYHByb2plY3Rpb24udHVybkl0ZW1zYCBvbWl0cyB0aGUgaXRlbXNcbiAgICogb2YgbG9jYWwgdmlzaWJsZSByb3dzLCB3aGljaCBsZWFkIHRoZSBmdWxsIGxpc3QuIENsaWVudHMgbXVzdCByZXN0b3JlIHRoZW1cbiAgICogd2l0aCBgYm91bmRlZFNuYXBzaG90UHJvamVjdGlvbmAgYmVmb3JlIHVzaW5nIHRoZSBwcm9qZWN0aW9uLlxuICAgKi9cbiAgdHVybkl0ZW1zT21pdExvY2FsVmlzaWJsZTogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5MaXRlcmFsKHRydWUpKSxcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyVGhyZWFkQm91bmRlZFNuYXBzaG90ID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMlRocmVhZEJvdW5kZWRTbmFwc2hvdC5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyVGhyZWFkSGlzdG9yeVBhZ2UgPSBTY2hlbWEuU3RydWN0KHtcbiAgc25hcHNob3RTZXF1ZW5jZTogTm9uTmVnYXRpdmVJbnQsXG4gIGl0ZW1zOiBwcm9qZWN0ZWRUdXJuSXRlbUFycmF5KFxuICAgIE9yY2hlc3RyYXRpb25WMlByb2plY3RlZFR1cm5JdGVtLFxuICAgIE9yY2hlc3RyYXRpb25WMlByb2plY3RlZFR1cm5JdGVtLm1hcEZpZWxkcygoZmllbGRzKSA9PiAoe1xuICAgICAgLi4uZmllbGRzLFxuICAgICAgaXRlbTogRm9yd2FyZENvbXBhdGlibGVVbmlvbihPcmNoZXN0cmF0aW9uVjJUdXJuSXRlbS5tZW1iZXJzLCBcInR5cGVcIiksXG4gICAgfSkpLFxuICApLFxuICBuZXh0Q3Vyc29yOiBTY2hlbWEuTnVsbE9yKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gIGhhc01vcmVIaXN0b3J5OiBTY2hlbWEuQm9vbGVhbixcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyVGhyZWFkSGlzdG9yeVBhZ2UgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyVGhyZWFkSGlzdG9yeVBhZ2UuVHlwZTtcblxuY29uc3Qga25vd25Eb21haW5FdmVudFR5cGVzOiBSZWFkb25seVNldDxzdHJpbmc+ID0gbmV3IFNldChcbiAgT3JjaGVzdHJhdGlvblYyRG9tYWluRXZlbnQubWVtYmVycy5mbGF0TWFwKChtZW1iZXIpID0+IHtcbiAgICBjb25zdCB0eXBlID0gbWVtYmVyLmZpZWxkcy50eXBlO1xuICAgIHJldHVybiBcImxpdGVyYWxzXCIgaW4gdHlwZSA/IHR5cGUubGl0ZXJhbHMgOiBbdHlwZS5saXRlcmFsXTtcbiAgfSksXG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNLbm93bk9yY2hlc3RyYXRpb25WMkV2ZW50VHlwZSh0eXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGtub3duRG9tYWluRXZlbnRUeXBlcy5oYXModHlwZSk7XG59XG5cbi8vIFNraXAgdW5rbm93biBldmVudCBvciB0dXJuLWl0ZW0gdHlwZXMgd2hpbGUgYWR2YW5jaW5nIHRoZSByZXN1bWUgY3Vyc29yLlxuY29uc3QgT3JjaGVzdHJhdGlvblYyVW5rbm93blRocmVhZFN0cmVhbUV2ZW50ID0gU2NoZW1hLlN0cnVjdCh7XG4gIGtpbmQ6IFNjaGVtYS5MaXRlcmFsKFwiZXZlbnRcIiksXG4gIHNlcXVlbmNlOiBOb25OZWdhdGl2ZUludCxcbiAgZXZlbnQ6IFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5TdHJpbmcsXG4gICAgcGF5bG9hZDogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5Vbmtub3duKSxcbiAgfSkuY2hlY2soXG4gICAgU2NoZW1hLm1ha2VGaWx0ZXIoXG4gICAgICAoZXZlbnQpID0+XG4gICAgICAgICFrbm93bkRvbWFpbkV2ZW50VHlwZXMuaGFzKGV2ZW50LnR5cGUpIHx8XG4gICAgICAgIChldmVudC50eXBlID09PSBcInR1cm4taXRlbS51cGRhdGVkXCIgJiYgaXNVbmtub3duVHVybkl0ZW0oZXZlbnQucGF5bG9hZCkpIHx8XG4gICAgICAgIFwiQSBrbm93biBldmVudCB0eXBlIG11c3QgZGVjb2RlIGluIGZ1bGwuXCIsXG4gICAgKSxcbiAgKSxcbn0pLnBpcGUoXG4gIFNjaGVtYS5kZWNvZGVUbyhcbiAgICBTY2hlbWEuU3RydWN0KHtcbiAgICAgIGtpbmQ6IFNjaGVtYS5MaXRlcmFsKFwidW5rbm93bi1ldmVudFwiKSxcbiAgICAgIHNlcXVlbmNlOiBOb25OZWdhdGl2ZUludCxcbiAgICAgIGV2ZW50VHlwZTogU2NoZW1hLlN0cmluZyxcbiAgICB9KSxcbiAgICB7XG4gICAgICBkZWNvZGU6IFNjaGVtYUdldHRlci50cmFuc2Zvcm0oKGl0ZW0pID0+ICh7XG4gICAgICAgIGtpbmQ6IFwidW5rbm93bi1ldmVudFwiIGFzIGNvbnN0LFxuICAgICAgICBzZXF1ZW5jZTogaXRlbS5zZXF1ZW5jZSxcbiAgICAgICAgZXZlbnRUeXBlOiBpdGVtLmV2ZW50LnR5cGUsXG4gICAgICB9KSksXG4gICAgICBlbmNvZGU6IFNjaGVtYUdldHRlci5mb3JiaWRkZW4oKCkgPT4gXCJTZXJ2ZXJzIG5ldmVyIHNlbmQgdW5rbm93biB0aHJlYWQgZXZlbnRzLlwiKSxcbiAgICB9LFxuICApLFxuKTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlRocmVhZFN0cmVhbUl0ZW0gPSBTY2hlbWEuVW5pb24oW1xuICBTY2hlbWEuU3RydWN0KHtcbiAgICBraW5kOiBTY2hlbWEuTGl0ZXJhbChcInN5bmNocm9uaXplZFwiKSxcbiAgfSksXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIGtpbmQ6IFNjaGVtYS5MaXRlcmFsKFwic25hcHNob3RcIiksXG4gICAgc25hcHNob3RTZXF1ZW5jZTogTm9uTmVnYXRpdmVJbnQsXG4gICAgcHJvamVjdGlvbjogT3JjaGVzdHJhdGlvblYyVGhyZWFkUHJvamVjdGlvbixcbiAgICBoaXN0b3J5Q3Vyc29yOiBTY2hlbWEub3B0aW9uYWxLZXkoU2NoZW1hLk51bGxPcihUcmltbWVkTm9uRW1wdHlTdHJpbmcpKSxcbiAgICBoYXNNb3JlSGlzdG9yeTogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5Cb29sZWFuKSxcbiAgICBsYXRlc3RMb2NhbFR1cm5PcmRpbmFsOiBTY2hlbWEub3B0aW9uYWxLZXkoU2NoZW1hLk51bGxPcihOb25OZWdhdGl2ZUludCkpLFxuICAgIHR1cm5JdGVtc09taXRMb2NhbFZpc2libGU6IFNjaGVtYS5vcHRpb25hbEtleShTY2hlbWEuTGl0ZXJhbCh0cnVlKSksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICBraW5kOiBTY2hlbWEuTGl0ZXJhbChcImV2ZW50XCIpLFxuICAgIHNlcXVlbmNlOiBOb25OZWdhdGl2ZUludCxcbiAgICBldmVudDogT3JjaGVzdHJhdGlvblYyRG9tYWluRXZlbnQsXG4gIH0pLFxuICBPcmNoZXN0cmF0aW9uVjJVbmtub3duVGhyZWFkU3RyZWFtRXZlbnQsXG5dKTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlRocmVhZFN0cmVhbUl0ZW0gPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyVGhyZWFkU3RyZWFtSXRlbS5UeXBlO1xuXG5leHBvcnQgY2xhc3MgT3JjaGVzdHJhdGlvblYyRGlzcGF0Y2hDb21tYW5kRXJyb3IgZXh0ZW5kcyBTY2hlbWEuVGFnZ2VkRXJyb3I8T3JjaGVzdHJhdGlvblYyRGlzcGF0Y2hDb21tYW5kRXJyb3I+KCkoXG4gIFwiT3JjaGVzdHJhdGlvblYyRGlzcGF0Y2hDb21tYW5kRXJyb3JcIixcbiAge1xuICAgIGNvbW1hbmRJZDogQ29tbWFuZElkLFxuICAgIGNvbW1hbmRUeXBlOiBTY2hlbWEuU3RyaW5nLFxuICAgIG1lc3NhZ2U6IFNjaGVtYS5TdHJpbmcsXG4gICAgZGV0YWlsOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG4gICAgY2F1c2U6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuRGVmZWN0KCkpLFxuICB9LFxuKSB7fVxuXG5leHBvcnQgY2xhc3MgT3JjaGVzdHJhdGlvblYyR2V0VGhyZWFkUHJvamVjdGlvbkVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPE9yY2hlc3RyYXRpb25WMkdldFRocmVhZFByb2plY3Rpb25FcnJvcj4oKShcbiAgXCJPcmNoZXN0cmF0aW9uVjJHZXRUaHJlYWRQcm9qZWN0aW9uRXJyb3JcIixcbiAge1xuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBtZXNzYWdlOiBTY2hlbWEuU3RyaW5nLFxuICAgIGNhdXNlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkRlZmVjdCgpKSxcbiAgfSxcbikge31cblxuZXhwb3J0IGNsYXNzIE9yY2hlc3RyYXRpb25WMkdldFNoZWxsU25hcHNob3RFcnJvciBleHRlbmRzIFNjaGVtYS5UYWdnZWRFcnJvcjxPcmNoZXN0cmF0aW9uVjJHZXRTaGVsbFNuYXBzaG90RXJyb3I+KCkoXG4gIFwiT3JjaGVzdHJhdGlvblYyR2V0U2hlbGxTbmFwc2hvdEVycm9yXCIsXG4gIHtcbiAgICBtZXNzYWdlOiBTY2hlbWEuU3RyaW5nLFxuICAgIGNhdXNlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkRlZmVjdCgpKSxcbiAgfSxcbikge31cblxuZXhwb3J0IGNsYXNzIE9yY2hlc3RyYXRpb25WMlRocmVhZExhdW5jaEVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPE9yY2hlc3RyYXRpb25WMlRocmVhZExhdW5jaEVycm9yPigpKFxuICBcIk9yY2hlc3RyYXRpb25WMlRocmVhZExhdW5jaEVycm9yXCIsXG4gIHtcbiAgICBjb21tYW5kSWQ6IENvbW1hbmRJZCxcbiAgICBwcm9qZWN0SWQ6IFByb2plY3RJZCxcbiAgICBtZXNzYWdlOiBTY2hlbWEuU3RyaW5nLFxuICAgIGNhdXNlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkRlZmVjdCgpKSxcbiAgfSxcbikge31cblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlN0b3BXb3JrZmxvd0lucHV0ID0gU2NoZW1hLlN0cnVjdCh7XG4gIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgc3ViYWdlbnRJZDogTm9kZUlkLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJTdG9wV29ya2Zsb3dJbnB1dCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJTdG9wV29ya2Zsb3dJbnB1dC5UeXBlO1xuXG5leHBvcnQgY2xhc3MgT3JjaGVzdHJhdGlvblYyU3RvcFdvcmtmbG93RXJyb3IgZXh0ZW5kcyBTY2hlbWEuVGFnZ2VkRXJyb3I8T3JjaGVzdHJhdGlvblYyU3RvcFdvcmtmbG93RXJyb3I+KCkoXG4gIFwiT3JjaGVzdHJhdGlvblYyU3RvcFdvcmtmbG93RXJyb3JcIixcbiAge1xuICAgIHRocmVhZElkOiBUaHJlYWRJZCxcbiAgICBzdWJhZ2VudElkOiBOb2RlSWQsXG4gICAgcmVhc29uOiBTY2hlbWEuTGl0ZXJhbHMoW1wibm90LXJ1bm5pbmdcIiwgXCJ1bnN1cHBvcnRlZFwiLCBcInVuYXZhaWxhYmxlXCIsIFwic3RvcC1mYWlsZWRcIl0pLFxuICAgIGNhdXNlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkRlZmVjdCgpKSxcbiAgfSxcbikge1xuICBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5yZWFzb24pIHtcbiAgICAgIGNhc2UgXCJub3QtcnVubmluZ1wiOlxuICAgICAgICByZXR1cm4gXCJUaGlzIHdvcmtmbG93IGlzIG5vIGxvbmdlciBydW5uaW5nLlwiO1xuICAgICAgY2FzZSBcInVuc3VwcG9ydGVkXCI6XG4gICAgICAgIHJldHVybiBcIlRoaXMgcHJvdmlkZXIgY2Fubm90IHN0b3AgYSB3b3JrZmxvdy5cIjtcbiAgICAgIGNhc2UgXCJ1bmF2YWlsYWJsZVwiOlxuICAgICAgICByZXR1cm4gXCJUaGlzIHdvcmtmbG93IGhhcyBubyBsaXZlIHByb3ZpZGVyIHRhc2suXCI7XG4gICAgICBjYXNlIFwic3RvcC1mYWlsZWRcIjpcbiAgICAgICAgcmV0dXJuIFwiRmFpbGVkIHRvIHN0b3AgdGhlIHdvcmtmbG93LlwiO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyUnBjRXJyb3IgPSBTY2hlbWEuVW5pb24oW1xuICBPcmNoZXN0cmF0aW9uVjJEaXNwYXRjaENvbW1hbmRFcnJvcixcbiAgT3JjaGVzdHJhdGlvblYyR2V0VGhyZWFkUHJvamVjdGlvbkVycm9yLFxuICBPcmNoZXN0cmF0aW9uVjJHZXRTaGVsbFNuYXBzaG90RXJyb3IsXG4gIE9yY2hlc3RyYXRpb25WMlRocmVhZExhdW5jaEVycm9yLFxuICBPcmNoZXN0cmF0aW9uVjJTdG9wV29ya2Zsb3dFcnJvcixcbl0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyUnBjRXJyb3IgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyUnBjRXJyb3IuVHlwZTtcblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkdldFdvcmtmbG93U2NyaXB0SW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICBzY3JpcHRQYXRoOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMkdldFdvcmtmbG93U2NyaXB0SW5wdXQgPVxuICB0eXBlb2YgT3JjaGVzdHJhdGlvblYyR2V0V29ya2Zsb3dTY3JpcHRJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyR2V0V29ya2Zsb3dTY3JpcHRSZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgc2NyaXB0UGF0aDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICBjb250ZW50czogU2NoZW1hLlN0cmluZyxcbiAgdHJ1bmNhdGVkOiBTY2hlbWEuQm9vbGVhbixcbn0pO1xuZXhwb3J0IHR5cGUgT3JjaGVzdHJhdGlvblYyR2V0V29ya2Zsb3dTY3JpcHRSZXN1bHQgPVxuICB0eXBlb2YgT3JjaGVzdHJhdGlvblYyR2V0V29ya2Zsb3dTY3JpcHRSZXN1bHQuVHlwZTtcblxuY29uc3QgV09SS0ZMT1dfRklMRV9FUlJPUl9NRVNTQUdFUyA9IHtcbiAgXCJpbnZhbGlkLXBhdGhcIjogXCJXb3JrZmxvdyBmaWxlcyBtdXN0IGJlIGFic29sdXRlIHBhdGhzIHdpdGggdGhlIGV4cGVjdGVkIGV4dGVuc2lvbi5cIixcbiAgXCJyb290LXVuYXZhaWxhYmxlXCI6IFwiV29ya2Zsb3cgZmlsZSByb290IHVuYXZhaWxhYmxlLlwiLFxuICBcIm5vdC1mb3VuZFwiOiBcIldvcmtmbG93IGZpbGUgbm90IGZvdW5kLlwiLFxuICBcIm91dHNpZGUtcm9vdFwiOiBcIlBhdGggaXMgb3V0c2lkZSB0aGUgd29ya2Zsb3cgZmlsZXMgcm9vdC5cIixcbiAgXCJ3cm9uZy1leHRlbnNpb25cIjogXCJSZXNvbHZlZCBmaWxlIGhhcyB0aGUgd3JvbmcgZXh0ZW5zaW9uLlwiLFxuICBcIm5vdC1yZWd1bGFyLWZpbGVcIjogXCJXb3JrZmxvdyBmaWxlIGlzIG5vdCBhIHJlZ3VsYXIgZmlsZS5cIixcbiAgXCJjaGFuZ2VkLWR1cmluZy1yZWFkXCI6IFwiV29ya2Zsb3cgZmlsZSBjaGFuZ2VkIGJldHdlZW4gcmVzb2x1dGlvbiBhbmQgb3Blbi5cIixcbiAgXCJyZWFkLWZhaWxlZFwiOiBcIldvcmtmbG93IGZpbGUgcmVhZCBmYWlsZWQuXCIsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY2xhc3MgT3JjaGVzdHJhdGlvbldvcmtmbG93RmlsZUVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPE9yY2hlc3RyYXRpb25Xb3JrZmxvd0ZpbGVFcnJvcj4oKShcbiAgXCJPcmNoZXN0cmF0aW9uV29ya2Zsb3dGaWxlRXJyb3JcIixcbiAge1xuICAgIHJlYXNvbjogU2NoZW1hLkxpdGVyYWxzKFtcbiAgICAgIFwiaW52YWxpZC1wYXRoXCIsXG4gICAgICBcInJvb3QtdW5hdmFpbGFibGVcIixcbiAgICAgIFwibm90LWZvdW5kXCIsXG4gICAgICBcIm91dHNpZGUtcm9vdFwiLFxuICAgICAgXCJ3cm9uZy1leHRlbnNpb25cIixcbiAgICAgIFwibm90LXJlZ3VsYXItZmlsZVwiLFxuICAgICAgXCJjaGFuZ2VkLWR1cmluZy1yZWFkXCIsXG4gICAgICBcInJlYWQtZmFpbGVkXCIsXG4gICAgXSksXG4gICAgcGF0aDogU2NoZW1hLlN0cmluZyxcbiAgICBjYXVzZTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5EZWZlY3QoKSksXG4gIH0sXG4pIHtcbiAgb3ZlcnJpZGUgZ2V0IG1lc3NhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gV09SS0ZMT1dfRklMRV9FUlJPUl9NRVNTQUdFU1t0aGlzLnJlYXNvbl07XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMkdldFR1cm5JdGVtSW5wdXQgPSBTY2hlbWEuU3RydWN0KHtcbiAgdGhyZWFkSWQ6IFRocmVhZElkLFxuICBpdGVtSWQ6IFR1cm5JdGVtSWQsXG4gIHJldmlzaW9uOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlN0cmluZyksXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMkdldFR1cm5JdGVtSW5wdXQgPSB0eXBlb2YgT3JjaGVzdHJhdGlvblYyR2V0VHVybkl0ZW1JbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyR2V0VHVybkl0ZW1SZXN1bHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgaXRlbTogU2NoZW1hLk51bGxPcihPcmNoZXN0cmF0aW9uVjJUdXJuSXRlbSksXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMkdldFR1cm5JdGVtUmVzdWx0ID0gdHlwZW9mIE9yY2hlc3RyYXRpb25WMkdldFR1cm5JdGVtUmVzdWx0LlR5cGU7XG5cbmNvbnN0IFdPUktGTE9XX1NDUklQVF9FUlJPUl9NRVNTQUdFUyA9IHtcbiAgXCJpbnZhbGlkLXBhdGhcIjogXCJXb3JrZmxvdyBzY3JpcHRzIG11c3QgYmUgYWJzb2x1dGUgLmpzIHBhdGhzLlwiLFxuICBcInJvb3QtdW5hdmFpbGFibGVcIjogXCJTY3JpcHQgcm9vdCB1bmF2YWlsYWJsZS5cIixcbiAgXCJub3QtZm91bmRcIjogXCJTY3JpcHQgbm90IGZvdW5kLlwiLFxuICBcIm91dHNpZGUtcm9vdFwiOiBcIlNjcmlwdCBwYXRoIGlzIG91dHNpZGUgdGhlIHdvcmtmbG93IHNjcmlwdHMgcm9vdC5cIixcbiAgXCJub3QtanNcIjogXCJSZXNvbHZlZCBzY3JpcHQgaXMgbm90IGEgLmpzIGZpbGUuXCIsXG4gIFwibm90LXJlZ3VsYXItZmlsZVwiOiBcIlNjcmlwdCBpcyBub3QgYSByZWd1bGFyIGZpbGUuXCIsXG4gIFwiY2hhbmdlZC1kdXJpbmctcmVhZFwiOiBcIlNjcmlwdCBjaGFuZ2VkIGJldHdlZW4gcmVzb2x1dGlvbiBhbmQgb3Blbi5cIixcbiAgXCJyZWFkLWZhaWxlZFwiOiBcIlNjcmlwdCByZWFkIGZhaWxlZC5cIixcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjbGFzcyBPcmNoZXN0cmF0aW9uR2V0V29ya2Zsb3dTY3JpcHRFcnJvciBleHRlbmRzIFNjaGVtYS5UYWdnZWRFcnJvcjxPcmNoZXN0cmF0aW9uR2V0V29ya2Zsb3dTY3JpcHRFcnJvcj4oKShcbiAgXCJPcmNoZXN0cmF0aW9uR2V0V29ya2Zsb3dTY3JpcHRFcnJvclwiLFxuICB7XG4gICAgcmVhc29uOiBTY2hlbWEuTGl0ZXJhbHMoW1xuICAgICAgXCJpbnZhbGlkLXBhdGhcIixcbiAgICAgIFwicm9vdC11bmF2YWlsYWJsZVwiLFxuICAgICAgXCJub3QtZm91bmRcIixcbiAgICAgIFwib3V0c2lkZS1yb290XCIsXG4gICAgICBcIm5vdC1qc1wiLFxuICAgICAgXCJub3QtcmVndWxhci1maWxlXCIsXG4gICAgICBcImNoYW5nZWQtZHVyaW5nLXJlYWRcIixcbiAgICAgIFwicmVhZC1mYWlsZWRcIixcbiAgICBdKSxcbiAgICBzY3JpcHRQYXRoOiBTY2hlbWEuU3RyaW5nLFxuICAgIGNhdXNlOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLkRlZmVjdCgpKSxcbiAgfSxcbikge1xuICBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBXT1JLRkxPV19TQ1JJUFRfRVJST1JfTUVTU0FHRVNbdGhpcy5yZWFzb25dO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJTZWFyY2hUaHJlYWRJbnB1dCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICB0aHJlYWRJZDogVGhyZWFkSWQsXG4gIHNraWxsczogU2NoZW1hLm9wdGlvbmFsS2V5KFxuICAgIFNjaGVtYS5BcnJheShcbiAgICAgIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgICAgICBuYW1lOiBTY2hlbWEuU3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgyMDApKSxcbiAgICAgICAgZGlzcGxheU5hbWU6IFNjaGVtYS5vcHRpb25hbChTY2hlbWEuU3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgyMDApKSksXG4gICAgICB9KSxcbiAgICApLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgxXzAwMCkpLFxuICApLFxuICBxdWVyeTogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLmNoZWNrKFNjaGVtYS5pc01heExlbmd0aCgyMDApKSxcbiAgaW5kZXg6IFNjaGVtYS5vcHRpb25hbEtleShOb25OZWdhdGl2ZUludCksXG4gIG9mZnNldDogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5JbnQpLFxuICBzdGFydDogU2NoZW1hLm9wdGlvbmFsS2V5KFxuICAgIFNjaGVtYS5TdHJ1Y3QoeyBlbnRyeUlkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsIG9jY3VycmVuY2U6IE5vbk5lZ2F0aXZlSW50IH0pLFxuICApLFxufSk7XG5leHBvcnQgdHlwZSBPcmNoZXN0cmF0aW9uVjJTZWFyY2hUaHJlYWRJbnB1dCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJTZWFyY2hUaHJlYWRJbnB1dC5UeXBlO1xuXG5leHBvcnQgY29uc3QgT3JjaGVzdHJhdGlvblYyVGhyZWFkRmluZE1hdGNoID0gU2NoZW1hLlN0cnVjdCh7XG4gIGVudHJ5SWQ6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgcnVuSWQ6IFNjaGVtYS5OdWxsT3IoUnVuSWQpLFxuICBvY2N1cnJlbmNlOiBOb25OZWdhdGl2ZUludCxcbn0pO1xuZXhwb3J0IGNvbnN0IE9yY2hlc3RyYXRpb25WMlNlYXJjaFRocmVhZFJlc3VsdCA9IFNjaGVtYS5TdHJ1Y3Qoe1xuICBjb21wbGV0ZTogU2NoZW1hLm9wdGlvbmFsS2V5KFNjaGVtYS5Cb29sZWFuKSxcbiAgc25hcHNob3RTZXF1ZW5jZTogTm9uTmVnYXRpdmVJbnQsXG4gIHRvdGFsTWF0Y2hlczogTm9uTmVnYXRpdmVJbnQsXG4gIGFjdGl2ZUluZGV4OiBOb25OZWdhdGl2ZUludCxcbiAgbWF0Y2g6IFNjaGVtYS5OdWxsT3IoT3JjaGVzdHJhdGlvblYyVGhyZWFkRmluZE1hdGNoKSxcbiAgbmF2aWdhdGlvbjogU2NoZW1hLm9wdGlvbmFsS2V5KFxuICAgIFNjaGVtYS5BcnJheShcbiAgICAgIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgICAgICBlbnRyeUlkOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gICAgICAgIHJ1bklkOiBTY2hlbWEuTnVsbE9yKFJ1bklkKSxcbiAgICAgICAgc3RhcnRJbmRleDogTm9uTmVnYXRpdmVJbnQsXG4gICAgICAgIGNvdW50OiBOb25OZWdhdGl2ZUludCxcbiAgICAgIH0pLFxuICAgICkuY2hlY2soU2NoZW1hLmlzTWF4TGVuZ3RoKDE3KSksXG4gICksXG59KTtcbmV4cG9ydCB0eXBlIE9yY2hlc3RyYXRpb25WMlNlYXJjaFRocmVhZFJlc3VsdCA9IHR5cGVvZiBPcmNoZXN0cmF0aW9uVjJTZWFyY2hUaHJlYWRSZXN1bHQuVHlwZTtcblxuZXhwb3J0IGNsYXNzIE9yY2hlc3RyYXRpb25WMlNlYXJjaFRocmVhZEVycm9yIGV4dGVuZHMgU2NoZW1hLlRhZ2dlZEVycm9yPE9yY2hlc3RyYXRpb25WMlNlYXJjaFRocmVhZEVycm9yPigpKFxuICBcIk9yY2hlc3RyYXRpb25WMlNlYXJjaFRocmVhZEVycm9yXCIsXG4gIHsgY2F1c2U6IFNjaGVtYS5EZWZlY3QoKSB9LFxuKSB7XG4gIG92ZXJyaWRlIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiQ291bGQgbm90IHNlYXJjaCB0aGlzIHRocmVhZC4gUGxlYXNlIHJldHJ5LlwiO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBPcmNoZXN0cmF0aW9uVjJScGNTY2hlbWFzID0ge1xuICBzZWFyY2hUaHJlYWQ6IHtcbiAgICBpbnB1dDogT3JjaGVzdHJhdGlvblYyU2VhcmNoVGhyZWFkSW5wdXQsXG4gICAgb3V0cHV0OiBPcmNoZXN0cmF0aW9uVjJTZWFyY2hUaHJlYWRSZXN1bHQsXG4gIH0sXG4gIGRpc3BhdGNoQ29tbWFuZDoge1xuICAgIGlucHV0OiBPcmNoZXN0cmF0aW9uVjJDb21tYW5kLFxuICAgIG91dHB1dDogT3JjaGVzdHJhdGlvblYyRGlzcGF0Y2hDb21tYW5kUmVzdWx0LFxuICB9LFxuICBnZXRUdXJuRGlmZjoge1xuICAgIGlucHV0OiBPcmNoZXN0cmF0aW9uR2V0VHVybkRpZmZJbnB1dCxcbiAgICBvdXRwdXQ6IE9yY2hlc3RyYXRpb25HZXRUdXJuRGlmZlJlc3VsdCxcbiAgfSxcbiAgZ2V0RnVsbFRocmVhZERpZmY6IHtcbiAgICBpbnB1dDogT3JjaGVzdHJhdGlvbkdldEZ1bGxUaHJlYWREaWZmSW5wdXQsXG4gICAgb3V0cHV0OiBPcmNoZXN0cmF0aW9uR2V0RnVsbFRocmVhZERpZmZSZXN1bHQsXG4gIH0sXG4gIGdldEFyY2hpdmVkU2hlbGxTbmFwc2hvdDoge1xuICAgIGlucHV0OiBTY2hlbWEuU3RydWN0KHt9KSxcbiAgICBvdXRwdXQ6IE9yY2hlc3RyYXRpb25WMkFyY2hpdmVkU2hlbGxTbmFwc2hvdCxcbiAgfSxcbiAgZ2V0VGhyZWFkRmFtaWx5OiB7XG4gICAgaW5wdXQ6IE9yY2hlc3RyYXRpb25WMkdldFRocmVhZEZhbWlseUlucHV0LFxuICAgIG91dHB1dDogT3JjaGVzdHJhdGlvblYyVGhyZWFkRmFtaWx5LFxuICB9LFxuICBnZXRXb3JrdHJlZVRocmVhZElkczoge1xuICAgIGlucHV0OiBPcmNoZXN0cmF0aW9uVjJHZXRXb3JrdHJlZVRocmVhZElkc0lucHV0LFxuICAgIG91dHB1dDogT3JjaGVzdHJhdGlvblYyV29ya3RyZWVUaHJlYWRJZHMsXG4gIH0sXG4gIGdldFRocmVhZFByb2plY3Rpb246IHtcbiAgICBpbnB1dDogT3JjaGVzdHJhdGlvblYyR2V0VGhyZWFkUHJvamVjdGlvbklucHV0LFxuICAgIG91dHB1dDogT3JjaGVzdHJhdGlvblYyVGhyZWFkUHJvamVjdGlvbixcbiAgfSxcbiAgc3RvcFdvcmtmbG93OiB7XG4gICAgaW5wdXQ6IE9yY2hlc3RyYXRpb25WMlN0b3BXb3JrZmxvd0lucHV0LFxuICAgIG91dHB1dDogU2NoZW1hLlZvaWQsXG4gIH0sXG4gIGdldFdvcmtmbG93U2NyaXB0OiB7XG4gICAgaW5wdXQ6IE9yY2hlc3RyYXRpb25WMkdldFdvcmtmbG93U2NyaXB0SW5wdXQsXG4gICAgb3V0cHV0OiBPcmNoZXN0cmF0aW9uVjJHZXRXb3JrZmxvd1NjcmlwdFJlc3VsdCxcbiAgfSxcbiAgZ2V0VHVybkl0ZW06IHtcbiAgICBpbnB1dDogT3JjaGVzdHJhdGlvblYyR2V0VHVybkl0ZW1JbnB1dCxcbiAgICBvdXRwdXQ6IE9yY2hlc3RyYXRpb25WMkdldFR1cm5JdGVtUmVzdWx0LFxuICB9LFxuICBsYXVuY2hUaHJlYWQ6IHtcbiAgICBpbnB1dDogT3JjaGVzdHJhdGlvblYyVGhyZWFkTGF1bmNoSW5wdXQsXG4gICAgb3V0cHV0OiBPcmNoZXN0cmF0aW9uVjJUaHJlYWRMYXVuY2hSZXN1bHQsXG4gIH0sXG4gIHN1YnNjcmliZUFyY2hpdmVkU2hlbGw6IHtcbiAgICBpbnB1dDogU2NoZW1hLlN0cnVjdCh7fSksXG4gICAgb3V0cHV0OiBPcmNoZXN0cmF0aW9uVjJBcmNoaXZlZFNoZWxsU3RyZWFtSXRlbSxcbiAgfSxcbiAgc3Vic2NyaWJlU2hlbGw6IHtcbiAgICBpbnB1dDogT3JjaGVzdHJhdGlvblYyU3Vic2NyaWJlU2hlbGxJbnB1dCxcbiAgICBvdXRwdXQ6IE9yY2hlc3RyYXRpb25WMlNoZWxsU3RyZWFtSXRlbSxcbiAgfSxcbiAgc3Vic2NyaWJlVGhyZWFkOiB7XG4gICAgaW5wdXQ6IE9yY2hlc3RyYXRpb25WMlN1YnNjcmliZVRocmVhZElucHV0LFxuICAgIG91dHB1dDogT3JjaGVzdHJhdGlvblYyVGhyZWFkU3RyZWFtSXRlbSxcbiAgfSxcbiAgc3Vic2NyaWJlQ29tbWFuZE91dHB1dDoge1xuICAgIGlucHV0OiBPcmNoZXN0cmF0aW9uVjJTdWJzY3JpYmVDb21tYW5kT3V0cHV0SW5wdXQsXG4gICAgb3V0cHV0OiBPcmNoZXN0cmF0aW9uVjJDb21tYW5kT3V0cHV0RnJhbWUsXG4gIH0sXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgUHJvdmlkZXJSZXBsYXlFbnRyeSA9IFNjaGVtYS5VbmlvbihbXG4gIFNjaGVtYS5TdHJ1Y3Qoe1xuICAgIHR5cGU6IFNjaGVtYS5MaXRlcmFsKFwiZXhwZWN0X291dGJvdW5kXCIpLFxuICAgIGxhYmVsOiBTY2hlbWEub3B0aW9uYWwoVHJpbW1lZE5vbkVtcHR5U3RyaW5nKSxcbiAgICBmcmFtZTogU2NoZW1hLlVua25vd24sXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcImVtaXRfaW5ib3VuZFwiKSxcbiAgICBsYWJlbDogU2NoZW1hLm9wdGlvbmFsKFRyaW1tZWROb25FbXB0eVN0cmluZyksXG4gICAgZnJhbWU6IFNjaGVtYS5Vbmtub3duLFxuICAgIGFmdGVyTXM6IFNjaGVtYS5vcHRpb25hbChOb25OZWdhdGl2ZUludCksXG4gIH0pLFxuICBTY2hlbWEuU3RydWN0KHtcbiAgICB0eXBlOiBTY2hlbWEuTGl0ZXJhbChcInJ1bnRpbWVfZXhpdFwiKSxcbiAgICBzdGF0dXM6IFNjaGVtYS5MaXRlcmFscyhbXCJzdWNjZXNzXCIsIFwiZXJyb3JcIiwgXCJjYW5jZWxsZWRcIl0pLFxuICAgIGVycm9yOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlVua25vd24pLFxuICB9KSxcbl0pO1xuZXhwb3J0IHR5cGUgUHJvdmlkZXJSZXBsYXlFbnRyeSA9IHR5cGVvZiBQcm92aWRlclJlcGxheUVudHJ5LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcm92aWRlclJlcGxheVRyYW5zY3JpcHQgPSBTY2hlbWEuU3RydWN0KHtcbiAgcHJvdmlkZXI6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgcHJvdG9jb2w6IFRyaW1tZWROb25FbXB0eVN0cmluZyxcbiAgdmVyc2lvbjogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICBzY2VuYXJpbzogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICBtZXRhZGF0YTogU2NoZW1hLm9wdGlvbmFsKFNjaGVtYS5SZWNvcmQoU2NoZW1hLlN0cmluZywgU2NoZW1hLlVua25vd24pKSxcbiAgZW50cmllczogU2NoZW1hLkFycmF5KFByb3ZpZGVyUmVwbGF5RW50cnkpLFxufSk7XG5leHBvcnQgdHlwZSBQcm92aWRlclJlcGxheVRyYW5zY3JpcHQgPSB0eXBlb2YgUHJvdmlkZXJSZXBsYXlUcmFuc2NyaXB0LlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcm92aWRlclJlcGxheVRyYW5zY3JpcHRIZWFkZXIgPSBTY2hlbWEuU3RydWN0KHtcbiAgdHlwZTogU2NoZW1hLkxpdGVyYWwoXCJ0cmFuc2NyaXB0X3N0YXJ0XCIpLFxuICBwcm92aWRlcjogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICBwcm90b2NvbDogVHJpbW1lZE5vbkVtcHR5U3RyaW5nLFxuICB2ZXJzaW9uOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIHNjZW5hcmlvOiBUcmltbWVkTm9uRW1wdHlTdHJpbmcsXG4gIG1ldGFkYXRhOiBTY2hlbWEub3B0aW9uYWwoU2NoZW1hLlJlY29yZChTY2hlbWEuU3RyaW5nLCBTY2hlbWEuVW5rbm93bikpLFxufSk7XG5leHBvcnQgdHlwZSBQcm92aWRlclJlcGxheVRyYW5zY3JpcHRIZWFkZXIgPSB0eXBlb2YgUHJvdmlkZXJSZXBsYXlUcmFuc2NyaXB0SGVhZGVyLlR5cGU7XG5cbmV4cG9ydCBjb25zdCBQcm92aWRlclJlcGxheU5kanNvblJlY29yZCA9IFNjaGVtYS5VbmlvbihbXG4gIFByb3ZpZGVyUmVwbGF5VHJhbnNjcmlwdEhlYWRlcixcbiAgUHJvdmlkZXJSZXBsYXlFbnRyeSxcbl0pO1xuZXhwb3J0IHR5cGUgUHJvdmlkZXJSZXBsYXlOZGpzb25SZWNvcmQgPSB0eXBlb2YgUHJvdmlkZXJSZXBsYXlOZGpzb25SZWNvcmQuVHlwZTtcbiJdLCJmaWxlIjoiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL29yY2hlc3RyYXRpb25WMi50cyJ9

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvY29udHJhY3RzL3NyYy9vcmNoZXN0cmF0aW9uVjIudHMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvb3JjaGVzdHJhdGlvblYyLnRzIix7InVybHMiOiI2IiwiaWRzIjoiNyJ9LFsiOCIsIjkiLCIxMCIsIjExIiwiMTIiLCIxMyIsIjE0IiwiMTUiLCIxNiIsIjE3IiwiMTgiLCIxOSIsIjIwIiwiMjEiLCIyMiIsIjIzIl0sW10sWyI4IiwiOSIsIjEwIiwiMTEiLCIxMiIsIjEzIiwiMTQiLCIxNSIsIjE2IiwiMTciLCIxOCIsIjE5IiwiMjAiLCIyMSIsIjIyIiwiMjMiXSx7fSwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2NvbXBvc2VyQ29udGV4dC50cyIsIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvbm9kZV9tb2R1bGVzLy5wbnBtL2VmZmVjdEA0LjAuNS9ub2RlX21vZHVsZXMvZWZmZWN0L2Rpc3QvRWZmZWN0LmpzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9ub2RlX21vZHVsZXMvLnBucG0vZWZmZWN0QDQuMC41L25vZGVfbW9kdWxlcy9lZmZlY3QvZGlzdC9TY2hlbWEuanMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL25vZGVfbW9kdWxlcy8ucG5wbS9lZmZlY3RANC4wLjUvbm9kZV9tb2R1bGVzL2VmZmVjdC9kaXN0L1NjaGVtYUFTVC5qcyIsIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvbm9kZV9tb2R1bGVzLy5wbnBtL2VmZmVjdEA0LjAuNS9ub2RlX21vZHVsZXMvZWZmZWN0L2Rpc3QvU2NoZW1hR2V0dGVyLmpzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9ub2RlX21vZHVsZXMvLnBucG0vZWZmZWN0QDQuMC41L25vZGVfbW9kdWxlcy9lZmZlY3QvZGlzdC9TY2hlbWFUcmFuc2Zvcm1hdGlvbi5qcyIsIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvY29udHJhY3RzL3NyYy9iYXNlU2NoZW1hcy50cyIsIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvY29udHJhY3RzL3NyYy9jaGF0QXR0YWNobWVudC50cyIsIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvY29udHJhY3RzL3NyYy9ndWVzdFNoYXJlLnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL2NoZWNrcG9pbnREaWZmLnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL21vZGVsU2VsZWN0aW9uLnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL3RocmVhZFB1bGxSZXF1ZXN0LnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL3Byb3ZpZGVyUG9saWN5LnRzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jb250cmFjdHMvc3JjL3Byb3ZpZGVySW5zdGFuY2UudHMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvb3JjaGVzdHJhdGlvblByb2plY3QudHMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvcHJvdmlkZXJSdW50aW1lLnRzIl0=